Another reason why free software matters

This morning, I read Tim Anderson‘s “Why Microsoft abandoned Visual Basic 6.0 in favour of Visual Basic .NET“. While reading his article, I only had one idea in mind: this is another example of the importance of free and open source software. If you are not a programmer, you don’t need to read the remainder of this post; software users have many other reasons to prefer free software over closed-source software (but it’s not the subject of this post).

Basically, Visual Basic was abandoned because it was based on an old library, it lacked object-orientation and it was limiting programmers creativity compared to other languages available at that time (C++, Delphi, etc.). Per se, shortcomings in programming languages are not unusual and, considering the origin and goal of (Visual) Basic, people could have forecast this giving up. What is interesting to see is that Microsoft took the somehow brave decision to break the compatibility with previous Visual Basic. This left recreational as well as professional programmers as well as companies in a strange zone where they need the old Visual Basic for sometimes critical software but without any support anymore for the language and its extensions. Of course, Tim Anderson added that you can still write these extensions (the infamous .DLLs) in other languages and link them with Visual Basic code. And there is informal support from The Community

Things could have been better if the language was standardized and, even better, if the language specifications and evolution were open to the community.

First, standardization … C, C++ and Javascript (for example) are standardized since a long, long time (longer than Visual Basic even exists) and they are still largely used. Depending on sources, their usage may decrease or be stable but, along with Java, C and C++ are the only languages to be used by more than 10-15% of projects. Standardization means specifications are available and people and companies can build their own compiler (C, C++), implement their own interpreting machine (Javascript in browsers) and create their own libraries around these languages. There is no fear your favorite IDE/compiler/… will be abandoned because if it happens, you will always be able to use other tools and continue to use the same language.
But standardization isn’t the only keyword. C# and a part of .Net are also standardized but there is a “grey zone” where you don’t know what is patented (yes, another bad thing about software patents) and by whom. This uncertainty may hamper the development of alternatives to the “official” compiler/IDE/… (see discussions about the Mono project on the internet).

These problems about patents and who owns what leads to another important aspect of a programming language: how it is developed. If one company holds everything (like Visual Basic, C# and Java), it is very difficult to suggest improvements, submit them or submit bug reports, etc. And once the company decides it has no more interests in this language, all efforts and developments are slowly becoming useless, as we see with Visual Basic now. Languages like Perl and Python are openly developed by the community. Usually efforts are catalysed by a steering committee (or a structure like that). But in case this committee unilaterally decide to halt the development of a language, source code and other discussion can still be used by other people.

So, if you can choose and even if some languages are are in the hype for the moment, choose a free/open language and your efforts to study it, to find tricks and details will never be nullified by a third party decision.