To elucidate a few more points from people's responses so far:

*         All the python socket.io backends are immature projects, and there's 
a GAPING flaw with them all: WSGI (the interface between web servers and 
Python) doesn't support the handshake features that websocket communication 
requires. The WSGI standard was drafted before websockets was a thing. There's 
a gevent lib that supports it, but it's also immature and doesn't play nice 
with Apache, etc. Deployment will get *really* iteresting trying to use 
socket.io with Python. I've tried. ;-)

*         Pypy *is* fast (I know several of the main contributors) but it's as 
big a decision to use Pypy as it is to use node, but that only affects 
performance. It doesn't make Django any more suited to real-time communication. 
Pypy is also a major new dependency that's not packaged and it changes a lot of 
things. It's also used by several orders of magnitude fewer people than node.js 
currently, so security there is a whole different concern.

*         Tornado and Twisted are both non-blocking web servers in Python, but 
both projects have serious peculiarities which we could dive into separately. 
And ultimately they're not tools any of the Horizon contributors I've talked to 
so far are interested in working with, which in an open source community is 
pretty much a death knell for that solution.

*         John P's point about Javascript already being a core language used in 
Horizon is well taken. I get the "server-side javascript is different" mindset, 
but language-bashing for the sake of "I don't like javascript" is no more 
helpful than Python people bashing Ruby. The fact is that Javascript as a 
language is extremely similar to Python in its syntax and construction (I often 
write my JS to PEP8 standards), and though it's not as readable as Python (what 
is?), there's no reason JS code is inherently bad. Bad programmers write bad 
code. Bad frameworks encourage bad code. Node.js suffers from neither.

*         I'm 100% in favor of code-bundling only being a short-term solution. 
When a reasonable number of distros package things like LESS, dropping our 
bundled version in favor of a properly-versioned package would be awesome. The 
fewer things to maintain the better.

All the best,


-          Gabriel

From: openstack-bounces+gabriel.hurley=nebula....@lists.launchpad.net 
[mailto:openstack-bounces+gabriel.hurley=nebula....@lists.launchpad.net] On 
Behalf Of John Postlethwait
Sent: Friday, May 25, 2012 9:23 AM
To: Simon G.; Jay Pipes
Cc: openstack@lists.launchpad.net
Subject: Re: [Openstack] Fwd: Nodejs in horizon

Hi Everyone,

Sorry if I've missed anything below, this thread has become rather fragmented 
and messy (at least in my email clients) but I will try to address the main 
points I have seen so far:


  *   Just so that everyone is aware, the lessc parser that is bundled in 
Horizon, while executable, is NOT a binary. It is, in fact, just a 140 line JS 
file, you can see the code here: 
https://review.openstack.org/#/c/7367/4/bin/less/lessc
  *   The reason I have bundled it within the Horizon code, as Gabriel 
mentioned, is to assuage any version mismatches or install issues with LESS 
itself that may arise from having yet another dependency on top of NodeJS that 
needs manual steps to install. Also, the LESS package that exists for Ubuntu is 
a year out of date, and other distributions do not even have packages for it. I 
would love if we could rely on the OS' packages to assuage this dependency, but 
we cannot, so this is the simplest and best-working solution I could think of. 
It will be no more difficult to maintain than jQuery, or Bootstrap, in the 
Horizon code-base...
  *   As for distribution support, Node can be installed on just about 
anything, see here: 
https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager
  *   As to the concerns about "it not being Python" or  "JavaScript has been 
abused." Well, all I can say to that is no, it is not Python, and yes, some 
developers write terrible and abusive code with JavaScript. I'm sure I could 
find horrid/abusive Python somewhere as well, but doing so would not preclude 
our reasons to use it in OpenStack. Misuse of a tool is not a reason to fear 
the tool itself, if that were so none of us would use any language, ever. Not 
to mention, we already use a ton of JS in Horizon... I'm not introducing 
JavaScript to Horizon for the first time or anything here.

I'm sure I've missed some good points, but this thread is a mess and is 
difficult to sort through... :P

-John Postlethwait

________________________________
From: 
openstack-bounces+john.postlethwait=nebula....@lists.launchpad.net<mailto:openstack-bounces+john.postlethwait=nebula....@lists.launchpad.net>
 [openstack-bounces+john.postlethwait=nebula....@lists.launchpad.net] on behalf 
of Simon G. [semy...@gmail.com]
Sent: Friday, May 25, 2012 7:40 AM
To: Jay Pipes
Cc: openstack@lists.launchpad.net<mailto:openstack@lists.launchpad.net>
Subject: Re: [Openstack] Fwd: Nodejs in horizon
Maybe I've misuderstood something, but I've tried to give examples of other 
backends than node.js which can make use of mentioned before 
socket.io<http://socket.io> and can be used to implement realtime 
communication. I just wanted to minimize use of node.js. Hmm... I'm still 
talking about realtime communication, but it was only mentioned as an example 
and it's not even listed as a feature anywhere. So maybe my part in this topic 
is pointless. I'll be silent from now :)

Cheers,
On Fri, May 25, 2012 at 3:20 PM, Jay Pipes 
<jaypi...@gmail.com<mailto:jaypi...@gmail.com>> wrote:
On 05/25/2012 08:41 AM, Simon G. wrote:
Hello,

I don't want to be rude, but fast research about point *3c* and sockets
=> PyPi search
<http://pypi.python.org/pypi?%3Aaction=search&term=socket.io&submit=search>

 * http://pypi.python.org/pypi/SocketTornad.IO/
 * http://pypi.python.org/pypi/TornadIO2/0.0.3 ,
   https://github.com/MrJoes/tornadio2
 * http://pypi.python.org/pypi/django-socketio/0.3.3
 * http://mrjoes.github.com/2011/12/15/sockjs-bench.html


How mature are those projects? I don't know. I'm not an expert in
python. I'm just trying to find alternatives to Node.js if almost
everything is in python. I'm just testing Openstack and right now I'm
trying to add something to nova, but I really like horizon and if it's
possible, I'd like to avoid node.js. I'm not a fan of this technology
even if it's popular and fast, because I just have some doubts about
Javascript and its maintainability.

Hi Simon,

socket.io<http://socket.io> is a Javascript library :) 3 of the 4 projects you 
reference above use socket.io<http://socket.io>.

Best,
-jay


_______________________________________________
Mailing list: 
https://launchpad.net/~openstack<https://launchpad.net/%7Eopenstack>
Post to     : 
openstack@lists.launchpad.net<mailto:openstack@lists.launchpad.net>
Unsubscribe : 
https://launchpad.net/~openstack<https://launchpad.net/%7Eopenstack>
More help   : https://help.launchpad.net/ListHelp



--
Semy


_______________________________________________
Mailing list: https://launchpad.net/~openstack
Post to     : openstack@lists.launchpad.net
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp

Reply via email to