As I stated before, currently I am involved in an ambitious R&D project that is based on state-of-the-art technologies like document oriented databases, full text search, advanced caching mechanism, mobile and web development and so on.
With such a huge project ongoing, I am not the only one that is involved with it. I have some of my collegues that is actively helping me with this project and most of them are working with Microsoft Windows 8.1.
While they were setting up their work environment I notice how this task was laborious on this operating system. Let me explain with some examples:
- WAMP Stack: there are plenty stack of Web Server + PHP + MySQL appliance for Windows that permits to a developer to quickly start its duties. Problems arise when you need to use a PHP extension that it is not bundle with your stack of choice.
Imagine you need to use Redis, for example: with Homebrew on OSX or any package manager system on Linux, you have only to issue the correct command and the dependencies are resolved quickly and easily.
With Windows it is not so easy. If you are lucky, after some googling, you will find someone that has already faced your problem and fixed it by providing you a DLL1. But if you are not so lucky, you have to download Visual Studio Express and you have to compile the extension by yourself. To my collegue, who is a senior developer, this operation took an afternoon..
- Python and its batteries included: some of python packages that are used daily, like psycopg, require c compilation2 of themselves. Again, when you are using these libraries, you have to find a DLL that contains the compiled part that is needed by the library itself . In our project, the psycopg version has been stuck to 2.5.1, which is not the latest , not because it is the finest we could use for the project, but because it is the one that has a compiled DLL for Windows 8.
I can go on with multiple examples, like the installation of server that is not so easy to do on Windows, but the point is another one; it seems to me that Windows is too much oriented to Microsoft development (.NET, Microsoft SQL Server and so on), and, if you try to jump over the bounds Microsoft has imposed (simply because you need something that Microsoft does not provide), you find a tangled area where most of the time is used to build you development environment instead of writing your code.
Compared to Linux and even Apple, where the problems I described before do not happen, I find this situation very awkward, expecially if you consider that Windows is the most used OS in the world on desktop (and consequently the most used from developers) nowadays.
There are some new ways, which I will discuss on new posts, to avoid this hassle, but the real question is:
Is it Microsoft Windows the best development environment you could use today? Or are there any better solutions?
You have to be very lucky with DLL. In fact it is not sufficient that someone has already built it for you, but it must also have compiled the extension using the same PHP version you are using, otherwhise the DLL will be unusable for your environment (Yes, it is happened to my colleague, who was so joyful about that). ↩
Some python libraries need to use external C bindings to work, like psycopg that uses PostgreSQL native libraries, some other has its own C source that are used to be more efficient on the underlying operating system. This is called python extensions and are provided by the language itself. ↩