I suspect he means the history that shows when you start typing in the address bar. While I find that immensely useful, I could see how it would be annoying on a system not fast enough to do it well.
That feature, in particular, could be done well on just about any machine. In particular, you need to start a separate thread to pull in the history, and most importantly, let the user keep typing!
As a simple example, I've done a web app recently which has a feature like that, except instead of history, it pulls in results from a database which isn't even on the same webserver as the one it's talking to (they're sort of proxied through). Here's the possible ways I could have done it:
Only use the onChange event. Too slow -- the user has to tab out of a field before my script will notice it.
Use onKeyUp and synchronous requests. Easier to program, but far too slow -- synchronous requests freeze the browser on Firefox.
Use onKeyUp and asynchronous requests. Better -- in theory, the user should be able to keep typing. But now we're flooding the network pointlessly.
Use onKeyUp, but only send a new request when we're done serving an old one. This way, at least we're only flooding the network as fast as we can, and no faster. It should even be reasonably fast on a modern browser.
Send asynchronous requests at one second intervals while the user's typing. No longer flooding the network, but it feels almost as fast as #3 or #4, and will work well on this 500 mhz K6.
I went with #5. On a local machine, I'd probably go with #4. But if I can do this in Javascript, you'd think a web browser could do it faster and better in C++ or whatever. And it's even responsive over the Internet, so there shouldn't be a problem with local access.
There's nothing wrong with Flash itself, only how people use it.
There most definitely is something wrong with flash.
On a 1.8 ghz amd64, in windowed mode, playing a tiny YouTube video -- 50% CPU usage.
On the same machine, using the same video (after downloading the flv), in mplayer or VLC, fullscreen -- 0.1% CPU usage.
Or maybe you'd rather take a machine that can play Doom3 or Quake4 at 1600x1200, with no lag, and watch a simple Flash game or animation bring it to its knees when run fullscreen.
So, performance-wise, there most definitely is something wrong with Flash. I honestly cannot think of a single application of Flash for which there isn't a much better, standard, open way of doing it -- often something that's been around for years. I suppose I could be wrong -- I mean, maybe Flash really is that much better at DRM than Windows Media Player or RealPlayer -- but somehow, that doesn't concern me much.
And it is really not about the footprint of the browser application, but the footprint of the helper applications.
Perhaps you mean "plugins"? But you seem confused about what's a plugin and what's not:
They want youtube. They want myspace. They wat pr0n.... Pretty soon they are mad becuae they can't send fancy emails with many pretty fonts. And they can't look at the animation on the newspaper sight.
Grammar lesson time: sight is a sense. It can also refer to something you see, as in "that's a pretty sight" -- but that refers to visual properties alone. You wouldn't say "that's a nice, responsive sight".
site is a location. As in, offsite backups, or discussing the construction site for the new mall. Or a web site.
And people are mad "becuae"? Why do I even bother...
Back on-topic, some of what you described is a plugin, and some of it isn't. For example: People want Youtube -- that requires Flash. But people want Myspace, which actually does work if you disable plugins (or make them click-to-run), and there's the added bonus that you won't immediately be blasted with crappy music when you visit someone's Myspace page.
Then there's pr0n -- I can't speak for everyone, but I've found that if you want a pr0n movie, you're better off downloading it, either from the site or from a torrent. Which means most of what you're looking at in the browser is going to be an image, and image support is generally considered part of the browser. It's easy to tell -- note the difference between the "img" tag and the "embed" tag.
You also talk about fancy emails with pretty fonts -- well, pretty much all email fanciness is either attachments or HTML. If they're using fancy fonts, they're doing it inside the browser, not in a "helper program".
Animation on the newspaper site? Depends how it's done. If by "animation" you mean "video", that will require a plugin. But animated GIFs, for instance, will run on most browsers unless you disable them -- as part of the image support.
In any case, at least half of what you mentioned is part of the browser, and different browsers do perform differently. They do even with the plugins, but what bothers me about Firefox isn't that one Youtube video runs slowly -- it doesn't. What bothers me about Firefox is that even if I've closed all the videos, and all of the fancy stuff, and just have a bunch of tabs open, Firefox is going to be much slower to start and slower to navigate in than Konqueror.
I suspect it will use more RAM, too, but I haven't benchmarked that.
I suspect there's a simpler reason: Windows memory management sucks. Has always sucked. May be better in Vista if you want to try it...
Linux memory management is good right away, and you can tune it to be better. My guess is, on Linux, the stuff you're not actually using, bloated or not, is swapped out.
Although, with swappiness at default values, and considering my box has 2 gigs of RAM, Linux seems perfectly happy to swap out 38 megs of stuff and use 621 megs of RAM. And yes, I know how to measure real RAM usage on Linux without counting the cache -- because if I do count the cache, only 15 megs are free, whereas if I don't, 1391 megs are free.
But then, maybe that's good, too. After all, it's nice that it takes a serious amount of disk activity before any program I'm running gets unresponsive.
An example of where this makes sense is the server world, where they actually can choose between paying you for more hours and paying someone else for more RAM or CPU. That's why, for instance, Ruby on Rails has caught on as well as it has.
I dislike that intensely, which is why the app I'm currently developing uses mod_perl, and I'm even using Expat for processing XML coming from the client via AJAX. But I have to make it work on a 500 mhz K6, and I may be able to resell it to others -- and not having to buy new hardware means they're more likely to buy it, and pay me more for it.
A common Perl pitfall is slurping a whole file, when you're only going to process it a line at a time anyway. The fix actually removes a line of code -- so it's actually easier to do it the right way, if you know how. In more complex examples, such as parsing a huge XML file, say, even if it takes you an extra 10 minutes, I don't care who you are, your 10 minutes is worth it to keep your code running in under 10 gigabytes of RAM.
So these are two examples of where efficient programming makes sense: When you intend to sell this product to a lot of people, and your competitor has a product which is $50 cheaper but doesn't require that $300 Wall-Mart computer, who do you think they're going to pick? Also: While you may not always be able to save gigs of RAM usage at a stroke, you certainly could by taking a bit more care while developing the product. If it takes you 10% longer, but it's 10-100x as efficient, it's probably worth it.
For example: We have tons of spam in our email already, so there are a number of filtering solutions already out there.
Also, email opens up a much bigger window with a much bigger area of blank text. I really, really hope that this continues to encourage people to be just a teensy bit more verbose than w/txt msgs bc ths hrts ur eyz anywhere you see it. At least if it's a "text message" on an actual phone, they have an excuse for that crap.
I shudder along with you, but I'd say if their job requires writing something, ask for a resume, and maybe have them write a letter about why they want to work at your company, what their goals are, etc.
In other words, have their first contact with you be via email. Bonus: You can probably write a script to reject the ones who can't spell "you" before it hits your inbox, though I wouldn't recommend it.
Basically, the BSD license is used for altruistic releases by people who don't believe all software needs to be Free (-as-in-GPL.) Whereas the GPL license is used by people who believe that it does.
Oh, bullshit. I don't believe all software should be Free. I just believe that I should get something for my work.
I don't believe that makes it any less altruistic, either. After all, Microsoft could just as easily have used a GPL'd network stack, they'd just have to open up their kernel. Would that be so bad?
In any case, I do believe that software which is free should remain free, because fragmentation is bad. The BSD world is filled with examples of proprietary forks which made a few improvements and went nowhere, and yet, due to licensing restrictions, we can't have those improvements. In many cases, the source code for them may not even exist anymore. At least GPL software never has to die, as long as someone cares about maintaining it.
That's an easy one - when it's more important to you that the world use your implementation than that you get credit and/or other rewards for it.
Yeah, I can see people doing that. It's just not me.
Basically, if Microsoft wants me to write them a network stack, they should hire me. Otherwise, I'm basically like the guy who invented optical media. Sure, I might be proud to see CDs and DVDs everywhere, but someone got rich off that invention, and it wasn't me.
As for preferring to start with software written under one license or another, you might take a look at the Compiz and Beryl projects. Beryl was a fork of Compiz, started because the Compiz team was being so anal about the quality of plugins they were accepting that they were missing out on a lot of cool stuff.
Recently, there's been talk of merging the two projects again. There's only one problem: Compiz is BSD, Beryl is GPL. It's basically as bad as a proprietary fork, as long as Compiz insists on staying with a BSD license -- Beryl can take improvements from Compiz, but not the other way around. Ironically, this is exactly the kind of situation the GPL is designed to prevent -- if Beryl had been proprietary, there might have been similar licensing problems (large corporations like restrictive licenses and NDAs), and we might not even have been able to see the Beryl code.
So, it's not even so much that I'm worried about corporations freeloading off me, though I certainly have no inclination to make it easier for them. The reason I would actually care enough to choose GPL is that it ensures that all improvements make it back into the open version, and I'd argue that even improves the quality of the GPL version when compared to a BSD version.
The examples you gave with Flash etc. are a completely different situation.
Are they?
Let's take Java. A plugin written in Java on a 32-bit system (because the lazy bastards haven't ported the plugin architecture to 64-bit) runs in the same address space in the browser. That means that Java can execute any instruction in the browser, and access anything the browser has access to. It means, in short, that unless you're running something like Internet Explorer on Vista, loading an untrusted plugin into your browser means that plugin can do anything it wants to your system as your user.
So, from a stability standpoint, it could crash your browser -- every last tab of it. From a security standpoint, it's often no better than a kernel-level compromise, because for most people, all of their data is in/home anyway.
So what I'm talking about is not the extent of the damage if your Java plugin were to go haywire. What I'm talking about is the fact that it doesn't. Java lets you run arbitrary, untrusted applets from the Internet, and even just-in-time bytecode compile them to native code, without ever posing a risk to the rest of your system, or even the rest of your browser.
I don't feel like explaining why this works, because that's what I think you need to go research. But I feel that this approach can be done more efficiently and more securely than simple memory segmentation.
In other words:
[This is bad for running arbitrary and possibly poorly written code!]
So all you do is evaluate the code before it's run to make sure it doesn't do stuff like that. You could even have the programming or bytecode language be restricted from doing certain things -- type checking is a simple example, because there's really no reason for you to ever confuse an integer with a pointer anymore, or to do arithmetic on a pointer in most programs.
Here's another hint: buffer overflows are possible in languages like C and C++. They are not possible in most interpreted or bytecode languages -- at least, if the Java runtime itself doesn't have a buffer overflow, you cannot write a Java program which has one.
True 'nuff to some degree, however, a nigga could see translatin' C to a stylized "driver C"... and WOAH! sneak in some type safety 'n shit. Toss in linear types, effect analysis, critical section termination, resource bounds... damn!
One wonders how useful C would be at this point, though. The only reason I see of keeping it C is for porting old code, and the old code is probably going to make lots of assumptions about the capabilities of C that we'd be taking out.
Of course, there's also the massive pool of developers who already know C, but if you know C, it's not that difficult to learn something similar (C++, Java, C#, etc).
This is why I am prefer people who bother to learn English grammar.
Since this is GPL then neither MS or Apple would dare touch it.
I'm not sure they have to. For example, FUSE, an API for developing a filesystem in userspace, is GPL'd in its entirety, except for the library, which is LGPL'd. There is a Mac port, and the Mac kernel part is BSD licensed -- but the rest of it is probably the same GPL'd code. There's also talk of a Windows port, though I don't see anything about its status.
Anytime I look at open software I always check if there is a BSD licensed equivalent as compared to GPL. Just in case I want to develop it into a commercial application and all.
That's fine. I prefer to GPL my stuff. That way, I can always turn it into a commercial application, but you can't.
Can you give me one good reason why I should give you code for free, that you can then turn around and sell, without paying me a dime?
I know the GPL advocates would argue that is what makes GPL good, keeping people like me from doing just that but Apple and MS are people like me.
Again: Can you give me one good reason why I should give my code to Apple and MS for free, with no guarantee of anything in return?
That is why Darwin was derived from BSD not because they were so hot on the Mach kernel but because of it's license.
There are large parts of Webkit (Safari's rendering engine) that are GPL'd.
Now, you may be right -- if they did anticipate having to lock it down the way they do now. But do you really think it would be a serious problem for them if they were on an open kernel?
Here's a hint: Oracle doesn't. Oracle sells all of their products for Linux now. And because of the GPL, every time they have to go in and make a change to the kernel to better support their database, we get it back. If it weren't for GPL, we might not have, for example, ocfs2.
If MS ever goes to a POSIX based UNIX type OS with a Windows GUI, just like Apple did, they would do the same thing but they wouldn't be nice enough to maintain an open source version like Apple has done with Darwin.
This is your argument for BSD -- that MS would use it and not maintain an open source version? How is this any better than MS writing their own damned code, just like everyone else?
And just a little FYI -- Apple hasn't been particularly good at maintaining an open version of Darwin, and I'm fairly sure the rest of the Mac OS cannot be run on any Darwin except one they've compiled and signed themselves. That's not "open", that's tivo-ized to hell.
Ok, I get that you like BSD -- you like to freeload. And I get that BSD is great for MS and Apple, and everyone else who wants to freeload, or who has a legal department larger than some countries telling them that GPL is dangerous. I still don't see a single reason that I'd want to prefer a BSD license for my code over the GPL.
The only time I'd even consider it is if I was releasing the same code in a proprietary product, but that's what we have dual-licensing for.
While this is not a kernel one its a good compromise as proprietary drivers are here to stay as much as it would be great if we had free gnu ones inside the kernel.
No, they are not.
It's happened before -- Broadcom for example. For the longest time, you could only run broadcom wireless with ndiswrapper. Now there's an open driver. You need only copy the firmware out of the Windows/OSX driver, and I imagine there might even be some free firmware developed eventually. This doesn't mean ndiswrapper is dead -- I'm sure there are other cards that still need it -- but Broadcom wireless cards now likely work better with the bcm43xx driver than with ndiswrapper.
Sometimes, it even happens with the manufacturer's blessing. For the longest time, the only way to get stuff on your nForce board to run was to load nVidia's proprietary nForce drivers. Now, nVidia never released source -- and perhaps couldn't, because of license restrictions -- but they now strongly recommend using the open "forcedeth" driver, which has surpassed their own in functionality and stability, and is actively supported by the kernel developers.
And sometimes, the manufacturer actually does it themselves. Though IBM kind of did a bad job of coordinating with the community, they did port Linux to their bigiron mainframes, and they did finally release all source back to the community.
Some manufacturers even seem to do this from the start -- syskonnect, for example, has full source code for a Linux driver available for download on their website, although I believe the kernel-maintained sky2 driver has surpassed their "sk98lin" driver.
So I don't think it's unreasonable that, very soon, you'll be able to build a Linux system without any proprietary code in ring 0. You might still want the win32codecs, say, but that's a different matter -- I don't really care if my movie player crashes once in awhile if it doesn't bring down my whole system -- and many of these are being replaced by free/open drivers.
In fact, you can do that now, if you're careful with your hardware choices. The only real hurdle to a desktop/laptop system with a completely open kernel is gaming -- you really want nVidia or ATI. It's been said that AMD/ATI are looking at opening up their drivers, and nVidia has actually produced a list of exactly what licensing issues they have -- I think they even named names of which companies have to sign to allow them to release all of their source. And anyway, if it doesn't happen, the community isn't waiting -- there is already at least one project attempting to create an open nVidia driver, and there have always been open drivers for older ATI cards.
IT would be cool for hardware makers to have a driver that works with all operating systems with minimal effort in porting.
Porting isn't the problem. Really.
All it would take, in many cases, is a hardware manufacturer releasing source for their Windows driver, and there'd probably be a Linux port out before the end of the week. We don't even need source code for all of them, of course -- just look at ndiswrapper and captive-ntfs -- but I think that just goes to show how easy it would be if we did have source, and they would perform better that way anyway.
I also remember seeing some quote somewhere that nVidia shares roughly 95% of their code across all platforms. Consider what they support -- Linux, BSD, Windows, OS X, I think they might even have Solaris in there somewhere. It's not unreasonable to think that the bigger and more complicated your driver is, the less of it needs to be platform-dependant.
Any program that can't easily be ported isn't modular enough to begin with.
No, I suspect the real problem proprietary manufacturers have is fear of licensing issues -- which userspace might help with, if they want to keep it proprietary -- and support issues. It's one thing to simply port to a different platform; it's another issue entirely to have QA,
You better do a research on why bad code running in ring 0 can always hang the system never mind the API.
You'd better do some research on... well, English grammar, first, but also check out systems like Java, Flash, JavaScript, Silverlight (and the rest of.NET), and so on. It is possible to run untrusted code in the same address space as trusted code. It should therefore be possible to run untrusted code in ring 0. Done right, you'd get a performance boost to everything, by running absolutely everything (except legacy apps) in "kernel mode" / ring 0, and no more security risk than you had before.
Yes, I'm aware that a Javascript, for instance, can currently hang the browser, or crash it, or even sometimes get into things it shouldn't be able to (like the user's files). All of this is due to buggy implementations. I think we may have enough practice by now to be able to do this right, if we start from the ground up.
The downside is, it would be incredibly difficult to do this with precompiled x86 stuff at all, and probably impossible to do it without a performance hit compared to simply running in its own address space. I'm not even sure it could be done efficiently with C source -- it would most likely have to be a sufficiently high-level bytecode language, at least.
Which means that, probably, no one will ever do it. In order for this to work, it'd have to both be sufficiently better than Linux to get a majority of Linux developers to move over, and it'd have to support all the old Linux drivers, at least, until they could be rewritten.
Too many germs? The airports themselves are clean enough, and the planes are practically hospital rooms. I guess it's possible, especially if you're sitting next to someone with a cold, but it just seems unlikely. Seems far more likely you'd get sick in the office than on the plane.
Late for a connecting flight? Also seems unlikely. Not impossible, by any stretch, but they generally leave you an hour or two, even if your plane is delayed. (Last time, both ways, I had one flight delayed, and the connecting flight was delayed by more than enough to make up for it.) And for that matter, even if it did happen, I'd rather stay overnight in the airport than stay overnight in 2-3 hotels while driving cross-country -- and the entertainment is better anyway; driving you only get the radio, whereas on a plane, you can watch movies or actually get work done.
Ear infection? How's that different than the "too many germs" bit?
I guess this is one of those YMMV things, but really, the only problem I have with flying is being cramped, and that's my fault for not losing the weight.
Sadly, this kind of stupidity is too common, even in open source.
For example: Far, far too many web apps, particularly stuff written in PHP, even good stuff written in PHP (like Drupal), tell you to "chmod 777" on some directory if you get any kind of security issues, without breathing a word about what that actually does.
The halo fan base consists of some of the most fucking stupid walking attempts at preserving meat that walk the earth.
True enough. So...
No they will bitch and so will reviewers who will then claim the game has broken features.
And those fans and reviewers will continue to buy Halo 3, and Halo Wars, and the Halo books, and the Halo graphic novel, and...
Look, if they're Halo fans, then they can bitch all they want, they're Halo fans. They aren't going to switch over to being, say, Gears of War fans because of one feature that is explicitly of the "probably won't work" variety, and pops up a huge message when they try it saying "This won't work, so don't complain to us if you experience problems."
Or, hell, slap a "beta" tag over it. It seems to be enough for just about every other beta. After all, the MS fanboys found plenty to get excited about with the Vista beta, but mention the flaws of UAC or drivers not working, and they excuse it with "It's a beta!"
As for it being "BS", what takes more bandwitdh? a server sending only that which is relevant to a client, or 2 servers sending everything back and forth because they don't know what will be relevant to the other in a moment.
Oh, BS. (again!) Two servers can easily find out what's relevant to the other.
It's not really relevant (since it's an entirely different algorithm), but ever hear of rsync?
IN the last 2 halo games when you in one area, there were only 2 possible areas that could be loaded. The one infront of you and the one behind you.
I'll bet it's more complex than that, but sure. What's your point?
If halo has suddenly stopped being linear and has become more open, ex you have a city that is divided in to squares. You are here and your objective is on the otherside. Well if your in one block you can have can have 8 blocks around you. So you preload all of them for quick access or maybe just the 2 closest too you.
Right.
Now imagine 2 players. Okay they are in one block, possibly in opposite corners of a block, okay so you now have blocks to preload.. now comes the issue.
I suggest that you don't have to teleport anyone. So at this point it becomes clear -- each player's xbox preloads the ones they are closest to.
Okay now your loading more blocks then single player, that means you need a bit more ram
Not if you do the above.
Consider -- the farther apart they get, the less likely they are to do anything affecting the other. If they're far enough for RAM to matter, they probably can't even see each other -- they'll be past the "horizon".
The only way you need the two xboxes even communicating at that point is if you're going to allow HUGE open spaces, and you're going to allow one player to, say, take a sniper shot at a target so far away he can't even see it, in order to help the other player out. Or launch a rocket in that direction. Which means that all the Xboxes have to do is tell each other how close the players are to each other, until they get close enough to see each other again -- other than that, each Xbox can only load the parts of the map close to that player.
Okay now you have 2 people on separate boxes on a lan. Now we notice something about halo since 2. If the host is dropped then, the game can continue because all the clients know whats going on.
Except, as you said, we have two people on separate boxes. There's no point in rebuilding, because if one player is dropped, the game may as well be over. (I'm fairly sure that, in Halo 2 co-op, if either of you dies, you BOTH go back to the last checkpoint.)
doing there own collision detection, AI, ect ect, for their own area, however, they have to tell the other box everything that
I wish I could write all kinds of broken functionality into my applications...
Except it's not broken. It works very well, under certain circumstances.
Here's a question: Should VLC refuse to stream a 1024p h.264 video over the network? Should it refuse to do it over the Internet, but allow it over a network? Or should it assume that, if the user has bothered to access that feature, they know what they're doing?
Here's a hint: An ISP in my small town (~10,000 people) is implementing fiber-to-the-home. That means there will soon be affordable 10 gigabit Internet in this town. So, in the very near future, assumptions that the Internet is always slower than the LAN will be obsolete. And if I find out that I have a friend on the same ISP as I am, I'd very much like it if the software would get the fuck out of the way if we want to play an Internet game with each other, and not insist on "LAN only".
Really, "LAN only" play is... well... reminiscent of Starcraft and IPX LAN games. Leave it behind.
Both tech and story can be bad without a game actually crashing or being unplayable.
The tech was actually just a bit above Doom at the time, I suppose, and the engine was (is) rock solid. But the gameplay was oddly unbalanced -- just enough to be ludicrously funny. For example, the Pistol is laughably weak (surprise, surprise), the chaingun and such are actually reasonably balanced, but there are also just downright weird weapons (like the shrink ray -- shrink your enemies and then step on them), and ludicrously overpowered weapons (like the RPG -- boom -- and the Devastator -- four rockets per second).
It was playable as a deathmatch game. The weaponry was horribly unbalanced, yet just enough thought was put into it that you could usually figure out how to kill someone even if they did have a stupidly huge advantage for the moment.
It also had bots, for a fake multiplayer deathmatch. These bots had the flaw of being entirely too accurate -- the pistol, weak as it is, does fire pretty quickly, and it only takes something like four or five shots to kill an unarmored player. So, you could get all the weapons you want, but a bot is probably going to kick your ass with a pistol -- like fighting against a player with an aimbot, only worse.
The plot was just as bad -- it openly admits to being a parody of sorts, in that it's pretty much just an alien invasion like any other. But it also has hilariously bad off-color jokes and one-liners. Duke's one-liners are, in fact, so bad they're funny. For example:
When the player blows up several enemies at once: "Ooh! That had to hurt!" "Come get some!"
When picking up the RPG for the first time: "Hail to the king, baby!"
When walking up to a pinball machine with a Duke Nukem theme (called "Balls of Steel"): "Don't have time to play with myself!"
When walking up to a stripper and pressing the "use" key: (handing her a bill) "Shake it, baby!" (She does show him something, but it's also maybe three pixels. Remember, this is barely better than Doom.)
At the beginning of one random level: "It's time to kick ass and chew bubble gum, and I'm all outta gum!"
Upon seeing the boss of the second episode: "I'm gonna rip your head off and shit down your neck!"
And he follows through. After finally killing the guy, there is a cinematic, kind of decently rendered 3D for a Doom-ish game, in which Duke walks up to the alien corpse, rips off its head, tosses it aside...
Then drops his jeans (camera angle saves you here), sits down, opens up a newspaper, and starts whistling the theme song.
when one user is getting way further ahead on the map, the game will just teleport the lagging-behind player forward to the other player.
I know I never really liked this option. It breaks immersion -- which isn't a problem in Halo 1 and 2, because there's only supposed to be one Chief and one Arbiter, and co-op simply ads another of whoever the main character is at the moment. But in Halo 3, when apparently the Chief and the Arbiter will be in the same place at the same time, and Co-Op will support that, it would be really nice if you didn't have the random teleporting.
Besides, it makes the game easier -- one player can draw all the fire and simply stay alive while the other charges ahead to the checkpoint.
Regardless, I guess I just don't see why this is a big deal. If the players get far enough apart that they're out of sight, why not simply split it into two simultaneous games at that point? Re-sync everything when they meet up again?
Why will we be able to play over LAN but not Xbox Live? Especially considering one can just set up Hamachi or similar software to create a simple VPN over the net anyways...
My guess is, it's probably a bandwidth issue.
What pisses me off is, like all other console games, they'd rather prevent you from trying to do something unusual than simply warn you that it might not work. For example, take a university -- all kinds of subnets, but huge amounts of bandwidth between them, especially considering between them and the Internet. If Halo 3 and the Xbox 360's Xbox Live work at all like Halo 2 and the original Xbox Live, it should be possbile to create a game with a specific group of friends, and if all of those friends share a network (if not a subnet), it should be as responsive as a LAN game, right?
I guess the answer, as with many things, is "not necessarily". It's always possible that the LAN game requires on broadcast packets, to reduce bandwidth used. Still, it would only have an effect with three players or more, so the above scenario is still valid for a two-player co-op game (since, as I understand it, three-player co-op isn't available).
I mean, they were busy blaming everything they could get their hands on for Columbine. There was so much blame that even on PBS, there was barely time left to mourn...
Here's my all-time favorite quote, though:
Michael Moore: If you were to talk directly to the kids at Columbine or the people in that community, what would you say to them if they were here right now?
Marilyn Manson: I wouldn't say a single word to them, I would listen to what they have to say. And that's what no one did.
While that is true, it also takes that same amount of effort every time I see them.
More relevantly, maybe if enough people tag it as top10 and filter out top10 stories, the Slashdot editors will take the hint -- thus resulting in less top10 stories and more relevant ones.
Honestly, if this outfit can't be bothered to Google (the keywords I searched for were "openoffice" and "roadmap"), let 'em have MS Office. They deserve it.
(Also, OpenOffice is not the only alternative. I use Koffice, but YMMV.)
That feature, in particular, could be done well on just about any machine. In particular, you need to start a separate thread to pull in the history, and most importantly, let the user keep typing!
As a simple example, I've done a web app recently which has a feature like that, except instead of history, it pulls in results from a database which isn't even on the same webserver as the one it's talking to (they're sort of proxied through). Here's the possible ways I could have done it:
I went with #5. On a local machine, I'd probably go with #4. But if I can do this in Javascript, you'd think a web browser could do it faster and better in C++ or whatever. And it's even responsive over the Internet, so there shouldn't be a problem with local access.
There most definitely is something wrong with flash.
On a 1.8 ghz amd64, in windowed mode, playing a tiny YouTube video -- 50% CPU usage.
On the same machine, using the same video (after downloading the flv), in mplayer or VLC, fullscreen -- 0.1% CPU usage.
Or maybe you'd rather take a machine that can play Doom3 or Quake4 at 1600x1200, with no lag, and watch a simple Flash game or animation bring it to its knees when run fullscreen.
So, performance-wise, there most definitely is something wrong with Flash. I honestly cannot think of a single application of Flash for which there isn't a much better, standard, open way of doing it -- often something that's been around for years. I suppose I could be wrong -- I mean, maybe Flash really is that much better at DRM than Windows Media Player or RealPlayer -- but somehow, that doesn't concern me much.
Perhaps you mean "plugins"? But you seem confused about what's a plugin and what's not:
Grammar lesson time: sight is a sense. It can also refer to something you see, as in "that's a pretty sight" -- but that refers to visual properties alone. You wouldn't say "that's a nice, responsive sight".
site is a location. As in, offsite backups, or discussing the construction site for the new mall. Or a web site.
And people are mad "becuae"? Why do I even bother...
Back on-topic, some of what you described is a plugin, and some of it isn't. For example: People want Youtube -- that requires Flash. But people want Myspace, which actually does work if you disable plugins (or make them click-to-run), and there's the added bonus that you won't immediately be blasted with crappy music when you visit someone's Myspace page.
Then there's pr0n -- I can't speak for everyone, but I've found that if you want a pr0n movie, you're better off downloading it, either from the site or from a torrent. Which means most of what you're looking at in the browser is going to be an image, and image support is generally considered part of the browser. It's easy to tell -- note the difference between the "img" tag and the "embed" tag.
You also talk about fancy emails with pretty fonts -- well, pretty much all email fanciness is either attachments or HTML. If they're using fancy fonts, they're doing it inside the browser, not in a "helper program".
Animation on the newspaper site? Depends how it's done. If by "animation" you mean "video", that will require a plugin. But animated GIFs, for instance, will run on most browsers unless you disable them -- as part of the image support.
In any case, at least half of what you mentioned is part of the browser, and different browsers do perform differently. They do even with the plugins, but what bothers me about Firefox isn't that one Youtube video runs slowly -- it doesn't. What bothers me about Firefox is that even if I've closed all the videos, and all of the fancy stuff, and just have a bunch of tabs open, Firefox is going to be much slower to start and slower to navigate in than Konqueror.
I suspect it will use more RAM, too, but I haven't benchmarked that.
I suspect there's a simpler reason: Windows memory management sucks. Has always sucked. May be better in Vista if you want to try it...
Linux memory management is good right away, and you can tune it to be better. My guess is, on Linux, the stuff you're not actually using, bloated or not, is swapped out.
Although, with swappiness at default values, and considering my box has 2 gigs of RAM, Linux seems perfectly happy to swap out 38 megs of stuff and use 621 megs of RAM. And yes, I know how to measure real RAM usage on Linux without counting the cache -- because if I do count the cache, only 15 megs are free, whereas if I don't, 1391 megs are free.
But then, maybe that's good, too. After all, it's nice that it takes a serious amount of disk activity before any program I'm running gets unresponsive.
An example of where this makes sense is the server world, where they actually can choose between paying you for more hours and paying someone else for more RAM or CPU. That's why, for instance, Ruby on Rails has caught on as well as it has.
I dislike that intensely, which is why the app I'm currently developing uses mod_perl, and I'm even using Expat for processing XML coming from the client via AJAX. But I have to make it work on a 500 mhz K6, and I may be able to resell it to others -- and not having to buy new hardware means they're more likely to buy it, and pay me more for it.
A common Perl pitfall is slurping a whole file, when you're only going to process it a line at a time anyway. The fix actually removes a line of code -- so it's actually easier to do it the right way, if you know how. In more complex examples, such as parsing a huge XML file, say, even if it takes you an extra 10 minutes, I don't care who you are, your 10 minutes is worth it to keep your code running in under 10 gigabytes of RAM.
So these are two examples of where efficient programming makes sense: When you intend to sell this product to a lot of people, and your competitor has a product which is $50 cheaper but doesn't require that $300 Wall-Mart computer, who do you think they're going to pick? Also: While you may not always be able to save gigs of RAM usage at a stroke, you certainly could by taking a bit more care while developing the product. If it takes you 10% longer, but it's 10-100x as efficient, it's probably worth it.
For example: We have tons of spam in our email already, so there are a number of filtering solutions already out there.
Also, email opens up a much bigger window with a much bigger area of blank text. I really, really hope that this continues to encourage people to be just a teensy bit more verbose than w/txt msgs bc ths hrts ur eyz anywhere you see it. At least if it's a "text message" on an actual phone, they have an excuse for that crap.
I shudder along with you, but I'd say if their job requires writing something, ask for a resume, and maybe have them write a letter about why they want to work at your company, what their goals are, etc.
In other words, have their first contact with you be via email. Bonus: You can probably write a script to reject the ones who can't spell "you" before it hits your inbox, though I wouldn't recommend it.
Oh, bullshit. I don't believe all software should be Free. I just believe that I should get something for my work.
I don't believe that makes it any less altruistic, either. After all, Microsoft could just as easily have used a GPL'd network stack, they'd just have to open up their kernel. Would that be so bad?
In any case, I do believe that software which is free should remain free, because fragmentation is bad. The BSD world is filled with examples of proprietary forks which made a few improvements and went nowhere, and yet, due to licensing restrictions, we can't have those improvements. In many cases, the source code for them may not even exist anymore. At least GPL software never has to die, as long as someone cares about maintaining it.
Yeah, I can see people doing that. It's just not me.
Basically, if Microsoft wants me to write them a network stack, they should hire me. Otherwise, I'm basically like the guy who invented optical media. Sure, I might be proud to see CDs and DVDs everywhere, but someone got rich off that invention, and it wasn't me.
As for preferring to start with software written under one license or another, you might take a look at the Compiz and Beryl projects. Beryl was a fork of Compiz, started because the Compiz team was being so anal about the quality of plugins they were accepting that they were missing out on a lot of cool stuff.
Recently, there's been talk of merging the two projects again. There's only one problem: Compiz is BSD, Beryl is GPL. It's basically as bad as a proprietary fork, as long as Compiz insists on staying with a BSD license -- Beryl can take improvements from Compiz, but not the other way around. Ironically, this is exactly the kind of situation the GPL is designed to prevent -- if Beryl had been proprietary, there might have been similar licensing problems (large corporations like restrictive licenses and NDAs), and we might not even have been able to see the Beryl code.
So, it's not even so much that I'm worried about corporations freeloading off me, though I certainly have no inclination to make it easier for them. The reason I would actually care enough to choose GPL is that it ensures that all improvements make it back into the open version, and I'd argue that even improves the quality of the GPL version when compared to a BSD version.
I said "BSD" because I assumed if they supported FreeBSD, they probably also supported OpenBSD and NetBSD and everything.
Out of all the things I mentioned, you picked JavaScript?
Yes, I realize there isn't really a VM out there that's capable of everything I'd want for this system. That doesn't make it impossible.
Are they?
Let's take Java. A plugin written in Java on a 32-bit system (because the lazy bastards haven't ported the plugin architecture to 64-bit) runs in the same address space in the browser. That means that Java can execute any instruction in the browser, and access anything the browser has access to. It means, in short, that unless you're running something like Internet Explorer on Vista, loading an untrusted plugin into your browser means that plugin can do anything it wants to your system as your user.
So, from a stability standpoint, it could crash your browser -- every last tab of it. From a security standpoint, it's often no better than a kernel-level compromise, because for most people, all of their data is in /home anyway.
So what I'm talking about is not the extent of the damage if your Java plugin were to go haywire. What I'm talking about is the fact that it doesn't. Java lets you run arbitrary, untrusted applets from the Internet, and even just-in-time bytecode compile them to native code, without ever posing a risk to the rest of your system, or even the rest of your browser.
I don't feel like explaining why this works, because that's what I think you need to go research. But I feel that this approach can be done more efficiently and more securely than simple memory segmentation.
In other words:
So all you do is evaluate the code before it's run to make sure it doesn't do stuff like that. You could even have the programming or bytecode language be restricted from doing certain things -- type checking is a simple example, because there's really no reason for you to ever confuse an integer with a pointer anymore, or to do arithmetic on a pointer in most programs.
Here's another hint: buffer overflows are possible in languages like C and C++. They are not possible in most interpreted or bytecode languages -- at least, if the Java runtime itself doesn't have a buffer overflow, you cannot write a Java program which has one.
One wonders how useful C would be at this point, though. The only reason I see of keeping it C is for porting old code, and the old code is probably going to make lots of assumptions about the capabilities of C that we'd be taking out.
Of course, there's also the massive pool of developers who already know C, but if you know C, it's not that difficult to learn something similar (C++, Java, C#, etc).
This is why I am prefer people who bother to learn English grammar.
I'm not sure they have to. For example, FUSE, an API for developing a filesystem in userspace, is GPL'd in its entirety, except for the library, which is LGPL'd. There is a Mac port, and the Mac kernel part is BSD licensed -- but the rest of it is probably the same GPL'd code. There's also talk of a Windows port, though I don't see anything about its status.
That's fine. I prefer to GPL my stuff. That way, I can always turn it into a commercial application, but you can't.
Can you give me one good reason why I should give you code for free, that you can then turn around and sell, without paying me a dime?
Again: Can you give me one good reason why I should give my code to Apple and MS for free, with no guarantee of anything in return?
There are large parts of Webkit (Safari's rendering engine) that are GPL'd.
Now, you may be right -- if they did anticipate having to lock it down the way they do now. But do you really think it would be a serious problem for them if they were on an open kernel?
Here's a hint: Oracle doesn't. Oracle sells all of their products for Linux now. And because of the GPL, every time they have to go in and make a change to the kernel to better support their database, we get it back. If it weren't for GPL, we might not have, for example, ocfs2.
This is your argument for BSD -- that MS would use it and not maintain an open source version? How is this any better than MS writing their own damned code, just like everyone else?
And just a little FYI -- Apple hasn't been particularly good at maintaining an open version of Darwin, and I'm fairly sure the rest of the Mac OS cannot be run on any Darwin except one they've compiled and signed themselves. That's not "open", that's tivo-ized to hell.
Ok, I get that you like BSD -- you like to freeload. And I get that BSD is great for MS and Apple, and everyone else who wants to freeload, or who has a legal department larger than some countries telling them that GPL is dangerous. I still don't see a single reason that I'd want to prefer a BSD license for my code over the GPL.
The only time I'd even consider it is if I was releasing the same code in a proprietary product, but that's what we have dual-licensing for.
No, they are not.
It's happened before -- Broadcom for example. For the longest time, you could only run broadcom wireless with ndiswrapper. Now there's an open driver. You need only copy the firmware out of the Windows/OSX driver, and I imagine there might even be some free firmware developed eventually. This doesn't mean ndiswrapper is dead -- I'm sure there are other cards that still need it -- but Broadcom wireless cards now likely work better with the bcm43xx driver than with ndiswrapper.
Sometimes, it even happens with the manufacturer's blessing. For the longest time, the only way to get stuff on your nForce board to run was to load nVidia's proprietary nForce drivers. Now, nVidia never released source -- and perhaps couldn't, because of license restrictions -- but they now strongly recommend using the open "forcedeth" driver, which has surpassed their own in functionality and stability, and is actively supported by the kernel developers.
And sometimes, the manufacturer actually does it themselves. Though IBM kind of did a bad job of coordinating with the community, they did port Linux to their bigiron mainframes, and they did finally release all source back to the community.
Some manufacturers even seem to do this from the start -- syskonnect, for example, has full source code for a Linux driver available for download on their website, although I believe the kernel-maintained sky2 driver has surpassed their "sk98lin" driver.
So I don't think it's unreasonable that, very soon, you'll be able to build a Linux system without any proprietary code in ring 0. You might still want the win32codecs, say, but that's a different matter -- I don't really care if my movie player crashes once in awhile if it doesn't bring down my whole system -- and many of these are being replaced by free/open drivers.
In fact, you can do that now, if you're careful with your hardware choices. The only real hurdle to a desktop/laptop system with a completely open kernel is gaming -- you really want nVidia or ATI. It's been said that AMD/ATI are looking at opening up their drivers, and nVidia has actually produced a list of exactly what licensing issues they have -- I think they even named names of which companies have to sign to allow them to release all of their source. And anyway, if it doesn't happen, the community isn't waiting -- there is already at least one project attempting to create an open nVidia driver, and there have always been open drivers for older ATI cards.
Porting isn't the problem. Really.
All it would take, in many cases, is a hardware manufacturer releasing source for their Windows driver, and there'd probably be a Linux port out before the end of the week. We don't even need source code for all of them, of course -- just look at ndiswrapper and captive-ntfs -- but I think that just goes to show how easy it would be if we did have source, and they would perform better that way anyway.
I also remember seeing some quote somewhere that nVidia shares roughly 95% of their code across all platforms. Consider what they support -- Linux, BSD, Windows, OS X, I think they might even have Solaris in there somewhere. It's not unreasonable to think that the bigger and more complicated your driver is, the less of it needs to be platform-dependant.
Any program that can't easily be ported isn't modular enough to begin with.
No, I suspect the real problem proprietary manufacturers have is fear of licensing issues -- which userspace might help with, if they want to keep it proprietary -- and support issues. It's one thing to simply port to a different platform; it's another issue entirely to have QA,
You'd better do some research on... well, English grammar, first, but also check out systems like Java, Flash, JavaScript, Silverlight (and the rest of .NET), and so on. It is possible to run untrusted code in the same address space as trusted code. It should therefore be possible to run untrusted code in ring 0. Done right, you'd get a performance boost to everything, by running absolutely everything (except legacy apps) in "kernel mode" / ring 0, and no more security risk than you had before.
Yes, I'm aware that a Javascript, for instance, can currently hang the browser, or crash it, or even sometimes get into things it shouldn't be able to (like the user's files). All of this is due to buggy implementations. I think we may have enough practice by now to be able to do this right, if we start from the ground up.
The downside is, it would be incredibly difficult to do this with precompiled x86 stuff at all, and probably impossible to do it without a performance hit compared to simply running in its own address space. I'm not even sure it could be done efficiently with C source -- it would most likely have to be a sufficiently high-level bytecode language, at least.
Which means that, probably, no one will ever do it. In order for this to work, it'd have to both be sufficiently better than Linux to get a majority of Linux developers to move over, and it'd have to support all the old Linux drivers, at least, until they could be rewritten.
That's... bizarre.
Too many germs? The airports themselves are clean enough, and the planes are practically hospital rooms. I guess it's possible, especially if you're sitting next to someone with a cold, but it just seems unlikely. Seems far more likely you'd get sick in the office than on the plane.
Late for a connecting flight? Also seems unlikely. Not impossible, by any stretch, but they generally leave you an hour or two, even if your plane is delayed. (Last time, both ways, I had one flight delayed, and the connecting flight was delayed by more than enough to make up for it.) And for that matter, even if it did happen, I'd rather stay overnight in the airport than stay overnight in 2-3 hotels while driving cross-country -- and the entertainment is better anyway; driving you only get the radio, whereas on a plane, you can watch movies or actually get work done.
Ear infection? How's that different than the "too many germs" bit?
I guess this is one of those YMMV things, but really, the only problem I have with flying is being cramped, and that's my fault for not losing the weight.
Sadly, this kind of stupidity is too common, even in open source.
For example: Far, far too many web apps, particularly stuff written in PHP, even good stuff written in PHP (like Drupal), tell you to "chmod 777" on some directory if you get any kind of security issues, without breathing a word about what that actually does.
True enough. So...
And those fans and reviewers will continue to buy Halo 3, and Halo Wars, and the Halo books, and the Halo graphic novel, and...
Look, if they're Halo fans, then they can bitch all they want, they're Halo fans. They aren't going to switch over to being, say, Gears of War fans because of one feature that is explicitly of the "probably won't work" variety, and pops up a huge message when they try it saying "This won't work, so don't complain to us if you experience problems."
Or, hell, slap a "beta" tag over it. It seems to be enough for just about every other beta. After all, the MS fanboys found plenty to get excited about with the Vista beta, but mention the flaws of UAC or drivers not working, and they excuse it with "It's a beta!"
Oh, BS. (again!) Two servers can easily find out what's relevant to the other.
It's not really relevant (since it's an entirely different algorithm), but ever hear of rsync?
I'll bet it's more complex than that, but sure. What's your point?
Right.
I suggest that you don't have to teleport anyone. So at this point it becomes clear -- each player's xbox preloads the ones they are closest to.
Not if you do the above.
Consider -- the farther apart they get, the less likely they are to do anything affecting the other. If they're far enough for RAM to matter, they probably can't even see each other -- they'll be past the "horizon".
The only way you need the two xboxes even communicating at that point is if you're going to allow HUGE open spaces, and you're going to allow one player to, say, take a sniper shot at a target so far away he can't even see it, in order to help the other player out. Or launch a rocket in that direction. Which means that all the Xboxes have to do is tell each other how close the players are to each other, until they get close enough to see each other again -- other than that, each Xbox can only load the parts of the map close to that player.
Except, as you said, we have two people on separate boxes. There's no point in rebuilding, because if one player is dropped, the game may as well be over. (I'm fairly sure that, in Halo 2 co-op, if either of you dies, you BOTH go back to the last checkpoint.)
Except it's not broken. It works very well, under certain circumstances.
Here's a question: Should VLC refuse to stream a 1024p h.264 video over the network? Should it refuse to do it over the Internet, but allow it over a network? Or should it assume that, if the user has bothered to access that feature, they know what they're doing?
Here's a hint: An ISP in my small town (~10,000 people) is implementing fiber-to-the-home. That means there will soon be affordable 10 gigabit Internet in this town. So, in the very near future, assumptions that the Internet is always slower than the LAN will be obsolete. And if I find out that I have a friend on the same ISP as I am, I'd very much like it if the software would get the fuck out of the way if we want to play an Internet game with each other, and not insist on "LAN only".
Really, "LAN only" play is... well... reminiscent of Starcraft and IPX LAN games. Leave it behind.
I don't know about you, but I don't write software so my users will stop bitching.
I write software so my users can use it. To do what they want to do. I then write manuals so my users will stop bitching.
Seriously: Throw up a big warning that says "Co-op play over Xbox Live is not recommended."
As for being a "side effect of how they load the levels", that's BS -- unless that is affecting bandwidth.
Both tech and story can be bad without a game actually crashing or being unplayable.
The tech was actually just a bit above Doom at the time, I suppose, and the engine was (is) rock solid. But the gameplay was oddly unbalanced -- just enough to be ludicrously funny. For example, the Pistol is laughably weak (surprise, surprise), the chaingun and such are actually reasonably balanced, but there are also just downright weird weapons (like the shrink ray -- shrink your enemies and then step on them), and ludicrously overpowered weapons (like the RPG -- boom -- and the Devastator -- four rockets per second).
It was playable as a deathmatch game. The weaponry was horribly unbalanced, yet just enough thought was put into it that you could usually figure out how to kill someone even if they did have a stupidly huge advantage for the moment.
It also had bots, for a fake multiplayer deathmatch. These bots had the flaw of being entirely too accurate -- the pistol, weak as it is, does fire pretty quickly, and it only takes something like four or five shots to kill an unarmored player. So, you could get all the weapons you want, but a bot is probably going to kick your ass with a pistol -- like fighting against a player with an aimbot, only worse.
The plot was just as bad -- it openly admits to being a parody of sorts, in that it's pretty much just an alien invasion like any other. But it also has hilariously bad off-color jokes and one-liners. Duke's one-liners are, in fact, so bad they're funny. For example:
When the player blows up several enemies at once:
"Ooh! That had to hurt!"
"Come get some!"
When picking up the RPG for the first time:
"Hail to the king, baby!"
When walking up to a pinball machine with a Duke Nukem theme (called "Balls of Steel"):
"Don't have time to play with myself!"
When walking up to a stripper and pressing the "use" key:
(handing her a bill) "Shake it, baby!"
(She does show him something, but it's also maybe three pixels. Remember, this is barely better than Doom.)
At the beginning of one random level:
"It's time to kick ass and chew bubble gum, and I'm all outta gum!"
Upon seeing the boss of the second episode:
"I'm gonna rip your head off and shit down your neck!"
And he follows through. After finally killing the guy, there is a cinematic, kind of decently rendered 3D for a Doom-ish game, in which Duke walks up to the alien corpse, rips off its head, tosses it aside...
Then drops his jeans (camera angle saves you here), sits down, opens up a newspaper, and starts whistling the theme song.
Their site is a joke -- literally a giant Flash page.
(I'm assuming it's Flash -- on Konqueror, I just see "start plugin", so maybe it's Java...)
I know I never really liked this option. It breaks immersion -- which isn't a problem in Halo 1 and 2, because there's only supposed to be one Chief and one Arbiter, and co-op simply ads another of whoever the main character is at the moment. But in Halo 3, when apparently the Chief and the Arbiter will be in the same place at the same time, and Co-Op will support that, it would be really nice if you didn't have the random teleporting.
Besides, it makes the game easier -- one player can draw all the fire and simply stay alive while the other charges ahead to the checkpoint.
Regardless, I guess I just don't see why this is a big deal. If the players get far enough apart that they're out of sight, why not simply split it into two simultaneous games at that point? Re-sync everything when they meet up again?
My guess is, it's probably a bandwidth issue.
What pisses me off is, like all other console games, they'd rather prevent you from trying to do something unusual than simply warn you that it might not work. For example, take a university -- all kinds of subnets, but huge amounts of bandwidth between them, especially considering between them and the Internet. If Halo 3 and the Xbox 360's Xbox Live work at all like Halo 2 and the original Xbox Live, it should be possbile to create a game with a specific group of friends, and if all of those friends share a network (if not a subnet), it should be as responsive as a LAN game, right?
I guess the answer, as with many things, is "not necessarily". It's always possible that the LAN game requires on broadcast packets, to reduce bandwidth used. Still, it would only have an effect with three players or more, so the above scenario is still valid for a two-player co-op game (since, as I understand it, three-player co-op isn't available).
I mean, they were busy blaming everything they could get their hands on for Columbine. There was so much blame that even on PBS, there was barely time left to mourn...
Here's my all-time favorite quote, though:
While that is true, it also takes that same amount of effort every time I see them.
More relevantly, maybe if enough people tag it as top10 and filter out top10 stories, the Slashdot editors will take the hint -- thus resulting in less top10 stories and more relevant ones.
Right here.
Honestly, if this outfit can't be bothered to Google (the keywords I searched for were "openoffice" and "roadmap"), let 'em have MS Office. They deserve it.
(Also, OpenOffice is not the only alternative. I use Koffice, but YMMV.)