A few days ago I promised to write down some of our thoughts about the open sourcing of BlueJ and Greenfoot.
In the past, we had consciously decided to keep the source closed. Now we decided differently. So that brought about the change?
In our team, we have discussed the question of whether BlueJ should be open source quite regularly from the very beginning. BlueJ was first published in 1999, and we had this discussion probably about once every year since.
There have always been arguments both ways. The arguments on the plus side are reasonable well known or obvious. But there have always been some arguments against it as well.
Most importantly, we were worried about not being able to keep an easy, simple, consistent experience for beginning students. This has to do with feature creep: We get many requests to add features to BlueJ, and we reject most of them. This is in order to keep the system simple and clean. Many of the proposals are reasonable suggestions taken on their own, but taken together, they would completely ruin the system. So we often refuse.
If BlueJ were open source, we decided, then there is a clear risk that those people who really want these features will fork off the source tree and bring out there own versions (similar to the Emacs/XEmacs split, or many others that happened in the past). We were worried that this would considerably muddy the waters. Students might not know which version to get. They might not understand the differences, download different versions, download versions with more functionality because they think more is better, and then use our material and ask us for support when things go bad.
We have always provided extensive technical and user support, but we are a very small team. We feared that the potential increase in confusion and need for support might be more than we can handle.
So we decided that we just cannot guarantee that the BlueJ ecosystem as a whole provides a single, simple, well designed user experience, and that this is more important.
So what has changed now?
We believe that BlueJ is now well enough established that the potential of confusion, while still existing, has become much smaller. The brand is known now, our group and web site are reasonably well known, and we believe that most people would now find our version when they search for BlueJ. (In the beginning, when we were small and unknown, this would not have been the case.)
What is more: We think that many of our users now agree with our design philosophy of keeping it simple, rather than insisting on extending functionality. We feel there is less of a danger that extended versions will tempt too many users away who we believe would be better served by simplicity.
Anyway, it’s all a guess at this stage. But, of course, once the cat is out of the bag, you can never stick it back in again. So we have, in the past, thought we should rather err on the safe side.
Now we think the scales have tipped, and we are prepared to just go ahead and see what happens. We hope that this opens up some new opportunities: Institutions adopting the systems can now have security that the system cannot just disappear; instructors might want to use the source as a basis for software engineering projects; Linux distributions can include the systems if they want to; and we can use some libraries more easily.
We sincerely hope that someone out there now goes and does something interesting with it!