This week I have been at the Joint Mathematics Meetings, the biggest conference for mathematicians taking place yearly in the United States. I have not been terribly impressed but it was an interesting experience overall.
I took a minicourse teaching how to use a computer software named GeoGebra. It is a program that allows to play with Euclidean geometry very intuitively. It is one of those tools that you wished you had back in high school. Still, I thought it would be interesting to learn how to use it in case I ever have to teach something to younger kids. And, it is completely open source, a plus.
Later on, I went to the exhibits and in one of the many stands there was a girl presenting SketchPad, a software that is terribly similar to GeoGebra but is proprietary and comes with a price. I could not be easily impressed.
Although I decided to engage conversation with the presenter starting saying that GeoGebra looked extremely similar to their software. As I said that, I could see the gloom in her eyes. She did confess me later on that people in their company were very worried about it since SketchPad was their main asset. And once a free and open source version is out, who would buy it?
Definitely not me, since SketchPad does not even run on Linux. Still, I was touched by the story. The people at SketchPad are not against open source, it is just that they do not have a business model for it.
Moreover, I learnt that there was a single designer for SketchPad and that actually, everybody in the company, ten people more or less, was very dependent on the work of this person. The girl confessed me that sometimes she wanders, and what if he gets hit by a bus?
That brought me to something that few people think about when using software. In general, software is very complicated. People write it, people change it. When those people leave, there is a piece of software that nobody wants to touch anymore because it takes forever only to learn how it was designed. It is very common for software engineers to rewrite it from scratch every once in a while. It seems like an inevitable doom. So what do you do? The only answer is: make it as modular as you can, so that when you need to rewrite a piece it is a small one. That seems like the best you can do. And open source is really good at modularizing. Maybe overall that is the very power of it. How many people understand that though?