This is incredible news. Congratulations to Igor and the rest of the nginx team.
Does anyone know if the model of open-source with a consulting/premium support company behind it works? I've paid 10gen for MongoDB assistance before, so I know there has to be some legitimacy behind the model. And, you know, MySQL.
It's tough. Linuxcare, where I worked in the dot.com days, wanted to be the support company for open source software, but they got derailed by ... other issues.
Most of the 'successful' open source companies are not just straight up service outfits. Redhat, for instance, has a model where you must buy a subscription, or you don't get support. In fact, you can't even use Redhat if you don't buy a subscription. They do this with some trademark trickery, which creates some of the artificial scarcity that open source software lacks.
People's time, is of course scarce, but services can be difficult to scale, as doing so requires people/management skills much more than actual technical expertise, or some kind of product. Also: to be profitable, a services company should spend as much time as possible billing for services, which may come into conflict with time spent on things like building a product that is then given away.
There are two main models -- we could label them the "Redhat" and "MySQL / Qt" models.
The Redhat model establishes a brand, often the original source for the product / project and uses that to market their expertise. Redhat is primarily a support and consulting organization. If you want to run an SAP system on Redhat, for it to be certified (and hence supported, which anyone buying an SAP contract will want) it has to be on Redhat Enterprise Linux with the support contract that goes along with that. In this case support can easily go all the way up to e.g. patching the kernel / glibc / whatever, and Redhat can charge a premium for offering that kind of in-house expertise.
The MySQL / Qt model is a mixed proprietary / open source model. They offered their libraries under the GPL (instead of the LGPL, BSD or other more permissive licenses) meaning that if you wanted to be able to distribute their libraries as part of a proprietary application, you had to pay for a license.
Since nginx is BSD licensed, I assume they are going for the prior.
Qt is under the LGPL. So long as you do not modify the main libraries you are free to link against it with a proprietary app and can distribute the binaries so long as you also provide source when asked.
This is what the FSF has been preaching for years. Their claim is that Free Software is the most capitalistic of them all: the consumer gets a choice in who supports it, and anyone can open a support/consulting business. Red Hat is probably the most successful company running on this model.
It doesn't make sense to try to stuff software into socialism/capitalism boxes which essentially deals with ownership/distribution of scarce goods. Software is not scarce at all.
In a way open source is perfectly socialist: There is almost perfect shared ownership of the production means (the software itself is free, the means to create new software - your brain and a computer that can run Linux - is well within the reach of anyone just moderately motivated.).
On the other hand, it's perfectly capitalist, libertarian and free market: You alone own what you produce (provided you alone created it). No-one can tell you what to do (unless you let them) and it's hard to imagine a field where it is easier to become your own boss. Competition is fierce, creative destruction rules, the entire field surges ahead at a blinding pace.
I dunno about the rest, but last I heard (sometime last year, I think) Canonical hadn't made it to break-even, so I'm not sure one can use it as a "working" example yet.
I have been researching this because there is a product for a start up I am involved with for which I am considering open source as well. It seems that paid support/free software open source models work in fields where there is an established custom to pay for support. This works for both desktop and server OSs, as most enterprises are trained to pay for OS support (thanks to Microsoft) and in databases where enterprises are used to paying shitloads for support (thanks to Oracle) and other enterprise software.
Will it work for webservers? Probably. Usually companies that use webservers are supposed to have capable webmasters, but once a company becomes large enough the biggest motivation of its executives becomes to cover their asses, and at that point they will probably start paying for support.
Unfortunately, this model will probably not work for our software because we are trying to make it a zero configuration zero support product. The paid support/free software model is a bit of a perverse incentive as it rewards products that are more difficult to use and configure.
I don't know that it's quite as sinister as incentivising products to be actively anti-user friendly.
If you think about it, the only products that are typically supported via contract seem to be extremely sophisticated, large, or cornerstone products. Making such products OneTouch-EZ is likely a waste of everyone's time and resources, because you have to hamstring the product and spend a ton of development effort making it idiot-proof, when you could have just been making it better instead.
You are right, it is not really sinister and I never suggested it was. It is just unfortunate that you cannot go the open source route if you are not within a certain range of products.
I don't see a billion dollar business here, but I'd imagine a stable of consultants and the growing power of the nginx brand will be quite profitable for Igor. Best of luck and thanks for saving all our asses!
XenSource, SpringSource and JBoss all sold for $400m+. You definitely need to have traction in the market and a product that is loved by enterprises to make that big of a business though.
Thanks! Igor's email is actually quite simple. You take igor then add this @ then his surname and it all is ending in dot ru :) If it's all too complicated, follow us @nginxorg and I will DM Igor's contact. Alternatively there's an active list here http://nginx.org/mailman/listinfo/nginx
I really wish he would not throw away Windows as a platform, considering Apache.org win32 builds make up more than 50% of their downloads. Even MySQL downloads in 2009 where something like 60% win32 and that was 2 years ago.
There is so much potential here that not having good Windows builds basically means you're missing out an extra 30% of production systems and 70% of development system. As in: you could double your numbers easily.
There's a lot of features that unix systems have that Windows does entirely differently, or not that all.
To accommodate that, he'd need to either write high-level interfaces on top of things and/or use the subset of features supported across all platforms.
We already have Apache ;)
I like NGinx because it's willing to say "Screw marketshare. I'm trying to make the best server for This use-case, and everyone else can bugger off."
You end up with platform-specific features, behavior and bugs, compounded across multiple pieces in the stack. You also end up with conflicting design decisions.
In my case, I wanted to use Apache & Python, but the recommendation is for a threading Apache on Windows, but forking on Linux (allowing e.g. mod_python).
To be cross-platform, I ended up going pure python webserver at the cost of performance and then had to deal with divergent cpython threading behavior, as well as postgres win32-specific issues.
On the other hand, it's not worth it if it takes more than double the effort to maintain Windows support. You can increase your market by 2x and still lose if it requires 3x the effort.
Furthermore it's probably on the OS installation disk, so you don't download anything that specifically marks your installation of Apache at all aside from updates.
I believe nginx users are more likely to build nginx from source than apache considering that nginx modules need to be specified at compile time and the more you add modules, the more your performance might suffer (unless this has changed lately).
This is probably why there are many nginx packages in ubuntu repositories (nginx-light, nginx-full, etc.).
The main problem with Windows is the lack of epoll-compatible high-performance socket API. It has something called IO Completion Port API but it is quite different from respective #nix APIs and for that reason it is very hard to wrap it into something that resembles epoll/kqueue/etc interface. This in turn means that platform abstraction cannot be done at the socket API level and needs to be pushed higher up.
Many #nix devs would find the very idea of such effort repulsive -- their light and elegant code suddenly needs to be mangled and obfuscated with unnecessary abstractions to support that godawful operating system. And I can't say I can blame them.
This would be resource sink for reasons outlined by my sister comments. Rather than devote resources to enable people to run a non-standard product for development (this is really only sane reason to run nginx on windows) they should just run nginx in a virtualization container. VMWare Player is fast and free. No work has to be done to support this use case.
Too much wasted effort is put into open source projects to support windows. This is isn't about not supporting Windows because of MS. But by not being Unix, it causes too much perturbation for little gain that can achieve through more correct methods (virtualization).
There are also deep cultural differences between Unix and Windows; how many people want to straddle both worlds? If you actually like Windows, wouldn't you want software that's Windows-like instead of stuff ported from Unix? The community is probably big enough now to support a Windows-specific open-source Web server.
And that server is not nginx. It is designed for Unix, it isn't designed for windows. The current apache has an arch much more amenable to running on windows.
I would guess a large portion of those are devs who are running windows but deploying to linux servers. Think php or java - that is a common use case in those circles.
The windows nginx code runs fine, compiling it on the other hand doesn't look easy. Unfortunately that's the only way to get modules into nginx. Committed a client project to using it as an cross platform application server, without realising that... oops.
I was reading some of his other comments. He came across as a particularly "interesting" guy. He also claims that NSA has had access to quantum computers since the 90s. My observation is just to qualify your statement.
He come across as a fruit basket if you ask me; Conspiracy theories aside, when he dissed libevent and libev[1] on his own forum [2], the author of libev took time to reply and it became pretty apparent that this guy does not know a whole of lot of what he is talking about. He has also taken several stabs at Igor and Nginx and when Igor politely pointed out that g-wan actually use more syscalls than nginx for the same request - meaning that g-wan user-land code basically does nothing since it apparently is faster than nginx, he went on a crazy rampant trying to explain away the fact.
I have no expertise in these areas, but let me point out that you didn't give an example of where you got the idea that the gwan author was not knowledgeable enough. If this was so apparent to you, then it should be easy to enumerate your concerns.
In addition the gwan author continues to release detailed benchmarks against all competitors, in which Gwan always leads. Nginx and others do not do that.
I don't know what your criticism is supposed to accomplish, but I hardly think the number of syscalls matters when Gwan is still faster.
I'm not defending the guy and certainly not his attitude but I just don't agree with how you laid out your criticism.
The number of syscalls most definitely matters. Syscalls define what the application actually does on the system. Whenever an application opens a file, write or read it is a syscall. Syscalls are expensive and if you want to write a fast server you want to minimize these calls as much as possible. http://en.wikipedia.org/wiki/Syscall
The author of gwan sits behind his closed source application and use benchmarks "authoritatively" to criticize open source competitors. This is very bad form as there is no way for these authors to investigate and criticize the gwan code in return.
However, one can use trace to investigate the number of syscalls gwan uses for a known operation (e.g. serving a small static file). If gwan was the fastest server out there one would of course expect that it uses the fewest and absolute minimum number of syscalls of all servers. When it turns out that it doesn't, the author of gwan has a explanation problem.
Add to the above premise that gwan does not implement HTTP/1.1 and hardly does HTTP/1.0.
Before we conclude, lets look at what a web-server or application server does. The following abstract loop basically define such a server:
while true
read request
<process>
write response
end
If you skip or minimize the <process> part, any newbie programmer can write a server that can handle a large amount of requests per second. And this is exactly what gwan does, while the other servers implements the full HTTP/1.1 state machine. It is in the <process> part that the work of a server, skills and excellence can be found.
Gwan is a classic example of "The Emperor Wears No Clothes" and the so-called benchmarks are a joke as it compares a naked gwan with a magnificent clothed emperor such as nginx.
I don't see how that qualifies anything. Lots of very smart people have a few very crazy ideas. It doesn't change the fact that they're still brilliant in their area of expertise.
Why would that be totally unlikely? It's definitely possible in theory, and we know publicly a quantum computer has been successfully implemented, albeit for very short amounts of time and very small numbers of qbits.
In a slightly related vein, does anyone know if there's an official "donate" page? For all the help that nginx has been, I'd happily contribute some money to the author(s).
Given that anyone donating is presumably using nginx somewhere would be very easy for them to restructure this as "paying a voluntary license for the use of nginx at a $ amount to be decided by the customer"
Does anyone know if the model of open-source with a consulting/premium support company behind it works? I've paid 10gen for MongoDB assistance before, so I know there has to be some legitimacy behind the model. And, you know, MySQL.