11 comments

[ 2.8 ms ] story [ 37.1 ms ] thread
For the love of God, why Java when there is Python? ^_^
I downvoted you, but you're fairly new here so let me tell you why. This comment is fairly content-free; you don't make an argument for why Python would be a good choice, or why Java is a bad choice, or anything to make it relevant. This combined with the emoticon (which you seem to append to all your comments) is unnecessary, and you'll find that emoticons aren't well received here -- note that you see very, very, very few comments using them.
I didn't make any long arguments, assuming that so-called hackers are aware of absurdity of trying to manage an OS (some kernel modules utilizing an API implemented as a shared library) from a virtual machine which is, in its turn, implemented as an user-level process running under that same OS. And I'm assuming that these hackers are familiar with python's standard library and a long tradition of implementing system management utilities in Python since, at least, RH6.. ^_^

btw, thank you for explaining your opinion. It is much more civilized than silent down-voting by frustrated fanboys. ^_^

Wait, so "so-called hackers" are supposed to be aware of the "absurdity of trying to manage an OS [[...] from a virtual machine which is, in its turn, implemented as an user-level process running under that same OS." But this absurdity disappears when this VM running as a user-level process under that same OS is... Python. Is there something magical about the JVM that makes this absurd?
There are huge differences between JVM and cpython. First of all - Python isn't trying to be an isolated VM with its own, hardware-independ type system, complicated FFI which involves lots conversions, memory copying and reallocations and other crap called Native Interface. You need no servlets, containers and other useless abstractions. You're just loading a module (linked with a shared library) and calling necessary functions.

Of course, if you are getting paid (very well) just for lines of Java code (because technically incompetent investor believes in all that hype about Java and JVM) it makes a lot of sense, but don't even try to say that utilizing useless abstractions and thousands of lines of code to do primitive tasks is 'the right way' or even a competent one.

I'm a long-time Pythonista and there isn't enough money in the world to get me to write Java, but you're completely full of it.

Python is an isolated VM with its own hardware-independent type system, complicated and expensive FFI, etc. Ctypes has a beautifully clean interface, but it's certainly not cheap, and the JVM will crush Python in terms of performance in the vast majority of cases. Servlets? Containers? Why would you need these in this context -- you seem to be throwing out Java buzzwords to see what sticks.

Simply put, there's absolutely no reason why Java couldn't be a good choice here; that doesn't mean that it is implemented well in this case, but there's no reason why it couldn't be. Python, from an architectural standpoint, is by no means better suited than the JVM for this, even if the language and libraries are subjectively much, much nicer.

Servlets and containers are here because I saw them in the sources on github. ^_^

if the language and libraries are subjectively much, much nicer. - that is a huge mean - choosing appropriate tools for some particular task. ^_^

He does have a point although he might not have meant to. I've setup both Cloud.com's stack and the OpenStack for smallish private clouds and I have to agree with him. Java was a poor choice for the project and my experience of it (6-7 months ago, caveat emptor) was that it was riddled with bugs and suffered from more than a few bad design decisions. It's 200k+ lines, with very few tests (I'd wager on single digit coverage if I was a betting man), has a homemade ORM (why no hibernate?), the design of the instance image delivery system defies all human logic and there's no proper messaging queue anywhere to be found. Add to that colourful spectrum of inconsistencies and you end up with a lot of issues. However, I'm not saying that those issues are Java's fault, they clearly aren't. But, with any language choice there comes a culture and I don't think I'm being unfair when I say that I see these kinds of things more in Java projects than in Python. For comparison, the OpenStack is about ~70k lines (~30k of which are tests).
Have you noticed, that this point, which I have not meant to make, is very common, and situation you described - such complicated mess of layers and layers of useless abstractions, bugs and poor design decisions, is the description of a common Java project? And that description cannot be applied for most of other common languages, except PHP, which is much worse nightmare and a triumph of incompetence in itself.)))
This is an excellent move by Citrix. NASA had major issues with Eucalyptus being "open core" and not "Open Source" which was one of the main reasons they co-funded OpenStack. With Citrix moving to commercialize Openstack, having one less variant of the software stack will mean less confusion for their customers.
Explanation is rather confusing. Cloudstack is analogous only to OpenStack Compute and does not have specific storage part, right?