Open source - my part in its success

When I started working at Brightbox, many many years ago, open source was part of the culture. In fact, free software was part of the culture. Many of the infrastructure tools and libraries we wrote were always designed, from the off, to be open sourced.

My favourite was always Bigwig - back then we were using RabbitMQ as a message queue, so we had a connection utility called Warren that was controlled by Bigwig. What I loved best were:

  • the code was so simple it was almost not there
  • the names of the various projects (we also had a graphing server called Steffi, for people from the 80s)
  • people we'd never even heard of were using it - and coming up to speak to me at conferences!

As you can tell from the dates on those repositories, Brightbox don't use RabbitMQ any more, but they do publish the vast majority of their work for anyone to use. I still use Rujitsu and Object-Factory regularly (although Object-Factory really does need a rewrite).

However, I do disapprove of the MIT Licence that is common amongst ruby programmers - it is far too permissive. I much prefer the LGPL Licence (despite the Free Software Foundation's reservations about it) because it makes it clear that "what's mine is mine and what's yours is yours".

With the MIT Licence, you can take my work and do what you want with it and if it makes you a billion dollars you are free to claim it was all your own work.

With the LGPL - you can do whatever you want with your stuff - I don't care about that. But if you use, or adapt, my stuff, then you have to grant everyone else the same rights that I have granted to you. So if you make a billion dollars off the back of my work, firstly, good luck to you, and secondly, you need to share the amendments you made (to my stuff) that helped you get there.

This is unlike the traditional GPL Licence, and its modern equivalent, the AGPL Licence, which say "this belongs to everybody and if you use it in any way then all the combined work has to be released to everybody under these same terms". It is, as Microsoft used to say, a viral licence. There's nothing particularly wrong with that, but, personally, I don't really care about your work. I only care about the changes you make to my work and the GPL doesn't draw that distinction.

Quick aside: why open source and free software?

Years ago, I was a Delphi programmer. Delphi was a thing of great beauty, providing an elegant way to rapidly build powerful desktop applications. It was built by Borland, who made their name with Turbo Pascal - an object-oriented variant of Pascal that was powerful, performant and easy to use.

Delphi was so good - and so much better than the other tools available for Windows desktop development - that there were rumours that Microsoft themselves used it internally. Then Microsoft hired Anders Hjeilsberg, who wrote much of the internal Delphi code and tasked him with building their Java competitor, .Net. .Net, and its primary language, C#, took the best of Java (the VM) and the best of Delphi (the language and standard library) - and in just a couple of years Borland were floundering and not long after they were gone.

With that one hire (and a lot of excellent development work and marketing by Microsoft), my five year investment in Delphi was gone.

They say that you should never depend on someone else's platform, so at that point, I decided I never would again. No matter what happens with Ruby or Ruby on Rails from now on, because it is open source, my investment in it is safe. I do not build on proprietary platforms, I build for the web (although sometimes I use adapters for those platforms), so again, my investment is safe.

Anyway, after I left Brightbox, I started doing freelance and contract work for small companies. The systems I built for them were proprietary and owned by my clients, so my open source contributions dried up.

But finally, after fifteen long years, I'm back.

As I mentioned the other week, I have rediscovered Markaby, a library for generating HTML in pure ruby. It was a project I loved when I first found it, but when Why the Lucky Stiff vanished, I assumed it had vanished too. Because of Camping (another Why project), I found Markaby again, which gave me great joy. But some of the code is a bit of a mess and, functionally, it had fallen behind modern web standards. It had no support for custom elements and it struggled with modern attributes (like data and aria).

So I forked the repository, got to work, and I'm pleased to say my Pull Request has been accepted. Now you can write Markaby that looks like this:

my_custom_element custom_attribute: "first_value" do 
  div slot: "header", data: { some_attribute: "second_value" } do 
    p "Chunky bacon" 

and it will output:

<my-custom-element custom-attribute="first_value"> 
  <div slot="header" data-some-attribute="second_value"> 
    <p>Chunky bacon</p> 

This is the first of many. I've got my eyes set on Opal Browser next.

Rahoul Baruah

Rahoul Baruah

Rubyist since 1.8.6. Freelancer since 2007, dedicated to building incredible, low-cost, bespoke software for tiny businesses. Also CTO at Collabor8Online.
Leeds, England