In my previous article How to Create a Pharo Smalltalk Plugin, I outlined how to create a Pharo Smalltalk plugin. However, since then, I've discovered a more convenient way to produce these plugins using the PharoPluginBuilder and StarterPlugin. In this post, wanted to inform and describe the idea of this simplified process of creating a Pharo Smalltalk plugin.

I've ran it several times in macOS and these steps work fine. I'll appreciate feedback on how it goes for other platforms which should work but I didn't find the time to try.

Using the new simplified procedure of PharoPluginBuilder, includes:

  1. The clone of the PharoPluginBuilder repo.
  2. Having an ide/ dir where you have a Pharo image meant for being the IDE to develop your plugin.
  3. Having a dependencies/ dir where this setup will sit A) a pharo-vm project clone that is required and B) any third party library that you would use.
  4. The dist/build directory where you will the binary built artifact of your plugin.

Follow that README.md and get your own:

Further simplification

Guillermo Polito has been experimenting with further simplifications and build conveniences in this branch https://github.com/guillep/pharo-vm/tree/feat/pluginbuilder which would allow to use it like this:

# Configure cmake
cmake -B build -S repo/path

# Generate the vmmaker image with the plugin code
cmake --build build --target StarterPlugin_IMAGE

# Generate only the sources
cmake --build build --target StarterPlugin_generate_source

# Build the plugin
cmake --build buildv2 --target StarterPlugin

In conclusion, creating a Pharo Smalltalk plugin doesn't have to be a complex process. While there is space for improving this further, by using the PharoPluginBuilder and StarterPlugin, you can quickly and easily create a plugin that extends the functionality of the Smalltalk language. Follow the steps outlined in this post, and you'll be on your way to creating your own custom plugin in no time.