The future of Mono!

by Kevin Shockey

Related link: http://www.mono-project.com



Many people believe that the future of Mono is very bright, I know I'm one of them. Specifically, they believe that Mono will become a very popular software development platform for Linux. I think so too, but I think there is something missing in this prediction. In this article I will answer a series of simple questions that identify what is missing. In the end, it will make it easy to understand how Mono fulfills this prediction. We'll start with a key question in this analysis.

Will Mono become popular because of hard-core Linux aficionados adopting the software development platform?


This is highly unlikely. Developers as with most technologists tend to be extremely religious in their choice of a development platform. Therefore, most developers choose one and dedicate themselves to mastering that platform. So choosing a software development platform tends to be a mutually exclusive decision. We either choose Perl or we choose Mono. Only the rare developer will be open, flexible, and agnostic with their choice. Learning C#, no matter how easy it might be, will still require a developer to change their religion. There will be some defections, but not enough to make Mono popular.

So the hard-core Linux aficionados will not be able to achieve critical mass for Mono. What about the current C# developer base? When we consider this base, there is one question on most people's mind.

Why would any development team that currently targets Windows and the .NET Framework care about Mono?


At this time, the most frequent response you might receive is, they don't. They don't care about Mono because their server room doesn't yet have any Linux servers and none of their target users have Linux on their desktop.

They currently don't care, but I believe that they will. As I see it, Mono will only become a popular development platform on Linux with the help of the Windows community. They are the largest market for all things .NET and C#, so if Mono is ever going to reach critical mass, then it must be through them.

Even though Linux deployments continue to increase there will still be more C# programmers in the world than all of the Gnome GTK+, Qt, Perl, Python and PHP communities put together. Although some developers from these groups will be willing to learn a few new tricks with Mono, the rest (I've met some of them) would rather die than switch. So it still remains. If Mono is to become a popular development platform for Linux, it will only be possible with the support and acceptance of the Windows C# developers.

What will happen to make them want to care about Mono?


Most importantly, Linux will continue to gain popularity. With strong support by all of the major hardware vendors, it is clear that the Linux server market will continue to explode. Since Linux helps the hardware vendors sell more boxes, it is only a matter of time before this becomes true for the desktop as well. Pretty soon, if it isn't already, Linux will be constantly in the news and in all of the trade journals. With the bounty of open source applications most Linux distributions include or make available, there are bound to be functionality that becomes available that was previously beyond the reach of some IT shops.

So first they will become curious about open source software and why everyone seems to be buying Linux boxes.Imagine this scenario:

You are the development lead in a medium sized IT organization with 15 to 30 developers. The developers on your team are hardcore Microsoft advocates. You're developing ASP.NET and .NET rich client applications and deploying the applications on Windows 2000 or Windows Server 2003. Most of your key developers are comfortable with C# and use SQL Server and IIS.

One day you get in your snail mail in-box an article torn from InformationWeek or ComputerWorld. The article is about Linux, or maybe it is about cross platform deployment, or maybe it is even about Mono. On this article the IT Director for your department or your software development manager has scribbled a quick note. He has written "What do you think of this? Is this for real? Should we be looking into this open source stuff?"

Your first reaction is to ignore this delivery and get back to coding. But you've seen some articles about Mono in your .NET solution surfing on the Internet and now you wonder. Is there anything to this Mono stuff. You go and check out the Mono Project site to snoop around. You find a link to the Windows installation and you download the setup program. On one of your development servers you install Mono, and are you fairly impressed with the effortless installation.

The bottom line is that you like Mono and are curious about how it will behave in a limited production scenario. You and your team builds a quick ASP.NET application and you deploy it on the Server with Apache and mod_mono. The testing of the application reveals that it is ready for prime time and now your organization cares about Mono.


I believe that this scenario will play out with more and more frequency over the next 18 months. In Geoffrey Moore's classic "Crossing the Chasm" he presents a model to predict technology adoption. This model breaks adoption into two distinct groups, the early market and the mainstream market. We all are fairly familiar with the people that make up the early market, technology enthusiasts and visionaries. The key to the model is the first group in the mainstream market, the pragmatists. Once a technology takes hold in this group it has crossed the chasm and is ready for main stream adoption. I believe that Mono is currently in the early market, but it is poised to cross the chasm in the next 12 months. With the famous City of Munich success Mono may be establishing the references necessary for pragmatists to have confidence in Mono. When that happens, then curiosity in Mono will explode and so will adoption.

Summarizing thus far, Linux aficionados will not be able to make Mono popular so it is up to the Windows C# community to complete the task. Although they currently don't care, as Linux gains market share and their curiosity peaks, adoption will begin to explode. Once adoption of Mono within the Windows community occurs, there is just one question left.

How will Windows C# developers make Mono popular on Linux


The following steps, present the final analysis for how Windows C# developers make Mono popular on Linux.
  1. Experimentation becomes acceptance
    As IT shops continue to test and deploy one-off or non-critical applications written in Mono, their confidence will begin to grow. Organizations will realize that they are re-using their previous C# investments and saving money with Mono. This realization will earn the project a great deal of respect and build the momentum necessary for Mono to cross the chasm. Of course, additional case studies will help build this momentum.
  2. Choosing Mono
    There will arise unique situations, where IT shops will choose Mono or Mono on Linux as the target platform over Windows and .NET. There are three scenarios which make sense.
    • Autonomy - Many organizations will be drawn to the freedom and liberties that accompany the open source licenses for Mono. International development shops will be especially receptive of Mono. As opposed to Java, Mono allows foreign companies to create .NET applications without any worries over whether the architecture will stay available. No other software development platform matches Mono's freedom and ease of use for developing rich client applications.

    • Innovation + Feedback = Growth - Mono is a very active project. I anticipate the innovation and evolution of Mono will very soon outpace Microsoft's ability to continue enhancing the .NET Framework. Rumors of this are already beginning to ciruculate. I predict that Microsoft delays for Longhorn and Avalon will keep them distracted for the next few years or so. This lapse will allow the Mono project to provide features and bug fixes in response to the user community that Microsoft will be unable to match. In the end the combination of a vibrant innovative development community plus their ability to remain responsive to the user community will make Mono very attractive. This attractiveness will add momentum to the growth of Mono on Windows.

    • Not Available Here - The wealth of applications available for Linux under open source licenses will become a powerful asset to many IT shops. The breadth of applications will expose software development deparments to new functionality that may have only previously been available on Windows with very expensive licensing costs. With these new applications, there will arise many new integration and development opportunities.

  3. Linux Rules
    With the general acceptance of Mono growing from increased application deployment, the final step will be the dominance of Linux in the server market along with the emergence of Linux on the desktop. Then the inertia of Mono combined with the inertia of Linux will draw the attention of everyone. ISVs will take special notice of the growth of Linux and they will have to include Linux as a standard operating system option for their products. Corporate IT departments will continue to find more applications to deploy on Mono and Linux.

    One of the biggest drivers for Corporate IT shops will be integrated solutions. As vendors increasingly choose Mono and Linux as their target platform, then the integrated solutions they sell will be Trojan horses bringing Linux and maybe Mono into the server room.
  4. VB Tips The Scale
    Currently there is only limited portability between Visual Basic .NET and Mono. However, when Mono is able to achieve relative complete compatibility, the number of potential users for Mono will escalate quickly. Of course, VB.NET programmers will have to pass through the entire process of denial, curiosity, experimentation, and acceptance. Once this process is complete, the VB.NET community will easily follow the lead of the C# community. This process may already be starting, even now.

Conclusion


In the end, Mono will become a popular target platform for Linux. This will be due to explosion of the Linux market, the openness of the Mono licenses, and the strength of the open source software development model. It will also happen because of how easy it will be for Windows C# (and VB.NET) to switch to Mono. IT management will love and encourage the switch because it will open up cross platform development without retraining and without re-outfitting developers with tools and resources. ISVs will choose Mono for the same reason, and end up delivering integrated solutions using Mono and Linux into IT shops everywhere. Ultimately the popularity of Mono will grow from the power that any open source software brings; the power of choice. Having the flexibility and confidence in different solution alternatives will improve the quality of our solutions. Organizations will choose Mono and Linux when the needs of the problem demand them. For most, it will be reassuring that that all of this flexibility will be available to Linux and Windows developers alike.



What kind of Mono programming book would you like to have right now? What kind of books will you need in a six months, at Release 2.0?


9 Comments

presence
2005-01-17 02:27:01
Why not Java
I think there are more reasons to take up java than Mono and that is happening too...


1) Perl, Python etc are scripting languages and not for serious programmers. True linux programmers prefer c, C++


2) Mono is at least 18 months behind microsoft .NET. Taking up mono will be suicidal to business houses


3) Java + Linux gives better tool set and advantages today. J2EE is real in today's linux with Jboss server and apache struts and other efforts.

ShockeyK
2005-01-17 03:11:25
Why not Java
Here are two reasons and the first one is a biggie. Java is not open source. Not matter how "open" the community process might be, Java is a risk for international software development shops. And two, if we are talking about a .NET development shop, Java involves changing religions. It will be a more difficult transition and involve re-training and ramp-up time. C# to Mono does not.
rjstreet
2005-01-17 05:57:04
Why not Java
I'm sorry to break this to you, but I've worked for a number of multi-nationals and I'll tell you - they don't care if its "true" open source or not. Factors like support, cost of ownership and existing investments go quite a bit further. Mono is good, but there's nothing there to really push Java out of the way - and that's what they really need. Large corporations need more than the capability to move to a new technology, they need a reason.
ShockeyK
2005-01-17 07:40:30
Java is not open source!
Thanks for bringing out that distinction. In your comment you mention multi-national, however I referred to international. To illustrate the difference consider the following questions:
  • Have you ever worked for a foreign government?

  • Have you ever developed an application for a foregin company in any of these countries: China, India, the Czech Republic, Brazil, or Maylasia?
  • Have you ever been involved with applications affected by international trade agreements?

  • Have you considered what might happen if, for crazy reasons never before seen, Sun stopped enhacing Java or licensing for free?

Also one last question, please review this article and identify where I suggest that Mono will push Java out of the way?
teejay
2005-01-17 09:36:09
Why not Java
You appear to have not been taking any notice of what happens in the real world.


Your first point is utterly incorrect. Serious programmers use a lot of Perl and Python - Java lacks the dynamic features and huge back catalogue of readily available C, C++, etc libraries.


Any C or C++ library can be used within perl and Python (or even PHP) applications. You will find that Perl and Python have more than their fair share of serious programmers and major ecommerce and other systems continue to be built with both languages. Java is too slow, too complicated and too tightly linked with the huge collection of tools required to make any java programmer productive.


as for point 2 - Mono is plenty ready enough for any well designed C# or .NET application - only a very small number of bleeding edge MS development houses are making serious .Net deployments and most .Net applications are far from ready to market.


By the time that the majority of MS development shops are working on testing and QA of their .Net applications - testing their applications against Mono so that they can run on UNIX and Linux will be a no-brainer.


Your third point is partially true in that Java on Linux is now fairly mature while .Net still lacks the testing, deployment, community and documentation, but then Java is still behind Perl, Python and C/C++ in terms of maturity and mindshare of serious developers.


Also I am already using more applications written in any of c#, python or perl than Java. There are no killer desktop or server applications in Java.


Gnome and other open source projects are already providing useful desktop tools and I already depend on a great deal of perl and python tools on the server with no Java in sight.


Peredur
2005-01-18 04:43:59
developers
As one of the Windows developers in question, let me first say that I do have an interest in mono. And as a Linux user at home, I hope very much that it succeeds.


One thing the article does not mention, which to my mind is very important is the relative maturity of Windows development environments. monodevelop notwithstanding, there is nothing under Linux yet to compare with VS for .NET development. I'm sure that this will be put right eventually, but until it is, I'm afraid that developers will be reluctant to move.


Peredur ab Efrog

LubosD
2005-01-18 11:21:49
Java is not open source!
Czech Republic? Ahem, I am from Czech Republic.


I think that C# is not much "loved" here, because it's just Microsoft's thing... :D


And Java just looks more professional :D. Too many dummies are using C# here - just compare some Java and C# public forums.


When I would have to develop some multi-platform application and I couldn't use C++ & GTKmm, I would choose Java rather then C#... Java for Linux is developed by it's creator - Sun - but MONO is not developed by Microsoft. So it's just a bigger risc to use it.

LubosD
2005-01-18 11:25:47
Java is not open source!
By stopping to license Java for free or stopping to enhance it, Sun would kill itself!


P.S.: China, India, the Czech Republic, Brazil, or Maylasia. You are comparing Czech republic to China, India, Brazil and Malaysia? Are you joking?! Grrrrr

ShortyBrno
2005-01-18 13:43:04
Are you kidding?
Are you joking? :) How can you put Czech Republic in the middle of the other countries? Do you think the level of programmers is same in these countries? :) Or they have just different language than yours :-P Maybe South Arabia should be also with Czech Republic...