Thursday 27 March 2014

Developing externals for Omnis Studio

For the past few years I've been building externals for Omnis Classic and later Omnis Studio. Initially relatively small things but as time progressed I ended up having to build larger and more complex externals.

In the Omnis Classic days externals where relatively limited but the SDK that comes with Omnis Studio allows for a lot of functionality to be implemented as is proven by some of the commercially available externals such as Brainy Data's excellent oWrite.

Unfortunately the documentation often leaves much to be desired, the sample externals are over simplified and support steers clear from any issues involving external development.

Both at my previous employer and my current employer I've been blessed to have worked on some interesting, yet proprietary externals. That hasn't stopped me from doodling around in my spare time, one of the more notorious albeit long forgotten, more public externals I did in the classic days was one that allowed you to "skin" the Omnis interface much like the then popular WinAmp did.

I have for a long time been working, mostly in my spare time, on a framework for creating externals that takes care of a lot of the nitty gritty stuff that ends up in each and every external and just gets in the way of making the external do what you want it to do.  I've started again a few times and still haven't gotten it right but it is slowly coming of age.

I've since published the work that has been done so far on my GitHub page: https://github.com/BastiaanOlij

As I add things onto this project I'll try and keep up blogging about what I've been up to and what things where worth learning.

If you find use of the source code that has been made public, please be so kind as to credit the author (thats me). Other then that use it as you see fit, except for evil, I don't like evil.

On that note, I'd like to take the time to credit and thank the following people:
Kelly Burgess, for his excellent sessions at EurOmnis and his frequent emails with advise
Stefan Csomor, for always offering a helping hand and insight in the more lower level stuff
Michael Monschau, for showing us just how far you can take this
David McKeone, for also contributing to the public knowledge with his excellent GitHub page.