503 Service Unavailable

2007-01-28

Free data

Filed under: Programming,Software — rg3 @ 23:49

With a couple of posts talking about Slackware, you may know by now that I’m a Slackware Linux user. It’s the system I run on my main computer, which happens to be an Acer Aspire 3003WLMi laptop. Hence my published review of that computer.

Knowing that, I felt I had to clarify my view on free software, open source software and proprietary software, so the few people who read me or will read me actually know the type of person that text is comming from. I always avoid discussing about “gray area” topics and tend to accept other people’s point of view easily. For that reason, I’ll try to avoid non-technical topics as much as possible, this post being an exception to that rule, but I’ll try not to break it again.

The following statements are my opinion. They’re not the truth and I don’t think everybody else should have that same opinion. All warnings in place, let’s begin.

The Free Software Foundation believes all software should be free. By free they mean software which gives its users four basic freedoms, which are the freedom to run the program, the freedom to study its internal workings and adapt it to your needs, the freedom to redistribute the program and the freedom to improve the program and release those improvements to the public. On the other hand, the open source apologists try to see it from a practical point of view and consider open source software better because it has development advantages that should increase the quality of the final program, but by no means they consider proprietary software inmoral, and concede sometimes the best tool for a given job may be a proprietary program.

My vision is different to both. I like freedom, and I think freedom is one of the most important qualities a human being should try to achieve. It must be noted that being completely free is probably impossible and it’s a topic that can act as an starting point of very long philosophical discussions. While working with computers, the most important and inmediate user freedom is the ability to decide which software (s)he wants to run. This is probably the only important freedom, in my humble opinion.

In order to achieve that, two conditions must be met. First, the user needs general purpose, open hardware available. Computers with open specifications what can run any software designed to run on them and that won’t check which software they’re running. Those computers would let you write and run your own programs if you decide to do so, and provide the appropriate hardware platform to be free in the sense I mentioned.

Finally, the user and the industry in general needs open protocols, formats and specifications. Because, at the end of the day, what really matters is the data, not the programs. The programs are tools to solve problems, to generate data that can be manipulated, stored and retrieved in the future and by yourself or another person. If we want everyone to have the freedom to choose the software they run, we need to communicate using open protocols. When I send someone a “document” I try to do it in an open format. I want to make sure they will be able to work with that piece of data (view it and/or manipulate it) no matter what platform they choose, be it Linux, Windows, Mac, FreeBSD, NetBSD, OpenBSD, Solaris, HP-UX or whatever. I know software is complex and that a normal computer runs a whole stack of it starting from the kernel to the different libraries and programs. Sometimes I may send someone a piece of data they can’t work with under the platform they have chosen, because it lacks the appropriate tool. However, by using an open format I can at least guarantee that someone may develop a tool of his/her taste in the future, and I’m showing them my desire that they keep that freedom of choice they have.

Free software advocates often mention goverments, schools and any other public body should use free software. I don’t think that way. They need to run the best tools, the tools that let them do the job as conveniently and cheap as possible. However, one of the requirements for those tools should be to store the important data in standarized, open or otherwise perfectly documented and tested formats.

It’s been years since I stopped advocating Linux and other free software. It doesn’t really matter. I don’t mind which platforms the people choose. Repeating again, it’s the data, not the programs. Of course, this has small exceptions. After all, aren’t the programs data themselves? Yes. That’s why, when developping a program, I try to do it as open as possible using standarized or open languages and libraries. At the same time, I know sometimes this is not feasible.

Considering programs data themselves is important in some other situations, like when running the program is the objective by itself (think of games) or when the program produces data but it’s not generated by itself, so it has no responsibility in creating it under an open specification (think of youtube-dl, which simply downloads the video data). These programs ideally should be platform independent, thus the need for open multiplatform libraries, languages and tools providing the foundation to build on them and creating any type of program (open source software, free software or proprietary software) and make it available for as many platforms as needed and let people choose freely.

It’s a complex topic with rough edges. However, I think I have outlined my general line of thought in the paragraphs above.

Advertisements

Blog at WordPress.com.

%d bloggers like this: