13 ms·
Redis for win32 and the Microsoft patch
- blub 15y agoI am not very familiar with webscale databases like this, but the reason for rejecting the patch is weak. I mean "even if you want to run your code under win32 systems what's wrong about installing Linux boxes to run Redis?". This is simply missing the point of cross-platform software...
- mythz 15y agoYou're missing the point of developing highly-tuned, quality, production-based server software. Redis is not you're average Java/.NET user-level application, it's one of the fastest NoSQL solutions in existence. @antirez wants to take advantage of the underlying POSIX platform and as such Redis takes advantage of unique features only available on *nix. His point is merging the patch increases the size and complexity of the project (whilst reducing stability) - detracts from his mission of making Redis run exceptionally well on POSIX platforms. He also highlights that Windows/.NET shops like StackOverflow have no problem setting aside linux servers to run host Redis servers in production.
- coffeemug 15y agoQuake is one of the most highly-tuned, quality, production high-performance software, and it runs on tons of platforms from Linux, to Windows, to even an iPad. High performance software is not incompatible with portability. Redis's performance (compared to traditional databases) comes from the fact that the data structures are maintained in memory, which turns out to be a really good tradeoff when your data set is small. That has nothing to do with POSIX, or unix. The point of contention is the fact that Windows does not have an efficient implementation of fork, which enables copy-on-write semantics. Redis uses that to periodically dump data to disk without blocking the original process. This is a really clever use of a feature unique to unix, but one man's cleverness is another man's limitation. Building cross platform software really forces you to examine your architectural decisions, learn about other platforms (and by extension, the limitations of your own), and your software always ends up having a better architecture when you're done with the porting process (in addition to being usable by more people). @antirez's arguments regarding complexity, additional testing, etc. make total sense, but your performance/stability argument doesn't hold water.
- mythz 15y agoAdding a layer of cross-platform abstraction (and forgoing platform-specific features) will degrade performance and increasing the size / complexity of a project does effect stability.
- tobiasu 15y agoAnd I thought there are many forks of Quake for each of the platform? Is there are "one to rule them all" distro? Also it's not that hard to #ifdef 42 graphic backends to a dead code base. It obviously becomes a nightmare as soon as you want to extend and evolve the core code.
- buff-a 15y agoQuake? This quake? http://en.wikipedia.org/wiki/Quake_(video_game) http://en.wikipedia.org/wiki/Quake_(video_game) What a wonderful argument in support of @antirez's suggestion that other people port and maintain it. In every case each port was done after the fact, into its own project. They may since have been reintegrated back as part of the source release (5 years later). But the core team certainly didn't do it. Carmack ported Quake to GL in '96 and IIRC that was used for a linux port. Again, not on main branch, not being committed while the team was working Quake 2. I've made cross platform video games and I don't find your opinion remotely credible. I've also ported video games from one platform to another. A game that was highly optimized for one platform required a complete rewrite of the graphics engine for the other. Companies like Naughty Dog and Insomniac, that can focus on a single platform, have a much easier time of it.
- bad_user 15y agoBuilding cross platform software really forces you to examine your architectural decisions Or it makes you to reevaluate your priorities and question yourself if you really want a half-baked multi-platform implementation, that tarnishes the brand and negates the advantages you had - like performance, agility and simplicity. Quake has different implementations for different platforms.
- davidw 15y agoI think his point is that redis will likely always be focused on Linux as a deployment platform: it is going to run better there. If people are signing up to use it because it's fast, what's the point of deploying it somewhere that slows it way down?
- antirez 15y agoIndeed it is already a non trivial effort to make sure that it will run fine under the major free unix systems out there, like *BSD... so our main target is Linux, but we try to do our best to make it working well on FreeBSD, NetBSD, OpenBSD and Mac OS X as well.
- Argorak 15y agoYes, its missing the point of cross-platform software. But redis is not intended to be cross-platform. The interesting part in antirez argument is that he seems to be a proponent of mixed-platform deployments, so that interoperability can be achieved on a different level.
- cloudhead 15y agoThe patch adds a lot more code than useful functionality, simple as that.
- axefrog 15y agoPlenty of developers learn a specific platform and are comfortable using that platform, setting it up and know the ins and outs of securing it. Yes, yes of course they should learn the other platform but really if you're trying to get a job done, you want to be sure you know what you're doing. Learning a different platform to a competent level is not really what you want to be doing when you're trying to implement production-ready systems under time and cost constraints. So when he says "even if you want to run your code under win32 systems what's wrong about installing Linux boxes to run Redis", I can't help but feel he's being a bit narrow-minded. If it were a valid argument, then why port any software to work under win32 at all? Why bother with node.exe? Why bother with Windows implementations of MySQL, MongoDB or PostgreSQL? In fact, lots of software starts out as Windows software and is ported to Linux. Why not just tell Linux users to get a Windows box if they want to run that software? I would suggest that the author revisit this viewpoint and consider why the majority of products with which he competes have chosen the platform-agnosticism route.
- rbanffy 15y agoIt seems you missed the part he mentions there is already a Windows-compatible fork that's better than Microsoft's patch (equally unsuitable for production use, less changes to the original codebase). So, you can already run Redis on Windows, if you are so inclined. I too don't like using VMs to develop, and that's why I use Linux for my work environment, but, if you want to have a production-grade OS and be able to run Windows software, VMs are the only way.
- antirez 15y agoI think that multi platform code makes sense for many kind of software, mainly for client software (an email client, a browser, and torrent client), but Redis is useful in deployments, where the developer has control about what to run when deploying software, and Linux has the interesting feature of being free and open source. But you said, there are other instances of win32 ports of system software like MySQL, MongoDB and so forth. I guess that they are interested in providing more value to their product allowing a larger diffusion, I'm not enough into marketing to value such a thing, in my opinion people running Apache or MongoDB under win32 for deployment are doing it wrong, and I don't want to help. But again, I just don't want to personally help an effort that is useless in my opinion, but I'm not either against such an effort. Redis is open source, enough people interested in making it working under win32? Perfect, as I said I'm open to help and recognize their efforts in the main project site, I just don't want to be involved. Life is too short to spend it developing something you don't trust.
- slig 15y agoHere's possible outcome: - Half-assed port for windows appears, with a big "NOT SUITABLE FOR PRODUCTION"; - Clueless programmers will simple google "redis windows", hit the first compiled version "redis.exe" and use it, eventually shipping it to production; - They'll then hit the official support forums and SO with "Redis doesn't work!!"
- va_coder 15y agoI find little sympathy for the MS world. How about a port of IE to Linux so I can test websites with it? How about the ability to install multiple versions of IE on Windows? I could go on....
- seabee 15y ago> How about the ability to install multiple versions of IE on Windows? http://blogs.msdn.com/b/ie/archive/2011/02/04/testing-multiple-versions-of-ie-on-one-pc.aspx http://blogs.msdn.com/b/ie/archive/2011/02/04/testing-multip... As you might expect it's using virtualization, but nothing that isn't included in Windows 7 Professional and up.
- est 15y agoIE relies on mshtml which relies on COM which is basically, well, core Win32. IE is also the largest OLE container.
- MichaelGG 15y agoBut that was a decision they deliberately took. At one point, IE had versions for UNIX and Mac.
- nknight 15y agoAnd Redis relies on POSIX semantics, which is... er... core POSIX? Microsoft does have a third option, you know. One many of us would love to see happen: real, first-class POSIX support in Windows.
- bad_user 15y agoBtw, you can run the freely provided virtual machines with multiple IExplorer versions on Linux with VirtualBox. Here's the script that will install them for you (works on my Ubuntu): https://github.com/xdissent/ievms https://github.com/xdissent/ievms
- ken 15y agoHave you gotten this to work recently? It looks like this script fetches the images that are listed on http://www.microsoft.com/download/en/details.aspx?id=11575 http://www.microsoft.com/download/en/details.aspx?id=11575 which they say "will shutdown and become completely unusable on November 17, 2011". Someone has reported this a couple days ago on their forum http://answers.microsoft.com/en-us/ie/forum/ie8-windows_xp/windows-vpc-hard-disk-images/c94982ca-5cc5-4871-972b-9d6988eaca4a http://answers.microsoft.com/en-us/ie/forum/ie8-windows_xp/w... but there's been no response. Other questions on that forum indicate that there was exactly the same issue in 2010 and in 2009, so it looks like in practice, you can test with old versions of IE for free, but only in the summer months. It's certainly better than nothing, but it's not something I would depend on.
- skrebbel 15y agoAntirez makes the point that linux has won the SW deployment war. And, really, it hasn't, with the possible exception of web startups. A lot of software isn't standard SaaS web stuff, and a lot of software won't for a long time, for all kinds of practical reasons. Antirez, if you could try and imagine how Redis could be used in different environments (inside devices, as a component in 'end-user' business software, and so on), you might see why 'deployment' and 'servers' and 'the cloud' is not at all the only area where Redis might shine. It's your project so your choice, but don't neglect industries and areas simply because those involved in it aren't so represented among your twitter followers!
- slig 15y agoHow dare he neglect the poor industrie? He really should stop the development of new features and start worrying about porting and maintaining his software to range of different environments.
- joelthelion 15y ago>Antirez, if you could try and imagine how Redis could be used in different environments (inside devices, as a component in 'end-user' business software, and so on), you might see why 'deployment' and 'servers' and 'the cloud' is not at all the only area where Redis might shine. It's your project so your choice, but don't neglect industries and areas simply because those involved in it aren't so represented among your twitter followers! This is how you go from a great, focused project to a buggy and bloated one-size-fits-all project that gets gradually abandoned and replaced by a new fad.
- regularfry 15y agoWhat, like SQLite?
- regularfry 15y agoIt would be interesting to know why that comment merited a downvote.
- deleted 15y ago[deleted]
- wpeterson 15y agoUnless you're using Microsoft servers/tools like .NET, this is another nail in the coffin as Windows machines as a viable platform for most web-development. I spent the first year of my Rails development on Windows and it was so painful - slower, strange bugs, many unsupported tools/libraries. This seems like a reasonable decision, but one in a long list of reasons you can't easily develop on Windows unless you're targeting a Microsoft stack for your product.
- untog 15y agoYes and no. I sometimes develop in Windows (I find the UI easier to work with than OS X or Linux, just a personal preference) and I just run all the server-side tools I need in a tiny Linux VirtualBox VM. It's an ideal setup, really- when I'm done with development and watch to kick back and watch a movie, I just put the VM into sleep mode and kill off those background tasks.
- shin_lao 15y agoI don't think Redis running under win32 is a very important feature. It is cool to have a win32 port that can be used for testing, as we had before, and as we have in a different implementation thanks to the Microsoft patch, so developers using Windows can easily test Redis and develop their projects. But what is the point in providing a production quality win32 port? Roughly 60% of our customers run Windows servers in production (2003 or 2008) which is why we support Windows as a first citizen platform. These customers have no desire to run Linux boxes for various reasons and we would simply lose deals if we didn't support their environment. We've managed to deliver the same level of performance for all platforms we support, and although our NoSQL product is very different from Redis I think you could fully support Windows if you wanted to. Additionally, I know from experience that supporting multi-platform greatly increases the code quality and robustness. Obscure race conditions or memory problems may be revealed by such support. Nevertheless, adding support for a platform a posteriori is a huge task and you have the right to consider it's not worth it.
- FooBarWidget 15y agoIf code quality is your concern then supporting multiple Unix variants already does a good job at revealing bugs. Supporting Windows and Unix is a whole different beast. They're so radically different that you're essentially writing two different versions of the code. And since all abstractions are leaky, fixing a bug that occurs on Windows may not fix a bug on Unix; it may even introduce a bug in Unix.
- shin_lao 15y agoThere is already a huge amount of libraries that abstract the hard part for you. 95% of our C++ code isn't platform specific and we support FreeBSD, Linux and Windows.
- nknight 15y agoI've never used a non-trivial piece of cross-platform software that didn't have significant platform-specific bugs. If you're claiming yours doesn't, I'm going to have to ask for access to your customer support email...
- lhaussknecht 15y agoI'd really appreciate a supported Windows version. We are a MS shop and nobody want's to administrate a linux box here. It would be cool to have a VMWare Virtual Appliance Ready to go. Shouldn't be too hard since Redis is sponsored by VMware ;)
- antirez 15y agoI just linked the two win32 ports to the project download page: http://redis.io/download http://redis.io/download this will hopefully expose the two efforts more and may result if there is a real community around it into a redis-win32 project to mature.
- moondowner 15y agoTotally right blog post from antirez, I agree with him as for his plans to his attitude.
- pgroves 15y agoAs a Linux user who keeps a Windows desktop around just for Netflix and Steam, I find this deeply (and devilishly) satisfying. Telling people they're platform isn't supported because it's just not an important enough market is something I've been hearing for over a decade now. MS coming out the message "but...but...but...you should support everybody!" is a bit of a pot/kettle situation and I hope they are treated with the same passive-aggressive apathy as they treated Linux and Mac users for all those years. I know I'm being petty but I can't seem to make myself stop smiling.
- protomyth 15y agoI would have hoped we all know how we felt and try not to do the same things Microsoft did. What comes around goes around and I really don't want to be on the receiving end again.
- beagle3 15y ago> he same things Microsoft did. Are still doing. > What comes around goes around and I really don't want to be on the receiving end again. You're still on the receiving end. And "what comes around goes around" is simply what's happening to Microsoft in this case.
- generalk 15y agoLet's be fair though -- Microsoft went ahead and grabbed the open-source code and provided a patch that makes it mostly work under WinAPI. In my book, that's pretty decent behavior.
- beagle3 15y ago> In my book, that's pretty decent behavior. I'd reserve judgment about this specific case until we see how things actually turn out. I've been dealing with Microsoft for more than twenty years, and I'm not holding my breath for their decent behavior, although it happen occasionally.
- 15y ago
- nknight 15y agoThe fundamental problem people are having seems to be "antirez won't support Windows". Let's say BigCorp really wants to use Redis, but only supports Windows. Why is it OK for them to ask antirez to support Windows, but not OK for antirez to ask them to support Linux/POSIX? Don't go with a kneejerk response, think about it. Neither party in this relationship has any special obligation to the other, there's no contract, no money is changing hands. BigCorp wants antirez to support their preferred software (Windows), antirez wants BigCorp to support his (Linux and/or POSIX). It will cost BigCorp more to support POSIX, you might say. But cost them more relative to what? Of their tens of thousands of employees, billions in revenue, BigCorp would be dedicating an infinitesimal fraction of its resources to supporting a POSIX-compatible OS. Meanwhile, a huge fraction of antirez's time will be spent dealing with the effects of trying to maintain a high-performance, low-level datastore on two utterly incompatible platforms, and the time he spends on that is time taken away from work on other bugs and features, which also amounts to time taken away from all the people who already use Redis on POSIX. There is no incentive at all for antirez, his employer VMware, or the Redis community at large to go through the pain of integrating Windows support into Redis mainline. There is some incentive for BigCorp to support Linux, since they want to use Redis effectively. The incentivization is exactly backwards, so it should surprise absolutely no one that antirez isn't prepared to deal with supporting Windows.
- angersock 15y agoSo, let's talk about the incentivization issue first. Why is it OK for them to ask antirez to support Windows, but not OK for antirez to ask them to support Linux/POSIX? Because antirez has a tool whereas BigCorp presumably has a problem. Because all of us could benefit from this, while only some of us might benefit from BigCorp switching to Linux. Asking somebody to make their tool more available is, I posit, much more reasonable than asking somebody to change their problems. BigCorp has potentially hundreds of thousands tied up in existing equipment, IT infrastructure, and training for employees. You and I might not flinch at spinning up a VM to run a database, but we (and the rest of the HN community!) should not fool ourselves into thinking that this is in any way always appropriate for a company. Meanwhile, a huge fraction of antirez's time will be spent dealing with the effects of trying to maintain a high-performance, low-level datastore on two utterly incompatible platforms, and the time he spends on that is time taken away from work on other bugs and features, which also amounts to time taken away from all the people who already use Redis on POSIX. Or, you know, he might talk with the Microsoft development team and try to get them to take over maintenance of the Microsoft codebase, and clean up the platform-specific architecture that gets in the way--and in so doing, write better code. If you can't/won't write platform-independent code, you are either lazy or your problem domain is heavily dependent on your platform. As far as I know, in-memory key/value stores aren't a Linux-specific problem, so... <rant> There is no incentive at all for antirez, his employer VMware, or the Redis community at large to go through the pain of integrating Windows support into Redis mainline. Let's look past incentives here. Let's talk about Doing the Right Thing. A huge number of people here make daily use of software packages and stacks that are open source. We owe our livelihoods to the folks that have been kind enough to release the source to their programs and, more importantly, work with the community to improve their code. We owe it to ourselves and our community to call out people being lazy and selfish, and letting politics overrule sound engineering and decency. This is an unreasonable decision by antirez. He's got a cool framework. He's got a bunch of code and (presumably) people that are happy to work with him on making it even more useful. He's also not going for it, because "use linux lol". Not because it's hard, not because he doesn't have folks that can add it, not because the problem extends beyond some refactoring and #ifdefs and makefiles. Because he's lazy. Because Linux is the One True Way. Because helping out anyone who can't just change their infrastructure on a whim is too much to ask. Really folks? You don't see a problem with this? </rant>
- rudiger 15y agoHow's the performance of Redis when it's running in a Linux VM?