00:00:05.799
Hello! Hey, wake up, pay attention! Let's get this party started. Am I ready to go? Can I go? I'm timing, alright!
00:00:12.920
I'm going to give you very quick information. I made these slides just now, so I haven't thought this through. Essentially, I'm going to talk to you about what originally started as the BDSM project. It's now known as the SM framework, a subset of that project. The whole idea behind it is that servers should be submissive.
00:00:29.320
So, what is this SM framework? What does SM stand for? It’s an acronym that I couldn't figure out how to name properly: System Stack Scripting Management Framework – that pretty much sums it up.
00:00:44.239
What it is involves a core component that installs to /opt/SM if you install as root by default. It provides you with a command line interface and modules, which I will discuss in a few minutes. These modules have an API that can be leveraged, allowing you to write extensions.
00:01:04.680
So, what does the BDSM project or the SM framework do? The answer is: whatever you need it to do. The idea is that it's a framework enabling you to write system-level scripts, distribute them, share them, and perform all sorts of useful tasks.
00:01:28.479
What is an extension? Basically, it is a named directory that contains a bin directory for executable scripts. This means that it is actually language agnostic, but utilizing shell scripting has some significant advantages. You create a shell directory inside your extension, make a functions file there, and you can put shell scripting functions in it.
00:01:49.880
If you add executable shell scripts to your bin directory, these functions will automatically load along with them. So now, what we have is a core CLI, our extensions, and the modules mentioned earlier — the modules' API can be used by extensions.
00:02:01.600
There’s a lot to cover, but basically you have an includes file within the shell, allowing you to include the module APIs. Depending on the modules you include, you may also have additional directories for configuration templates and more. There's also a useful CLI mapping file that allows you to map command-line actions.
00:02:20.280
For example, I have a deploy extension I'm working on. You type 'SM deploy', and if there are executable files in the bin directory of that extension, it gets mapped to a shell function in the functions path or Runway file. If you're a diligent extension developer, you'll also keep them versioned, enabling easy installation with 'SM EXT install name URI'.
00:02:49.600
You provide a name, such as 'SM enginex', along with a valid URI or file system path. Additionally, you can create sets of extensions grouped together for related functionality. You can install them similarly.
00:03:20.720
What is the scope of this project? The scope encompasses your operating system, which has an underlying package manager that manages the OS efficiently. Then there’s your application stack defining the runnable application framework. You can use the SM framework to script that setup.
00:03:59.840
On top of all this, you can layer a content management system, like Chef, and above that, you might want to manage multiple servers. The overall aim of this scope is to offer a single system scripting stack management framework.
00:04:21.160
Again, this is the BDSM project's SM framework. I have a GitHub organization for it, github.com/smm. If you encounter any issues at work that block such sites, you can also visit SMdogrescue.com. If you have questions about this topic, feel free to ask me later.
00:04:27.199
Enjoy! You're weird!