I am mainly working with C# over the past years, so Python is a language alien to me. But since a lot of people are recommending it over other languages such as Java, partly because of its compactness, and since I want to learn a new programming language or two for my own benefits, so I, huh, started learning it in my free time.
Python is distributed under open source license, which means that you can modify the source code at your will. One of the good points with open source software is that it is a laissez-fair systems with the best always capture the biggest market share. The trouble is that too many choices sometimes confused the uninitiated. One example is there are many different Linux versions floating around and that makes the support for Linux software more expensive. But luckily there is an official Python website, so I just went there and downloaded all the necessary components and software.
After that, I did what a sane programmer would do when confronted by a new language:
a link and started working on it. Of course, Hello World is simple, so soon my interest waned.
I decided to try something more challenging. As a target, I made an attempt to contribute to the existing Python open source projects. I downloaded a project and all its source, unzipped it and found that I couldn't make any sense out of it. There were just a lot of sub folders, with a lot of .py extension files in them. I couldn't find out which one was the main one. With the IDLE, downloaded from the official Python website, I simply didn't know how to understand, much less navigate through the jungles of code because there was no solution explorer that aggregated everything together and presented the whole project in a coherent manner.
So I thought I needed a better IDE. After all, the IDLE provided by the official Python website was just too crude for any serious development purpose. Stumbling around, I came across The Eric Python IDE that looked better. So I decided to give it a try.
After the download and installation, I opened the ReadMe file in notepad and it read like this:
Can you understand what was contained inside the file?
I thought I could crudely understand the instruction. So I launched my IDLE, open the "install.py", and press F5 to install the IDE. Well, I did this with another scripting language, Matlab and everything inside the scripting files ran. So I expected all the scripts inside the fpython scripting file executed as well.
But this time, I got an error message. It said that the PyQt4 module was not installed.
I needed to find the module and installed it on my own.
Not to be deterred, I installed the PyQt4 module. This time, I needed to run the "configure.py" script file. After running, another error message appearred:
Traceback (most recent call last): File "%Directory%\Open Source\PyQt-win-gpl-4.3.3\PyQt-win-gpl-4.3.3\configure.py", line 30, in
I knew it was always not easy to get open source software to work, but I couldn't believe that it was this hard to work with Python the language, maybe working with Python the snake would be easier.
Is working with Python difficult? The Python supporters would say no, of course. They love the language. They say that it is the easiest, the best language to work with.
But that's for Python supporters, the ones who are already familiar with the language.
But for beginners like me, learning Python was a hell of confusing and frustrating experience. I remember when I first started programming, the language used was C, and I used Borland Compiler for that purpose ( Borland Compiler was the dominant compiler in 1990s, before Microsoft took over). I didn't have to search high and low to get the component needed before starting to do programming. And of course, Borland Compiler wasn't free. But I guessed the licence fee did save me a lot of time. Not a bad deal.
My difficulties in learning Python underscored the difficulties in using open source software in general. With the possible exceptions of Mozilla Firefox and NUnit, and some other very general software, open source software generally requires one to tweak the setup or install prerequisites on one's own. The process to get the application or the framework or whatever to work is generally harder for open source software. There is no one-click installation process that will guide you to get everything you ever need. Open source proponents would argue that this gives users the freedom to install the minimum components and the flexibility for customization, but to me this actually hinders new users from getting familiar with the applications.
Not only that, the user documentation is lacking. This is not surprising, as many open source contributors are interested in the hard part of the problem, namely coding and getting the program to work. Who wants to waste their precious time on mundane tasks such as writing on the instructions on how to operate the software? But user documentation is the document the users consult when they run into problems. Without proper documentation, software becomes harder to use.
No wonder the learning curve for open source software is generally steeper than commercial software. Again, don't misunderstand me. There are open source software that have virtually no learning curve at all like NUnit or Firefox. But these are hot applications with perhaps hundreds of thousands users. Giving the user base, it is not suprising to see these applications being fine-tuned to a high degree. But for applications that are not that popular, that have only hundreds of users at most, you will find that they are lacking in the area of usability when compared to their commercial counterparts.
So, getting used to open source software is not easy, and certainly, it's not necessarily cheaper than commercial software.