I’m going to talk about one of the many causes of software monopolies, which are closed file formats. We all know that if an application can generate data that no other application can understand, the user will be forced to stick with said application if he happened to do some work it. What are the problems of this?
It seem pretty obvious that this kind of locking is a good way to instaurate a monopoly, you can just look at Microsoft Office for an example. The other problem is obsolescence. What happens if you use a product from a company to do your work, stored in a closed file format and the company closes? You can just stick using the product you bought with no problems, but you have no guarantee that it will work on later computers and soon or later you will just have to redo your work.
As an user of software product, you should try your best to use software which uses open and well documented formats to store data. I know this is not what you usually look for when you buy software, but hey, it will come to (y)our favour.
As developers, what should we do? If our applications are going to produce some kind of content i think we should document the file structures we are going to use to store it. Either that, or use an existing open format (which would be the best option, but not always possible).
Also, a big advantage of using a documented file format, even when you wrote that documentation, is that you are less likely to screw up in the implementation because you have a reference to work with. I’m assuming you document the file format BEFORE using it, which is the way you should do anyways. Also important: code is no documentation. I know of some open source applications who claim they use open file formats because you can figure out from the implementation. That’s not true, when no documentation is provided a format is still closed, no matter how many different implementations you have access to.
But there is another entity which in my opinion should regulate these issues. Maybe is too early, but i think governments should force interoperability and the use of open file formats with laws. I know we all dislike government control, but it controls many aspect of our life and business. Computer business should not be any different and some regulations would advantage small companies which currently cannot emerge.