[nanomsg] nng state of the repository year end 2017

  • From: "Garrett D'Amore" <garrett@xxxxxxxxxx>
  • To: "nanomsg@xxxxxxxxxxxxx" <nanomsg@xxxxxxxxxxxxx>
  • Date: Thu, 28 Dec 2017 02:12:17 +0000

Hi all,

I wanted to give a sort of state of the repository update for nng.  (nng is
the next generation rewrite of nanomsg in C — I think of it as “nanomsg
next generation” — hence “nng”).

We have made some real progress recently — as nng has acquired HTTP and
WebSocket support.  Performance optimizations and statistics aside, this
was the last major functional gap for nng relative to nanomsg.  There are
still bugs (I noticed that Windows is segfaulting the HTTP code for
example), and there is still a lot to do, but at this point I feel
confident in saying that NNG is quickly achieving a level of usability that
I think will shortly surpass nanomsg.  I expect in the coming week or two
to finish a couple of residual items (fixing those Win32 bugs, and getting
TLS enabled for websocket should happen in the next day or two at most),
and then I’m going to release a beta of nng.  (Recall nanomsg itself was
beta for years!  I hope for nng to have a much shorter beta period, with a
higher level of quality and stability far far sooner.)

The biggest gaps after these cleanups and fixes are performance
improvements, and documentation.  That will probably take some time
(especially the docs.). I am interested in having other participants at
this point, so please let me know if you want to contribute. (There are
opportunities to contribute development, documentation, testing, and
financial resources, all of which help ensure that nng will be the best it
can be.)

I also want to expose public APIs for the HTTP and websocket client and
server code, which will permit using that code to build generic web
applications.  Most notably I expect that folks may be able to use this to
create REST services and clients that communicate to other
nng/nanomsg/mangos based services.  It will also be possible to serve
static content (JavaScript files, etc.) so that a mobile or web app can be
served from the same process that offers underlying nng service.  The
effort here is mostly crafting elegant APIs to make this fun and easy to
do.  (A side effect of this is that some developers may start using nng
just to access it’s web APIs.  That will be an interesting development if
it occurs.)

With the websocket code that I’ve already pushed, it is now possible to
create a single websocket service on a single TCP port, and have multiple
nng sockets located on that port, using either the HTTP path or virtual
host (Host: header in HTTP) to discriminate between different sockets.
This was a major short coming in the nanomsg websocket code, and nng
addresses it directly.

There’s a bunch of stuff I still have planned for 2018 — so I’m looking
forward to making nanomsg *the* distributed messaging framework of the
future.

I want to take a minute to give a special thanks to Capitar IT Group BV,
who have generously sponsored the recent work on nng, and continue to
sponsor it.  I love working on free software, but it’s good to be able to
pay the mortgage and grocery bills, and thanks to Capitar I can do both.

Also, if there are things you want to see in nng or related systems, or you
need custom development, or integration advice, or just general commercial
support, I’m pleased that my company Staysail Systems is ready to assist
you.  Please drop an email with your needs to info@xxxxxxxxxxxxx for more
information.

Thanks to all of you for your support throughout 2017, and please accept my
best wishes for a happy, healthy, and prosperous 2018!

 - Garrett

Other related posts: