Mono: My first technical post

Hi everybody (if there’s somebody around), it’s me again. This time I want to write my first technical post, why? well, I wish to become a great IT consultant someday when I finish my college and if I want to develop technical skills, I guess I need to start from some point, and it is researching about software projects around Internet.

I picked up the Mono Project, the open implementation of .NET (yes, the Microsoft development platform). Thanks to this project you can port and run C# source code wrote from Windows in Unix environments (awesome! isn’t it?). I must say that Mono is not just a “free clone” of .NET, I mean, the guys behind this project are working in other features not included in the Microsoft product; for example, support for free programming languages like python and ruby among others (the list of supported languages is so long). In other words, Mono is .NET and much more!🙂

I chosen Mono to start, because I found it very ambitious as a free software project (covered under the terms of a set of licenses: GPL, LGPL and MIT. All open source! ) and I say that because this guys are competing with the Microsoft development team. Not easy challenge at all, if you consider Microsoft is one of the most powerful software companies around the world. If Microsoft releases a new API for .NET, then the kids behind Mono start to develop a free proposal about it. Maybe it doesn’t happen with all the components, but at least in many cases. I don’t know any exception case, but if you are aware about any; please, let me know.

Looking for a hint, I was browsing some IRC channels around Internet and then, awesome!, I found Miguel de Icaza online. I couldn’t believe it, I mean, this guy is the leader of the Mono project and of course, the head behind the GNOME development at its beginning. Yes, he is a legendary GeeK and to be honest, someday I hope to be as famous as him. The great thing about Internet is that you can get closer to people that maybe you never gonna meet in the real world. For a moment, I thought I couldn’t talk to him, but he answered me and he was so tender that I am pretty motivated to write this post🙂

I asked him for some nice topics to talk about Mono and he suggested me Moonlight and PLINQ. So, one week ago I started my research about those libraries, and here we go:

About Moonlight: This is a free proposal of the Silverlight Microsoft project. But, ¿What is it? well, in my own words: it’s the Microsoft’s answer to Flash, the Adobe’s multimedia development platform. In the words of Microsoft: “The next generation of .NET based media experiences and rich interactive applications for the Web”.

But, ¿What’s going on here? Two big companies fighting for a pretty lucrative market, but most important, two interesting development platforms with real open resources for developers. ¿From both sides? Yes! thanks to Mono we can have access to Moonlight and by the way to the Silverlight technology. In the other hand and thanks to Adobe, now we can play with the SWF specifications and be part of the Open Screen Project to develop any kind of players and applications with no legal barriers (the always licenses/patents messy stuff, you know). Exciting times on this specific tecno-battlefield, isn’t it? Anyway, I think the Free Software community is reaping a generous harvest here. No doubt about it.

Ok, let’s talk a little more about Moonlight: thinking about its potential in rich media Internet applications, I must say it’s incredible. You should take a look into the Screenshots section to see a pretty variety of applications using this technology, and everything running from Firefox which should mean it works with standards and not like another “Internet Explorer dependent” proposals. The truth is I never imagined legal and free APIs parsing XAML files from Linux and I must say I wonder about how the market can change the business strategies of companies like Microsoft. It’s the open source movement playing a role in all this? I couldn’t say it (and you?).

To finish this point, I want to quote the goals of Moonlight’s project:

  • To run Silverlight applications on Linux.
  • To provide a Linux SDK to build Silverlight applications.
  • To reuse the Silverlight engine we have built for desktop applications.

As you can read it, this guys want to do the _whole_ work. They are experienced programmers and they have Novell funds behind them, so I guess they’ll succeed; it’s just a matter of time. I was playing around with Mono some weeks ago, but I need more time to understand and play with Moonlight (I will, I promise!).

About PLINQ: When I started to read about it, I wondered about the basic concept: take advantage of the multi-core processors using a library. The main idea consists in accessing many data structures from many sources (databases, xml files, whatever ) . Just one condition is required: everything must be an object, or at least, data must be encapsulated into objects to play this game. The most interesting point I found about this API was LINQ (Language Integrated Query), the set of instructions defined to access data; it’s something like SQL (by the way, I’m learning about it in my databases class) but a little more generic. I wondered because I never imagined to use a concept like a “query” as a direct part of the syntax of a programming language. To me, it looks a little strange but interesting. Look what I mean:

var q = from x in data where (x.f-- > 0) select x;

I once heard my teacher say: “Programming languages evolve” and I feel that’s what’s happening here. I mean: embedding SQL-like sentences as part of the language instructions? I never saw something like this before. If you know about another cases, please, let me know.

The theory is pretty, but my only doubt is about the performance. PLINQ looks powerful in terms of access, and it’s supposed to optimize the processor cores usage, but I haven’t done a formal test yet. The question is: ¿How fast can it be? I was looking for preview experiences but I just found a post in a forum (no luck this time). If you can tell me about it, I’ll appreciate it. Anyway, I found PLINQ a very interesting proposal as a new concept, well, at least new to me, I mean, it seems to be a technology that focuses on the hardware of the future and I guess it’ll keep evolving, so results in some time from now should be awesome.

Ok, that’s it for now… too short, isn’t it?😦 I guess I must try to be more technical next time, but it’s not so easy for me. Some people say that teenagers lose focus easily and I think, there is a reason for it. We are just discovering the adults world, so it’s very easy to get amazed with every new detail: business, companies, Internet, software development, you name it. The picture looks too bright for me and I’m happy because that just means one thing: I have too much to learn.

By the way, today was released Mono 2.0. My post matched a Mono release! Cool!😛

Chores time (again :S) See you later pals!

Tags: ,

2 Responses to “Mono: My first technical post”

  1. ceronman Says:

    Very nice post.

    Open source compilers and interpreters for languages like Ruby and Python are being developed by Microsoft. They have released these pieces of software as open source. Free specs for Flash are a really good thing. I believe this was the answer by Adobe to Silverlight and XAML. XAML was open since the beginning.

    Mono doesn’t have support for some parts of the .NET framework 3.5 like Windows Presentation Foundation. There are not plans for implement them either.

    Language integrated queries are not such a new thing. Other languages simply call them in a different way. For example, Python calls its query system “list comprehensions”. I wrote a blog post comparing the two systems (http://wiki.freaks-unidos.net/weblogs/ceronman/python%20vs%20csharp%20querys%20part%201)

    What is interesting about PLinq is that it executes the query taking advantage of multiple CPUs or multicore CPUs. Multicore CPU’s are not “future’s hardware”, they are present in almost every new computer. Moore’s law ended up years ago. My two years old laptop has a multicore CPU and most software only take advantage of a half of its full power.

  2. cibertito Says:

    Hello Ceroman, and thank you for your feedback. You are giving me a lot of hints about things I had no idea. What I love about my blog, is the way I can meet another people with my interests, people like you🙂
    Thank you again for comment on my blog and for teach me many things!

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: