Why Python should adopt the mono runtime

So I thought about this on my drive back from the gym today. What I believe Python needs for world domination is to drop its C runtime and adopt the mono runtime as the new “blessed by Guido” implementation. Why you may ask? It would bring together one of the best languages ever developed with one of the best runtimes in the world.

To put it differently, it gets the python guys to focus on the core language (which they are amazing at) and gets them away from being runtime developers (which they are not so good at) but, instead, Miguel and company are.

Think about it, Python users would get instant access to all of the CLI libraries (and vice versa), a fairly sane way to port C libraries to the CLR and instantaneous ass-kicking performance. For the mono guys, it would give it a jazzy new language to kick start the next generation of apps.
Don’t get me wrong, I’m not saying that there’s anything particularly bad about C# but, just like Java, in this day and age, it makes you feel like you are developing in 90′s technology.


Why forks don’t matter:

Before I get flooded with emails about IronPython, Jython, PyPy to IL compilation and all other nonsensical edgy stuff being done by people with too much free time, I’ll give you my “forks don’t matter” speech.

Let’s say If you and I were friends and I came to you and said…

Me:

You won’t believe it… I just bought last weekend’s Cards vs Eagles football on ebay, it’s freaking awesome!”

You:

Well, I have a football too, got it at WalMart and it is works just like yours

[Me punching you in the face]

But that’s the point, a functional copy of what I have, is not what I have. (IronP|J)ython is not Python, it’s something that behaves like Python but, fundamentally, it will never be the original. In practical terms, that’s how Linus can manage thousands of forks on the linux kernel and still hold the “one true” branch of the kernel – the forks don’t matter.

12 thoughts on “Why Python should adopt the mono runtime

  1. Insightful. I just heard about all that Mono stuff, maybe it’s time to dig it a little bit.

  2. All of your remarks about IronPython and Jython would apply to a new “blessed by Guido” implementation of any stripe, especially one based on the CLR. It would have different runtime behaviour, a different extension API, etc. Anything that isn’t CPython will “never be the original”.

  3. I agree, in parts.

    The Python guys can’t simply drop their work and adopt a new runtime, because they are simply not in control of mono, they can’t decide which direction to go, and that’s a really important factor. The language and its core runtime are bound together.

    Besides the fact that people are afraid that Mono is a time bomb waiting to go off in terms of licensing. Are the Python community willing to drop all their current 100% license-secure code and risk their work? I can’t see this happening anytime soon…

    There are plenty of ways to work around it, and I’d love to see this idea becoming reality some day. But I think it has to be done in the Pythonic way: Done right. And it’d take time.

    Being realistic, the closest thing I think we could happen to see regarding this is a sort of Python and Mono interoperation, and the official Python giving Mono a title like “oficially supported runtime”, or something like that. But I really don’t think their are going to drop CPython.

  4. We could also say that Mono behaves like .NET, but that fundamentally it will never be the original no? Or maybe that IronPython and IKVM do matter because it make it possible to make different environments work together.

  5. Even more fundamental:

    Mono *aims* to be portable.

    However, python *is* portable.

    I mean, last time I checked (that is, 3 weeks ago), Python 2.5.1 compiled out of the box on AIX 5.3.
    I tried (believe me, I want it!!!) to compile mono in AIX………………………….

    You get the picture.

    I cannot just ‘loose’ python because I’m on AIX and python gratuitously moved to a less-portable runtime, can I?

  6. I use python. I love python. Perhaps irrationally so…but you lost me at “What I believe Python needs for world domination…”

    I say move it to Parrot. that way I won’t have to deal with it in my lifetime ;-)

  7. “Don’t get me wrong, I’m not saying that there’s anything particularly bad about C# but, just like Java, in this day and age, it makes you feel like you are developing in 90’s technology.”

    How so? I personally think that any dynamic language is a bad choice for a big project. I was writing one in Ruby, and although writing was simpler and quicker, switching to C# significantly cut down debugging effort (majority of programmer mistakes found compile-time), making development in fact much easier.

    Ok, here’s the point: C# is really NOT old style language, it’s just different style language. Any objections?

    Anyway, I’m not using python because I once looked into Gajim’s source code. That certainly scared me away.

  8. Seth: Python is *actually* portable. But I wonder: does it has ever have a JIT?

    I mean, you can have an interpreter (like Perl, and I could say Python does have one as well), which doesn’t generate native code, and, besides other things, only need to be ansi C compatible, and using POSIX libraries.

    On the other hand, providing a JIT -like Mono does-, which actually generates native code per platform, doesn need to be tuned for every platform – this is the trade off between portability and performance. It’s sort of normal, and you have performance vs portability.

    Mono could have an interpreter instead of a JIT – but that would kill performance. Or it could have both an interpreter and a JIT, but that would be a lof of extra work – likely not worth the effort.

  9. I think that what really happens is that Python community doesn’t want to be “tied” to any other environment, that’s why they will always refuse to merge with Jython/IronPython/Boo/whatever…

    What they should really do is migrate to Parrot, the only VM for dynamic languages that should bring unity (interoperability) between Perl, PHP, Ruby, Python, etc.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>