I'm a hacker, a free software advocate, and a student.
We create standards to make our life easier, but then gradually we start breaking those standards, and inventing our own standards. And then our remaining life spends in maintaining those non-standard stuff. There are many reasons why we did so, in order to ease our pain, or to look different from others. The problem starts when interaction with external world happens.
For example, Our text files on Linux, looks horrible in Windows Notepad. Why ? Because Windows and Linux have their own standards for text files, i.e. Windows apps expects that each line in ending with
\r\n (CR LF) whereas Linux assumes each line ending with
\n (LF). The problem will be more when trying to sharing same set of batch scripts between both the systems.
Using proprietary closed source standards (are they really standards ;-)) are hell, because they affect freedom. You can't use other application because all your previous work is in other properietary format and which your other application won't understands and hence you're screwed. You can't expect everybody to be using same thing. If you expect whole world to be using that software, then imagine if whole world is using your rival's products. This is where this GNU thing comes into picture. It is not there to give you another proprietary software, but it is there to assure that the software is open and free like air. So, instead of binding users with any software forcibly, you a creator of software is offering user a choice that user should use your software if he/she thinks your software is worth it. This helps in increasing growth of your software due to competition.
Also use of publicly available standards lessens burden on you, a developer. You don't have to research on a new file format. You don't have to write any import plugin to import public standards files into your file formats. Other software developer's don't have to write any import filters for your application's file formats. Your software users won't get screwed at least their data is in publicly available format. Imagine you're having some critical data in a proprietary format, and then when some flaws are discovered in that software, you won't migrate because you're attached to that properietary thing. Binding users to their softwares in this way is common practise among proprietary application developers but what that means is that user is using your software not because it solves his problems but because, he's trapped.
How to earn money ? This is a big question for those who're developing free software but won't considering it because of earning. Remember those who really going to purchase your softwares are either impressed by its features or are either expecting support for it. Remember you won't tackle piracy ever. But even if you still try to go for anti-piracy techniques, things like dongles, product keys, hardware IDs, activations are available. But anybody (who thinks your software is worth cracking) can bypass these things by patching your code, generating fake keys etc. So, if people think your software is worth cracking, due to its features, why not release it under GPL (General Public License), so that more and more users can use it (anyways they're going to use it illegally, if you won't release under GPL) legally and increase its proliferation, and contribute in its development. Those users who're really happy with its features will pay for it or fund its development.
What free software has to do with standards ? Since no one wants to reinvent wheel (reinvent a new standard) unless current wheel (standard) works for them. And even if somebody invents his standard
XYZ, it'll be publicly available. Others can use
XYZ standard, if they think it works for them.
The standards are invented in order to make our life easy, not hell. The single way to design best software is to just implement specifications (or standards). This practise will make your applications secure, bug-free. As philosphy of software toolbox goes it is better to write, debug, maintain small programs than to a large. I recommend reading the doc pointed by previous link as I was unable to describe that philosphy better. If you're writing new applications and want to know if what you're going to do and can be persisted in a standard format, few places worth looking at are WWW Consortium, IETF, Unicode, ISO, IEEE, IUPAC and other standards organizations you can think of.
There are some of my webpages tooo...