Octoprint Plugin Development tutorials

Unbelievable as it may seem I have been unable to find any tutorials for the creation of new Octoprint plugins, ideally from beginner level (but with some general vb.net coding experience) to expert.
The developer community is fantastic and I have found help whenever I have looked for it so I'm sure there must be information available for plugin creation that I could use to get started. I occasionally have ideas about processes that can be applied to gcode and have even developed some in vb.net but things like that would be ideally suited as plugins.
Can anyone advise me about where I can find suitable tutorials, either youtube or text, that will get me on the right path to plugin creation.
Many thanks,
Al.

I'd start with the official Plugin Tutorial that can be found in the official docs.

Great, thanks. I've made the link a favourite :slight_smile:

The docs are definitely plenty enough to get you started down the deep path of plugin development. I too came from a classic vb programming background with zero knowledge of python programming and quickly (to @foosel's grimaces I'm sure) became the author with most plugins published in the repository.

The problem with developing a plugin in .NET would be the absence of the Core 2.0 .NET framework on Raspbian. I'm not sure how the plugin installation would behave if something like that were a dependency.

Actually, the problem with developing a plugin in .NET is that the plugin architecture isn't prepared for any kind of external bindings for alternative programming languages - you have to use Python because your plugin gets loaded into OctoPrint itself :wink:

  • Could you use Cython to compile some-Python + some-C code together somehow to make a plugin?
  • I suppose you could spawn/fork an executable from a Python wrapper.
  • You could run a separate service and use Python to talk to it (sockets/named pipes/REST).

I like the idea of doing C code and making it available to Python.

You could of course do all of that. But you can't write some piece of software in $randomProgrammingLanguage and expect it to run in OctoPrint at the very least with extensive Python based glue code in between.