Hacker News new | past | comments | ask | show | jobs | submit login
NGINX Open Source: Reflecting Back and Looking Ahead (nginx.com)
132 points by SkyRocknRoll on April 14, 2015 | hide | past | favorite | 41 comments



Nginx Plus seems like they took a lot of the obvious feature upgrades, some which look fairly easy (remove cached item) and put them in a pay wall. Nothing wrong with that, just feels weird. And the pricing is enough to pay for a Windows license, not that IIS is even close to nginx (it's reverse proxy capability is terrible).

I'm sad to hear about JS; I thought the work with Lua was going well and would be a better candidate. Maybe I misunderstand the situation.

Nginx is one of those great tech that just makes so much more easy in my life.


> Nginx Plus seems like they took a lot of the obvious feature upgrades, some which look fairly easy (remove cached item) and put them in a pay wall.

I had a chat during an interview with folks from the Nginx team recently and definitely got the impression they are putting a lot more thought into the separation of Plus than this. One of the key features is the ability to add/remove backends at runtime, as well as, IIRC, some failover capability that makes Nginx Plus a potential competitor for things like F5.

Disclaimer: I am not associated with Nginx, except that I shook some folks hands, and I might have remembered something wrong. They went out of their way to illustrate to me, and I think they did, that Nginx Plus is more than just 'open core'.

If you read the prior article, linked in this one, the original author of Nginx is allowed to expound on this himself. An experienced Ops team can assemble a number of open-source components and custom code to accomplish some of the more advanced functionality in Nginx Plus, but I think it's saving more than a couple hours of customization. :)


> If you read the prior article, linked in this one, the original author of Nginx is allowed to expound on this himself. An experienced Ops team can assemble a number of open-source components and custom code to accomplish some of the more advanced functionality in Nginx Plus, but I think it's saving more than a couple hours of customization. :)

Can you elaborate? I'm able to do almost everything with haproxy, including hot reloads, client-based SOA, frontend/backend traffic. I'm not sure what Nginx Plus gets me on top of that.

Disclaimer: From an ops team.


Lua is a great scripting language in its own right, but the trouble is it's not JavaScript which at this time has an extraordinary amount of momentum behind it.

You can use JavaScript inside Postgres, for example, which makes it extremely versatile as a glue language for back-end services.

Lua has nowhere near the traction or support. Is there a C++ to Lua compiler that produces performant code when using an asm.js-like layer? Is Lua Rocks anywhere near the breadth and depth of NPM?

I don't know a single Lua programmer, but I can't throw a rock without hitting someone who knows JavaScript. It's something you'll pick up eventually even if you don't want to.


I didn't know a single Lua programmer, and then one of our software developers wanted to write some code to run in Nginx, and two hours later I knew a Lua programmer, and his solution works great in heavy production use. Seems pretty easy.


Lua is an overall higher quality language than JS. It feels like one of those "the world would be a slightly better place if..." situations, if Lua and JS were one language, more like Lua than JS.


> Is there a C++ to Lua compiler that produces performance code... ?

This statement makes zero sense. It's like someone saying Forth is silly because it doesn't have an asm.js-like layer.

Clearly you don't understand the use cases of Lua.

https://sites.google.com/site/marbux/home/where-lua-is-used


What I'm trying to show here is that JavaScript is also a JVM-like runtime, so it's possible to "cross-compile" things to JavaScript and get a lot of functionality that way.

Lua is a convenient, easily embeddable scripting language, but that alone does not make it the best choice given how complicated the world is.


So now people are going to "transpile" their nginx configs? (And still not be as fast as Lua?)

In nginx there are two places for scripting that I know of. One, to replace the somewhat awkward config stuff, like the "if" statement. Two, to enhance HTTP requests/routing a bit. I doubt people are writing long applications and I hope nginx isn't trying to become an application server.

I just can't see how a weak language like JS makes any sense for such an environment. Maybe that's why the nginx guy says he's making his own JS VM, to get it working well enough for nginx.


It's a glue language. I don't expect people to transpile things, but it's an option on the table.

JavaScript might be "weak", but it's strong enough for that sort of task.

There's a lot to hate about JavaScript, but ubiquity and support is not one of those things.


JS is definitely more popular, but you can run Lua inside PosgreSQL as well, and I fail to see the point of asm.js on the server.

You can pick up Lua in a day if you can already program, by reading Roberto Ierusalimschi's Programming in Lua.


Many applications (e.g. Redis) are designed to work with Lua scripts out of the box. If you label yourself a "javascript" or "lua" programmer, that is a bigger problem imo than which scripting language you need to use.


I'm not going after labels here, I think programmers should be able to tackle new languages, however libraries don't magically switch from one language to another.

If you've got a lot of JavaScript code, or you want to use NPM, you can't use Lua.


> I'm not going after labels here, I think programmers should be able to tackle new languages, however libraries don't magically switch from one language to another.

What does javascript have in NPM that is so awesome it isn't easily replicated and/or already existing in a lua implementation?

I honestly don't know a single NPM library I'd use that I don't know the Lua equivalent or Python equivalent or PHP equivalent. :/

> If you've got a lot of JavaScript code, or you want to use NPM, you can't use Lua.

Well, yes, if you have an existing Node.js codebase you want to port its great.

However, you made the original claim that:

"Lua has nowhere near the traction or support."

Lua is in Postgres, Redis, Nginx [already supported!]

You've got Cassandra lua implementations that try to boilerplate an API for you: https://github.com/jbochi/lua-resty-cassandra

You've got a NPM style installer in the form of luarocks: https://rocks.moonscript.org/

I really just don't understand the claim that Lua has "nowhere near the transaction or support". Is there even one cache [e.g. Redis] that supports Javascript? I can't name any.


> I honestly don't know a single NPM library I'd use that I don't know the Lua equivalent or Python equivalent or PHP equivalent. :/

This requires learning the new library, porting code you've already written over to the new library, testing the new code using a totally different test framework. Non-trivial.

Lua has a lot of support, don't get me wrong, but it has way, way less support than JavaScript. To say otherwise is seriously dishonest.

I am not in any way equating "support" with "superior".


Lua is already stupid fast, without needing super complicated runtimes. The language is easy and sane. I'm not a Lua programmer but I use it (even in a E9-1-1 related application) just fine.

This sounds like using JS just for ... technically unacquainted people to get their buzzword hit. Like XML was a while ago.


> I thought the work with Lua was going well

The lua support is GREAT, and make a lot of complex stuff (standard outside authentication on multiple apps) simple as using a 20 lines lua script.

Let's hope LUA doesn't fall to second class citizen.


Well it kind of is from the corporate point of view, as it is not "theirs", it is developed externally. In an open way, and has an open ecosystem of people who are probably not going to become Nginx customers.


just to nitpick: Lua is not an acronym. It means Moon in Portuguese.


> Nothing wrong with that

Quite arguable. Creating a paywalled version of a FLOSS product like this has never been seen well by the FLOSS community (especial when there's been so many contributors) and has actually been subject to a lot of controversy.


i guess tengine is getting more and more relevant then:

https://github.com/alibaba/tengine

(though to be fair most work on new protocols seems to be from nginx itself)


I've been digging the last few months of blog posts that nginx has been putting out, especially the articles around microservices. They're very well written and have inspired our company to think differently about a few of our applications. When we were offered the opportunity to talk with nginx directly for a private webinar, we were left with a very underwhelming feeling. It may have been the specific sales person, but they couldn't explain how nginx's paid services could help our company.


Wow, that's disappointing. I'm happy to facilitate another conversation (including a technical staff member to walk through your architecture) and see if we can articulate this better. If you're interested, please reach out on twitter and we can exchange email addresses @sarahnovotny.


The question that you should always ask before going down an proprietary-add-ons business model is, what are you going to do the day someone develops the same functionality for the open source product, in a fundamentally different way? Are you going to rip out those parts every time you release your proprietary version? Because your customers are paying for those parts to be very stable.


Just a guess, but past experience with a different project tells me they won't accept contributions that will conflict with their proprietary solution.


td;rd: interesting things will move to the premium version, JS VM to power future versions, pluggable module API coming


That's not really accurate, and you kind of conflict with yourself. The JS VM will be part of Nginx Open-Source, as will the Pluggable Module API.

Nginx Plus is a platform, not just a special version of Nginx open-source, where Nginx is a core component.


That's not how I read his comment, though re-reading his comment I see how you read it that way.

I read it as a list of hi-lights from the article, and I assume that's how he meant it to be read;

  - interesting things will move to the premium version
  - JS VM to power future versions
  - pluggable module API coming


What I meant is, aren't those other features interesting things? I just think that saying "interesting things will move to the premium version" is a bit reductive. Rather than a TL;DR, it directly contradicts what is put forth in the article, and replaces it with what a lot of us might assume is the case if we hadn't read the article.

It may not have been meant to come across the way I objected. :)


> we’re beginning the implementation of a pluggable module API

This is the most exciting for me, as I'd much rather install from a package than have to re-compile from source.

I've figured out how to make that easier in Debian/Ubuntu: https://serversforhackers.com/compiling-third-party-modules-..., but having a command similar to Apache to enable/disable a module will be really nice.


It's annoying that they took SPDY support out of Community and put it into Plus. Want updates? Too bad, you gotta recompile.


Where does it say that? The HTTP2 blogpost says they will bring an Open Source version in 2015 that supports HTTP/2 ?


But isn't SPDY kind of deprecated already in favor of HTTP/2 ?


Citation? I just installed nginx 1.7 on Ubunutu using a PPA and nginx -V says "--with-http_spdy_module".


This is very strange...

Just tried it with Nginx 1.7.11 from release and then mainline Nginx 1.7.12 and on both I got nginx -V to output --with-http_spdy_module

But when I put in "pagespeed on (and the rest of the settings) into http { in /etc/nginx/nginx.conf

I get in /var/log/nginx/error.log: unknown directive "pagespeed" in /etc/nginx/nginx.conf:56

How is this possible?

Edit: I finally figured it out... the Nginx configuration on https://developers.google.com/speed/pagespeed/module/configu... it out of date. It's much simpler to setup spdy now. Simply add "spdy" to the nginx server config like this: listen 127.0.0.1:8082 spdy;


Which JavaScript VM are they going to use?


From the article:

> I have a working prototype of a JavaScript VM that is highly optimized for NGINX’s unique requirements and we’ve begun the task of embedding it within NGINX Open Source.


I am a bit surprised it isn't V8, considering its high performance and relative success in Node and IO.js



That's why I asked: it's unclear to me if they wrote their own or used something like Duktape.


No longer using nginx after plus became a product.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: