BlueJ is a tool for teaching OO programming in Java that is very well regarded in the CS education community. Microsoft engineers who were familiar with the BlueJ "workbench" added a similar feature to Visual Studio, didn't give credit to the BlueJ inventors, and filed a patent application. Not the way to win the hearts and minds of the education community.

What is BlueJ?

BlueJ is a tool for teaching students about objects and classes. One of its key features is a "workbench" that contains icons denoting objects. New objects can be placed on the workbench by clicking on class icons. Methods are invoked by clicking on the icons.


Before I used BlueJ, my CS1 students kept asking "What is the difference between an object and a class?" Now they no longer ask--they know that classes are the factories for objects, and that objects execute methods. They know it not because I told them but because they experienced it. That makes a huge difference.

This functionality was first developed in BlueJ's predecessor Blue by Dr. Michael Kölling in his 1994 Ph.D. thesis and described in various published papers.

What did Microsoft Do?

In 2005, Microsoft added an "object test bench" to Visual Studio--see Microsoft's documentation or Dr. Kölling's analysis with side-by-side comparisons.


Microsoft then filed a patent on this feature.

There is a question whether people inside the Visual Studio development team were aware of BlueJ. I have met many Microsofties and Visual Studio users who seem to think that Microsoft is the only source of innovation in the universe—I once had a hard time convincing someone that refactoring in the IDE was not invented by Microsoft but was present in Eclipse years before Microsoft saw the light.

But the team that markets Visual Studio to educators is keenly aware of the competitive landscape. I had many conversations at the annual ACM CS education conference with Microsoft representatives about the various products, and they were well informed and certainly knew BlueJ. They are also relentless. I am a member of the College Board's development committee for the AP Computer Science exam, and not a year goes by without a request from Microsoft to the College Board to make the exam more Microsoft-friendly. (Visual Studio doesn't handle Java 5, which is currently used for the programming questions on the exam.)

Of course, Microsoft is a large company and the fact that one group knew about BlueJ doesn't necessarily mean that the company committed fraud by filing a patent without referencing it as prior art. But Microsoft is also a fabulously wealthy company, and it would have been an easy matter for them to do more research into prior art, had they chosen to pursue this with the same relentlessness as dogging the College Board.

What Now?

Now the cat is out of the bag. It's even on Slashdot, where it immediately degenerated into the usual rant on how the patent system sucks. I know it sucks, but to me, that's not the point.

My point is this. Dr. Kölling is very nervous that Microsoft might shut down BlueJ. Unlike Microsoft, he and his university are not fabulously wealthy, and even filing a simple objection with the patent office is a hardship. Microsoft wants to play nice in the educational community. Relentless but nice. To me, nice would mean that they apologize to Dr. Kölling, belatedly give public credit to him, and withdraw the patent application. I'll update this blog once they do that.