Free Software and Education

Yesterday I attended to an event at a local University where my friends from the Ubuntu Loco Team did some talks on Free Software. One of the talks, the one I considered the most intersting of them all was about Free Software in Education. My friend Eivar Montenegro talked about the importance of Free Software when it comes to Schools and Universities and how it would benefit the current educational system. One of the benefits he mentioned was the fact that it would be cheaper, something I strongly disagree with, not because it's false, but because it would mean that teaching using freeware is also as valid as using Free Software, and that's clearly against the position of our Community.

Yet this post is not about a reflexion on tha matter, but about a reflexion on a question someone asked after the talk: Some random guy asked what was the validity of teaching Free Software in modern days when all of the IT business is ruled by one company (I assume he was talking about Microsoft) and it's Propietary Software.  My friend answered that business was not exactly ruled by one Propietary Software company and cited some succesful Free Software projects like Apache and MySQL as examples of mainstream projects actively used in business.

Although it might be true, I still consider that answer as a weak answer to a very misleaded question, because we are talking about Education, not about the hottest trends in IT. But it's a very common mistake from the Universities in Panama to confuse phrases like "Prepared for the Future" and "Ready for Business Challenges" with "Cisco Certified" or "Microsoft Visual Studio .NET Ready". But the truth is, my friends, that these are not equivalent concepts. Teaching someone about a particular tool or set of tools, no matter how big that set of tools is, is nothing close to educating. There's no point on teaching a student how to create a database schema under Oracle DB when that student is not capable of analyzing a real life problem and coming up with a well-designed database-driven solution for it, or teaching a student all of the new features of the latest Visual C++ implementation when that student can't apply that programming knowledge to optimize an existing algorithm.

Having students prepared for the latest tools available in the market is just an absurd race against trends which change rapidly every year. Considering that an average major in Panama is obtained after 3 or 5 years of studies, it's just plainly stupid to think you can develop carreer plans based on tools and not on concepts. Furthermore, whatever tool a student learns during his career is surely going to do one of two things in the near future: evolve or dissappear and when that happens, everything he knew about that tool will render unuseful on the Market some University once told him he was prepared for. Since it's a very well know fact that people's ability to learn is degraded with the past of the years, it will be a lot more difficult for that "professional" to learn something new and he will probably be replaced by newly graduated students that will start the process all over again. And even if that sounds comfortable enough to some old professors that know they can always accomodate to such a system as they can't actually be fired from the University because of all the years they have been in it (at least that happens in my University), well, the concept of metaprogramming is going to catch you all: We will eventually be able to make programs that are capable of doing general purpose programming, and once we get to that point (and we are not far from it, judging by the complexity of parsers and compilers) there won't be a need to hire people to do that.

So how can Free Software help the Educational System prepare real-valued students? This question has been answered previously: consider Andrew Tanenbaum's classic book "Operating Systems Design and Implementation". What was it that made that book such a bestseller? Besides the great expertise from such a master of Operating Systems, the book came with the world famous MINIX. Why was that? Because Dr. Tanenbaum knew that there's no way to learn as an expectator. The students needed to test and think out of the box and you can see that approach throughout the problems at the end of each chapter: most of them ask students to modify the MINIX so that it could do something that the distributed version wasn't capable of doing yet. Couldn't the author simply write a big book on UNIX commands? Yes he could, but he knew that was NOT teaching. He probably knew that there was great chance that in the near future UNIX wouldn't be mainstream in the market, but even if that happened, he knew that the concpets that built UNIX will still be useful, maybe not as breakthrough ideas anymore, but at least as bases for new features to be added on modern operating systems.

Free Software gives students the power to think beyond the capabilities of the existing tools, and at the same time teaches methods and values that cannot be taught in the regular IT curriculum, like sharing the modified concepts and world-wide team-based projects. Students would no longer worry about learning what command creates a thread on a specific languge, and instead use that time to think on better ways to implement any single threaded existing library in modern multicore CPUs using any given open language like Java. This kind of Educational System frees the professor from the burden of teaching language-specific material (we have the Web to do so) and empowers them with the ability to teach models  and concepts that will endure as languages and platforms change (after all, Object Oriented Programming is close to 50 years of existance, but most of the students in my University are still not sure of where to put the class keyword on a C++ program).

Are you not convinced on my argument? Well, try searching for these two phrases: 'SQL Server Tutorial' and 'Sharing Tutorial'. The first one is searching for a tutorial on how to use MS SQL Server, did you find any? The second one was searching for a tutorial on how to share valuable information and knowledge in a community and the importance of it, did you find any results regarding that concept? Well, it looks like its a lot more difficult to teach students a single value like sharing, than to teach them many of the latest tools.

But then it looks like Free Software solved the problem for the IT Educational world, didn't it? Well it didn't. It actually did more than that. It solved many other aspects of Education on many other areas. That's because Free Software stands not for Software Freedom, but for Human Freedom. The legal aspects of Free Software are still challenging topics on modern discussions on Copyright laws. Social Sciences are also backing up the Free Software movement as the only alternative to modern monopoly trends that have turned our society into a marketplace of possible buyers. So Free Software is not just about a hacker's right to see the code, it's about a society's right to grab the future with its own hands.