Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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.

It's extra adaptation and growth.

*Windows builds exist. http://nginx.org/en/docs/windows.html



I'm actually really glad he doesn't.

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."


I second this based on hard personal experience.

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.


"...considering Apache.org win32 builds make up more than 50% of their downloads."

That's not very accurate. On any other platform, you use a package manager to install Apache.


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.


It's part of the base install for every Mac OS X computer too (under the guise of "web sharing").


I wonder what percentage of *nix Apache and Nginx users, where a managed package is available, still download and build from source.


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.).


I did/do respectively.


Most of the stuff that makes nginx work/fast aren't available on Windows. A lot of it is pretty much reliant on a unix api.


in other words: IOCP is very different from epoll/kqueue


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.

Oh look, http://httpd.apache.org/docs/2.0/platform/windows.html


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.


Could the work being done for porting nodejs to windows[1] be used for a nginx's windows port in any way ?

[1]https://github.com/joyent/node/tree/master/deps/uv




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

Search: