On this Friday we have a freelance open-source opinion article that was written by Ciprian Khlud. This developer, who uses C# among other languages at his place of employment along with a combination of Windows and Linux, argues why the Mono open-source ECMA CLI/C#/.NET implementation is actually desirable for Linux.
I know that Mono get some people emotional and I think that in many ways it is deserved:
- Oracle was attacking Android's Java for copyright issues (no patents, sic!)
- Apple attacked Android too, an open platform
- Microsoft attacked TomTom for using extFat format in their GPS devices
What if Mono is in the same world and it would happen to be attacked by Microsoft?
As I'm not working in a legal field, I honestly don't know which will be the next claim and which are the implications, so I take another perspective about why Mono even with a patent attack threat is desirable and I will want to see the impact in today's life.
So, I'm working on an average sized system with fairly high complexity written in C# in my daily life. I use there things from Entity Framework, WPF, web services, XML processing to daunting tasks of having an exact behavior that is hard to take given a lot of variables that a software platform brings. So I want to say simply that: software is complex, in fact in some cases is incredibly complex. For this reason, I look firstly for a tool that solves most of my problems and in areas that is not best, it offers a fairly good capabilities to work around the problem. Some things that were true before, like: .Net was a separate install in Windows 98 SE (you could install client .Net, but no development tool will work on it), is a Windows Update component.
So as I work many hours with C# at work, and hopefully I have some experience with it, I also inherit from my work environment paid tools to do my job. I am not saying by name, but they don't include just Visual Studio. All those tools can help me to create in my little spare time some applications that I think are necessary and I can think that I can help to create an application in the area I know fairly well how it works.
So I can try to make an application I know how to do, let's say a Notes like software, that has also a checklist. I will look for which options I have to write it today and at least for the leading distribution I see for me the following options:
- C/Gtk+/GLib: It is possible but is really not easy, you work with macros, the leaks and bugs are really hard to spot.
- C++ / GtkMM: it is really a good platform to do the work with, but as the application grows, the compile time grows, sometimes the annoyance of oddities that C++ has, like forgeting a ';' after the class definition in the header, will make you to fix the build and wait for code to compile.
- Vala: I think is the best for now as for my C# skillset, yet, the debugging experience is suboptimal. As for me is as hard to track bugs as it would be with C/GLib (I see Vala as a macro expander), because there are no consistent GUI tools.
- C++ / Qt: QtCreator is really a fancy and speedy IDE, is really working, and is mostly bug free. The environment is nice and I think is the best platform from a "wannabee" of working with C++/Qt.
- MonoDevelop: I see it like C/GtkMM, in the way of debugging on Linux sometimes, mostly when you go in "unsafe code", it has bugs here and there.
- Last but not at least: Python/Gtk+ is really a great platform. I don't know Python well enough, but it looks really stable and mature software package.