Slashdot Mirror


Rewrites Considered Harmful?

ngunton writes "When is "good enough" enough? I wrote this article to take a philosophical look at the tendency for software developers to rewrite new versions of popular tools and standards from scratch rather than work on the existing codebase. This introduces new bugs and abandons all the small fixes and tweaks that made the original version work so well. It also often introduces incompatibilities that break a sometimes huge existing userbase. Examples include IPv4 vs IPv6, Apache, Perl, Embperl, Netscape/Mozilla, HTML and Windows. "

670 comments

  1. and this is new? by grendel_x86 · · Score: 1

    Maybe im just not getting the point of this. This is generally understood concept when planning a rewrite....

    --
    Im glad /. isnt the real world, that would really suck..
  2. Windows XP was a complete rewrite? by halo1982 · · Score: 4, Interesting
    I wasn't aware of this....ehh...I thought XP was just modified Win2k code (and I remember my early XP alphas/betas looked exactly like Win2k...same with Server 2003...)

    Was it a "good idea" for Microsoft to rewrite Windows as XP and Server 2003? I don't know, it's their code, they can do whatever they like with it. But I do know that they had a fairly solid, reasonable system with Windows 2000 - quite reliable, combining the better aspects of Windows NT with the multimedia capabilities of Windows 98. Maybe it wasn't perfect, and there were a lot of bugs and vulnerabilities - but was it really a good idea to start from scratch? They billed this as if it was a good thing. It wasn't. It simply introduced a whole slew of new bugs and vulnerabilities, not to mention the instability. It's just another example of where a total rewrite didn't really do anyone any good. I don't think anyone is using Windows for anything so different now than they were when Windows 2000 was around, and yet we're looking at a 100% different codebase. Windows Server 2003 won't even run some older software, which must be fun for those users...

    1. Re:Windows XP was a complete rewrite? by nakhla · · Score: 4, Informative

      Windows XP/Server 2003 were NOT complete rewrites of the OS. Many of the individual components within the OS may have received extensive retooling, but the OS as a whole was not a complete rewrite. New features were added. Existing features were modified. The code simply evolved from one version to another, just as with most products.

    2. Re:Windows XP was a complete rewrite? by Jahf · · Score: 2, Informative

      XP and 2003 are fairly minor tweaks of Windows NT, but they are missing some of the back-compatibility that was in Windows 2000 if I remember right.

      Windows NT was as close to a complete rewrite (of Windows 3.1) as Microsoft has attempted for a long time. Since then there were 2 main branches that derivated ... Windows 3.1 -> Windows 95 -> 98 -> ME and Windows NT 3.5 -> NT4 -> 2000 -> XP -> 2003.

      XP was in no way "from scratch".

      Longhorn sounds like it will use a NT-derivative kernel, but may end up being close to a rewrite. One would hope so given the time they are going to take for it.

      --
      It is more productive to voice thoughtful opinions (reply) than to judge (moderate) others.
    3. Re:Windows XP was a complete rewrite? by Fnkmaster · · Score: 3, Informative
      It was not a rewrite, and thus is a terrible example. In fact, if you poke around it's referred to in several places internal to the OS as "Windows NT 5.1" to Win 2k's "Windows NT 5.0". That should give you a pretty good clue that it's not a rewrite.


      And the fact that somebody thought it was should give you a good clue that Microsoft's marketing machine is quite a powerhouse indeed - they want the average consumer to THINK that XP was some totally new thing. It wasn't. In fact, if you install all the latest DirectX runtimes, patches and so forth into Win 2k, you will basically conclude that the difference between a fully patched up-to-date Win 2k and Win XP is themeability and some graphics geegaws. And that product activation stuff if you are running a non-corporate version of XP.

    4. Re:Windows XP was a complete rewrite? by grendel_x86 · · Score: 1, Insightful

      XP is not a total rewrite, there is still some code in there from win 3.1 and nt 3.51

      Longhorn is a rewrite.

      You must consider the source when reading articles. This is not a credible source, just some person's site. Im sure they have pondered this, but they supply no sources for their information.

      --
      Im glad /. isnt the real world, that would really suck..
    5. Re:Windows XP was a complete rewrite? by Kenja · · Score: 1, Interesting

      New network stack, kernel, driver model, GDI, interface, hardware layer. If thats what you think of as a small change I'd hate to see what you think is a major one.

      --

      "Have you ever thought about just turning off the TV, sitting down with your kids, and hitting them?"
    6. Re:Windows XP was a complete rewrite? by halo1982 · · Score: 1

      I should have pointed out that I was trying to show how bad this article is. I know XP isn't a total rewrite (even longhorn isn't a TOTAL rewrite) but this um well educated person apparently doesn't!

    7. Re:Windows XP was a complete rewrite? by Anonymous Coward · · Score: 0

      The article is wrong then. Notice how when there is a security hole in XP, it almost always in 2000, and vice versa. Also 99% of things that are designed for 2000 will run without complaining on XP, likewise XP drivers will work fine on 2000. Not definitive proof I agree, but surely if this was a complete rewrite they would't completely match each other patch by patch for so many things? Why bother to rewrite when you basically come out with exactly the same as you had before? Maybe they just Copy Pasted it all :-)

    8. Re:Windows XP was a complete rewrite? by no+soup+for+you · · Score: 1

      I wasn't aware of this....ehh...I thought XP was just modified Win2k code (and I remember my early XP alphas/betas looked exactly like Win2k...same with Server 2003...)

      I saw this also, but I think what the author meant was Windows 95 -> 98 -> 98SE -> ME ... Then Windows XP was the merging of the 2000 and 98 product lines.

      --
      If you blog it...
    9. Re:Windows XP was a complete rewrite? by rushfan · · Score: 5, Informative

      Very true... One of the few "rewrites" that Microsoft has rever done is the NT codebase (which was actually more of OS/2 morphing into NT), and that wasn't a true rewrite since the "original" DOS/Win31 codebase keps livingo on with Win96/98/ME.

      MS has tried some rewrites (I think they tried in Excel rewrite, I think Code Complete references that) but scraped them (also never giving up on the previous generation codebase).

      That's one thing they do well (for better or worse) is not waste any money on rewrites (look at Win9x)

      Rushfan

    10. Re:Windows XP was a complete rewrite? by Fnkmaster · · Score: 3, Informative
      When you say "new", you mean changed. I don't think the kernel was rewritten from scratch, was it? Driver model? I'm under the impression that most Windows 2000 drivers are more-or-less ABI compatible with Windows XP without modification. Apparently the DDKs aren't that different between the two OS's, though there were of course changes (http://www.osronline.com/article.cfm?id=249). There were a substantial number of additions to the network stack (http://www.microsoft.com/technet/treeview/default .asp?url=/technet/prodtechnol/winxppro/evaluate/ne twkxp.asp but not a rewrite that would categorize it as "new" as far as I know.


      The point is that all the items you mentioned were changed, but most were not rewritten from scratch, which is what this thread is all about.

    11. Re:Windows XP was a complete rewrite? by TwistedGreen · · Score: 1

      Windows NT was as close to a complete rewrite (of Windows 3.1)...

      Really? I didn't think there was much to rewrite. ;)

    12. Re:Windows XP was a complete rewrite? by Karamchand · · Score: 1

      XP is not a total rewrite, there is still some code in there from win 3.1 and nt 3.51

      As well as code from BSD..

    13. Re:Windows XP was a complete rewrite? by Mod+Me+God · · Score: 1

      Yes, it was a transition process, not a blank sheet of paper (though not a DOS6 -> DOS 6.2 either)

      I think Windows was a rewrite of Windows-For-Workgroups (a significant re-write of Win3.1 and the branching of a network capable corporate OS aka NT4.0 vs 95/98, until XP).

      But the transitive process is obvious, not least because Windows XP is identified as NT5.1, Win2K was NT5.0 and NT4.0 was, err, NT4.0.

      --
      --

      FreeNET user? Comfortable with the adverse selection?
    14. Re:Windows XP was a complete rewrite? by Threni · · Score: 2

      > I thought XP was just modified Win2k code

      Yep. Windows 2000 is Windows 5.0; XP is 5.1. Hardly a major rewrite.

    15. Re:Windows XP was a complete rewrite? by rogabean · · Score: 1

      as far as I see XP was NOT in any way a code rewrite. i'm not sure how the author determined that.

      right down to bugs that have carried over such as the right click bug that pushes CPU usage up to 100% for a moment. this affects 2K, XP, 2003 and has even been reported in the leaked copies of "Longhorn".

      Microsoft is not a company I would cite when discussing code rewrites.

      With that said, I feel the author is right on with alot of other points, but from a programmers point of view, sometimes a "newer version" of a piece software just isnt possible with the old codebase. Time and development have turned the code to spaghetti and adding new features to the code just isn't doable anymore (or rather it would be simpler to rewrite the code from the ground up).

      Like it or not, users want new features. Otherwise i go to another product later that has the new features. You see this in all apsects of our consumer lives, not just software.

      --
      "why don't you just slip into something more comfortable...like a coma!"
    16. Re:Windows XP was a complete rewrite? by Gherald · · Score: 4, Insightful

      > XP and 2003 are fairly minor tweaks of Windows NT, but they are missing some of the back-compatibility that was in Windows 2000 if I remember right.

      No, you have got it backwards. XP and 2003 are both MUCH more back-compatible than Win2k.

      Asside from NT, Win2k was the most incompatible windows ever. Stable, but with many compatibility problems with both hardware and software. Especially before the various service packs came out.

      > XP was in no way "from scratch"

      You are correct. XP is the Win2k codebase with many features added and much better hard/soft compatibility. It was designed to be both a home/office OS, whereas Win2k was designed specifically to be a robust server/workstation.

      Incidentally, after all this time there is still an ongoing debate about whether XP or 2000 are more stable as a workstation client. As a network admin for 46 stations, my vote goes for XP.

    17. Re:Windows XP was a complete rewrite? by glitch! · · Score: 1

      >> Windows NT was as close to a complete rewrite (of Windows 3.1)...
      > Really? I didn't think there was much to rewrite. ;)

      There is probably a fair amount of work porting any MSDOS program to VMS...

      --
      A dingo ate my sig...
    18. Re:Windows XP was a complete rewrite? by Gherald · · Score: 1

      Windows-for-Workgroups was not a significant rewrite of Win3.1 They just removed 286 compatibility ("standard mode") and added networking support.

      But yeah, 2k --> XP was transitional. If you want an analogy: DOS 4 --> DOS 6, I would say

    19. Re:Windows XP was a complete rewrite? by Jahf · · Score: 3, Informative

      Compared to rewriting NT/XP into Longhorn will be, no. but compared to something like DOS 2 to DOS 3 (or was DOS 2 the rewrite?), it was a HUGE undertaking at the time. Creating a 32bit kernel from a 16bit one was pretty big news at the time.

      --
      It is more productive to voice thoughtful opinions (reply) than to judge (moderate) others.
    20. Re:Windows XP was a complete rewrite? by drakaan · · Score: 1

      Windows XP was the disappearance of the Win 9x/ME product line, and the forking of Windows 2000 into Home and Commercial versions...well, technically, there *was* no "home" version of Win2k, but you get the idea. Both versions of Windows XP are built on the NT kernel, not versions of 9x/ME were.

      --
      "Murphy was an optimist" - O'Toole's commentary on Murphy's Law
    21. Re:Windows XP was a complete rewrite? by Richard_at_work · · Score: 1

      As does pretty much any modern OS. So dont say it like its a bad thing.

    22. Re:Windows XP was a complete rewrite? by ngunton · · Score: 1

      Sorry if I'm mistaken about Windows XP. I just seem to remember reading about this in the computer press around the time that XP was coming out - they were saying that XP would be a lot better because of the millions of lines of new code (and I seem to remember something about it being pretty much a rewrite). I can't find the reference now, of course. I assume there are quite a few people out there who know a lot more about Windows than I do, this was just from memory.

    23. Re:Windows XP was a complete rewrite? by JohnnyComeLately · · Score: 2, Insightful
      I have to agree in concept with the author of the piece. I have installed Solaris 8 on quite a few systems and just ran with what it included, and maybe added a few packages (SSH, PHP, etc) for different things. Life was simple and everything worked, everytime.

      Then I changed jobs where there's not a single Unix machine to be found. Needing to set up a server (and knowing apache did what I needed), I took a PC and tried installing RedHat 8 from a disk I burned from a friend a long time ago. This is where my life got frustrating. I spent three weeks banging on this thing until someone mentioned Apache and Mod_Perl having different versions....oh yeah, and 1.99 is actually 2...WTF?? I came so close many times to just going on E-bay, buying an old Sun Ultra10, and donating it to work.

      Yes, I eventually got it to work (it's what I'm using now to write this, on a Mozilla browser), but it just seems like things were more complicated than they needed to be. Apache 1 worked....mod_perl 1 worked....

      So, since I agree with the author does that make me flamebait too? I guess the upside is now I have more books, as I went out and bought some Linux books to sit on the shelf next to my Sun Solaris System Admin 1 and 2 boxes.

      The reason I knew right away that I'd sympathize with this article is that all my co-workers (at my former job) were upgrading to Sol9. They'd ask, why aren't you upgrading? I'd always ask, why should I? Silence... Occasionally someone would mention OpenSSH, but then I'd remind them that took me less than 2 minutes to download, untar and pkgadd. A lot less time than a full OS load.

      John

    24. Re:Windows XP was a complete rewrite? by foo+fighter · · Score: 1

      As a network admin for 46 stations, my vote goes for XP.

      I admin a medium-sized network of a couple handfuls of servers, 200+ clients and 350+ users by myself. (I'm not masochistic, it's a non-profit with a limited personnel budget.)

      My vote goes to Windows 2000. I don't know what compatibility problems you were having, but all our hardware and homegrown-apps worked after the move from 98 to 2K. This includes ancient DOS-based data processing apps.

      The user's are locked down now, their programs work, and every thing is centrally administered thanks to group policy and active directory. Overall it's been very nice.

      I suppose if you were just now transitioning from a 98/NT client base you'd go with XP Pro, but only because most vendors I've talked to won't sell you 2K unless you are just buying license packs and have preexisting relationship. YMMV.

      XP added a few neat features, like remote desktop, to the operating system, but really nothing you couldn't get with 3rd party apps for 2K if you needed them. The new UI just sucks IMNSHO. It's not any more stable in my experience, and so, because it really adds nothing, I see no use for it in my organization.

      Server 2003 has quite a few big changes from what I've read, mostly in the Active Directory. We just got it a couple weeks ago so I haven't had time to really dig into it yet, but it looks like much more of an improvement from 2000 Server than XP was from 2000 Professional.

      My $0.02.

      --
      obviously no deficiencies vs. no obvious deficiencies
    25. Re:Windows XP was a complete rewrite? by wideBlueSkies · · Score: 1

      XP (both home and pro) are based upon the NT kernel.

      AFAIK the Win 9x code base is dead.

      wbs.

      --
      Huh?
    26. Re:Windows XP was a complete rewrite? by kdz13 · · Score: 1

      Mmmmm.... Windows 96. I really liked that one

    27. Re:Windows XP was a complete rewrite? by Anonymous Coward · · Score: 0

      NT 3.1 = 1.0 product. it's not a REWRITE of anything.

      it was given the name 3.1 to match DOS based windows 3.1

      NT 3.5 = 1.1 product.

      NT 4.0 = 2.0 product.

      Win2k = 3.0 product.

      WinXP = 3.1 product.

      Longhorn = 4.0 product.

    28. Re:Windows XP was a complete rewrite? by Space_Soldier · · Score: 0

      Windows 2000 NT5.0
      Windows XP NT 5.1
      Windows 2003 NT 5.2

      No rewrites, only additions, fixes, more multimedia integration (in case of xp). IIS is more integrated with the NT kernel on 2003. That may have been a rewrite in case of IIS, which resulted in grate improvements. I don't know where you got the stupid idea of XP being a rewrite of 2000. You can't rewrite an OS in 1.5 years.

    29. Re:Windows XP was a complete rewrite? by Anonymous Coward · · Score: 0

      the savings alone in 300 licenses of pc anywhere would be worth the non existent cost difference between buying win2k or xp seats.

      xp comes with built in remote desktop assistance. or do you send your techs walking everytime someone has a miniscule problem?

    30. Re:Windows XP was a complete rewrite? by Gherald · · Score: 4, Informative

      The user's are locked down now, their programs work, and every thing is centrally administered thanks to group policy and active directory. Overall it's been very nice.

      Locking the users down, group policy, and active directory are as much a part of XP as 2K.

      The new UI just sucks IMNSHO

      I agree.

      Start --> Run --> gpedit.msc --> User Config --> Admin. Templates --> Control Panel --> Display --> Desktop Themes --> Force Windows Classic

      I have a .reg file for this and other settings to speed the process, since this used to be a very small business that has grown very fast and we never bothered to set up a network-wide group policy system.

      Our servers are 2K so I can't comment on 2003. I'm trying to sell the execs on using kernel 2.6 and samba 3.x for our next server. I figure something approaching 2.6.10 ought to be out by the time we are ready, so it should be stable enough.

    31. Re:Windows XP was a complete rewrite? by Anonymous Coward · · Score: 0

      longhorn is not a rewrite.

      sure huge portions are new, added on.

      and large portions will be modified.

      but a rewrite?

      no sir.

    32. Re:Windows XP was a complete rewrite? by Gherald · · Score: 2, Interesting

      Well I don't know what he does, but here we use VNC. That way we can take over the user's session directly, while they watch. Then I usually leave a quick message in notepad explaining what I just did. Some of them actually get it, and end up fixing the problem themselves next time. So I get more time to reload slashdot ;)

    33. Re:Windows XP was a complete rewrite? by Trejkaz · · Score: 1

      I dunno, I like the new UI. It lets me make Windows more bearable to look at, by making it look more like other operating systems.

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    34. Re:Windows XP was a complete rewrite? by Anonymous Coward · · Score: 0

      It's not any more stable in my experience and so, because it really adds nothing, I see no use for it in my organization.

      So in other words, you played with it for 10 minutes, hated the GUI, and so you did no meaningful comparison to Win2K. You've had no chance to experience the real reliability or the thousands of other more subtle improvements. Therefore you have no basis for an opinion on the subject.

      Thanks for playing.

    35. Re:Windows XP was a complete rewrite? by Gherald · · Score: 2, Insightful

      The new UI really is a love/hate thing. I started using 95 the week it was released, so I am very attached to the old theme.

      There are plenty of people who like the new theme... but there is too much color there for my tastes.

      "Crayola interface", indeed!

    36. Re:Windows XP was a complete rewrite? by dtfinch · · Score: 3, Funny

      Notice how if you increment the letters in VMS you get WNT.

    37. Re:Windows XP was a complete rewrite? by Planesdragon · · Score: 1

      My vote goes to Windows 2000.

      From your post, you don't use XP--hence, your vote doesn't really matter as to "which is more stable."

      The new UI just sucks IMNSHO.

      The configurable part or the themeable part?

      I'll grant that the "luna" theme sucks--but I use the old theme at home, and I find XP's little tweaks to the Start Menu and system tray to be a vast improvement over the old 98ish standard that 2000 used.

    38. Re:Windows XP was a complete rewrite? by smittyoneeach · · Score: 1

      I just hate the way important things keep getting buried. How much interface effort does it take to change a few environment variables? That's enough inteface devolution for Mothersbaugh to write an album.
      The text-based configuration file, with easy versioning and commenting, is king.

      --
      Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
    39. Re:Windows XP was a complete rewrite? by Gherald · · Score: 1

      It takes 6 clicks to change an env variable w/o the keyboard.

      If you press ctrl+break to start, it takes 3 clicks

      If you like text-based, type "set /?" on the cmd line.

      I like text-based configuration files better as well, but the vast majority of the world's population does not. Windows is targeted at everyone, not us geeks.

    40. Re:Windows XP was a complete rewrite? by whorfin · · Score: 1

      New driver model

      I dunno about the others components you mentioned, but as I sit here at work, I'm working a windows driver. It is a 2K/XP driver. The DDK has changed some from the Win2K DDK, but the changes are relatively minor, and seem largely to be compiler-compatibility, since MS made some significant chages to their compiler between VS6 (Win2K) and VS.Net (WinXP/2003). We upgraded compilers recently, and had to update the DDK solely to match the compiler.

      Yes, a few new functions are available with each OS rev that we are choosing not to use, since we want to be backwards compatible.

      And since the driver is, essentially, an implementation of GDI for our device, I suspect that not a lot has really changed about GDI between 2K and XP.

      --
      Laugh while you can, monkey-boy!
    41. Re:Windows XP was a complete rewrite? by Anonymous Coward · · Score: 0

      True, true. Tragic, no?

    42. Re:Windows XP was a complete rewrite? by ahdeoz · · Score: 0

      all I get (in XP pro) when I type set/? is a refresher on .BAT scripting, only some of which has to do with environment variables, but it still doesn't tell you how to set an environment variable other than in the current "shell" or batch file.

    43. Re:Windows XP was a complete rewrite? by Anonymous Coward · · Score: 0

      I press CTRL+BREAK under XP. Nothing happened. Same number of clicks.

      Typing SET in a Command Prompt will set environment variable. However, it only exists within that Command Prompt and goes away when C.P. is closed.

      Listen, I thought environment variables were buried under NT3/4, but under 2K/XP they've added another step to get to them, which is ridiculous. There's a point where enough has to be enough, where lusers are going to mess up their system no matter how many steps you make, and I think they've gone one step too far.

    44. Re:Windows XP was a complete rewrite? by Gherald · · Score: 1

      err excuse me - its WINKEY + Break, not ctrl.

    45. Re:Windows XP was a complete rewrite? by PeterHammer · · Score: 1

      The only type of program I ever had a problem with in Windows 2000 are games. And they had the same problem in Windows XP, except that XP lets you run the program in compatibility mode.

      In my view of the world, compatibility mode, does not mean the OS is more compatible. It is a hack, and having the user fumble through trial and error ("humm...is this Windows 98 SE or Windows ME compatible?") is not an elegant solution. It simply means Microsoft realized how many customers they were pissing off if people could no longer play Pac Man.

    46. Re:Windows XP was a complete rewrite? by Anonymous Coward · · Score: 0

      Ah, looks like you need a seperate utility to work with real environemtal variables.

      I love how Microsoft is making lots of CLI tools. Win2k and XP have many more tools than 98, ME, and NT did, and Microsoft keeps releasing new tools like this setx.exe one.

      I think their strategy was to rush WinXP to market, and then make free tools for it after that. Good thinking on their part, and a welcome change from previous incarnations of windows.

      Perhaps even more utilities like this will be integrated into Longhorn, but thats years off anyway so who cares.

    47. Re:Windows XP was a complete rewrite? by Anonymous Coward · · Score: 0

      One measure of stability is the long-term stability of an OS.

      I have Windows 3.1 diskettes and use them occasionally to install a useful Operating Environment onto, say, an old 386sx laptop someone wants to use for writing.

      If Windows 3.1 had been hamstrung by the licensing/validation abomination that is in XP, it wouldn't be possible at all to use those old laptops.

      Part of 'long term stability' is the ability of a piece of software to actually be USED over the long term.

      Fuck you, Microsoft, and your activation games. You know you wish you could 'expire' things you no longer sell the day they're retired from your catalog. Too bad.

    48. Re:Windows XP was a complete rewrite? by Trejkaz · · Score: 1

      I hate the new theme, but the new UI is skinnable. The skin I'm running here is a ripoff of OSX, late last year it was a ripoff of KDE's Keramik. :-)

      I wonder if there's a way to automatically convert GNOME or KDE themes to Windows themes... that would be kickass.

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    49. Re:Windows XP was a complete rewrite? by Gherald · · Score: 1

      I think it is elegant because it is a large part of what allows XP to be so stable.

      98 SE and ME were 'elegant' in your sense of the word because they could run 95 programs w/o much of a problem. But this (and many related things) affected stability in a negative way.

      With XP, Microsoft brought in a new and stable code base, NT/2K, and added a seperate compatibility mode for 9x and ME programs. This was a very good move IMO.

    50. Re:Windows XP was a complete rewrite? by Aumaden · · Score: 1

      Note: that only works on XP Pro. XP Home does not have gpedit. However, you can achieve much the same effect by going to the services control panel and disabling 'Themes'.

    51. Re:Windows XP was a complete rewrite? by Gherald · · Score: 1

      Ah, thx for that. Hopefully I will never have to deal with Home, but it is good to know.

    52. Re:Windows XP was a complete rewrite? by Anonymous Coward · · Score: 0

      2k --> XP was transitional. If you want an analogy: DOS 4 --> DOS 6, I would say

      Er, try DOS 5 -> DOS 6. Or, even better, DOS 6.0 -> DOS 6.2.

      DOS 4 -> DOS 6 would be the upgrade from ME to XP Home; from a buggy piece of shit to something that at least does some of what it says on the box.

    53. Re:Windows XP was a complete rewrite? by phorm · · Score: 1

      Control Panel --> System --> Advanced --> Visual effects --> Adjust for best performance

      (or tweak as desired).

    54. Re:Windows XP was a complete rewrite? by Gherald · · Score: 1

      Hmm, is that system-wide or per-user ?

    55. Re:Windows XP was a complete rewrite? by kin_korn_karn · · Score: 1

      you can also turn the new UI completely off, which is what I've done. You get the nice new features without the blue/green balloon shit

    56. Re:Windows XP was a complete rewrite? by Anonymous Coward · · Score: 0

      The blue/green is the THEME.

      Let's say it again for clarity. The blue/green is the THEME.

      Almost every XP system I load at LEAST gets switched to the Silver theme, if not a trip to WinCustomize.com.

      But the Luna Start Menu, among other things, is a vast improvement to things.

    57. Re:Windows XP was a complete rewrite? by Joe+U · · Score: 2, Interesting

      Just a FYI:

      There is no OS/2 code in Windows NT. Microsoft made that very clear to those in the Windows NT 3.1 beta.

      Windows NT 3.1 was a true first generation product.

    58. Re:Windows XP was a complete rewrite? by Trejkaz · · Score: 1

      I have a theme I hacked up which is a "re-rectanglarised" version of the Rhodium Edge theme. I never made it available but it strikes me I've never found a theme more usable in my life... okay, maybe this was bragging. :-/

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    59. Re:Windows XP was a complete rewrite? by drinkypoo · · Score: 1

      My understanding is that Windows NT was originally a product for OS/2 and that it was entwined with the OS/2 sources. I find it hard to believe that all of the OS/2ness was gone from Windows NT by 3.1. Given that Windows Server 2003 is not a complete rewrite, I would be surprised if there was no code from OS/2 in today's Windows NT.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    60. Re:Windows XP was a complete rewrite? by Anonymous Coward · · Score: 1, Informative

      Except that ME and XP Home are from completely different product lines. Apart from that, your analogy isn't too far off the mark.

    61. Re:Windows XP was a complete rewrite? by drinkypoo · · Score: 1

      The new driver model came along in windows 2000, not windows XP. Windows XP has some different dialogs discussing driver signing, and I'm sure the code has changed slightly, but generally speaking, the windows 2000 driver IS the Windows XP driver, with few exceptions. Sometimes they change some strings or something.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    62. Re:Windows XP was a complete rewrite? by Unregistered · · Score: 1

      I think they mean MS is currently rewriting windows in Longhorn. Or he's clueles.

    63. Re:Windows XP was a complete rewrite? by drsmithy · · Score: 1
      Very true... One of the few "rewrites" that Microsoft has rever done is the NT codebase (which was actually more of OS/2 morphing into NT) [...]

      OS/2 (as a product, ie: codebase) did not "morph" into NT. The only "morphing" of OS/2 into NT was done by the product naming, marketing and business strategy groups.

      [...]and that wasn't a true rewrite since the "original" DOS/Win31 codebase keps livingo on with Win96/98/ME.

      It wasn't a "true rewrite" because it wasn't a rewrite at all - NT was developened from scratch. Windows 95 might conceivably be viewed as a significant rewrite of Windows 3.x, however.

    64. Re:Windows XP was a complete rewrite? by drinkypoo · · Score: 1

      Personally I patched my uxtheme.dll and loaded a longhorn-ish them on my Windows XP system, which I feel makes it look better than any version of Windows released to date. The functionality is actually built into the OS, it only has to be enabled. Of course, good luck getting any support, but it works very well.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    65. Re:Windows XP was a complete rewrite? by SnowZero · · Score: 1

      When I interned at MSFT in 1998, NT5 had ~52 million lines of code. It was probably more by the time it shipped as Win2K, thus a few million lines is less than 6%. Although the raw number is big, it is by no means a rewrite.

    66. Re:Windows XP was a complete rewrite? by drsmithy · · Score: 1
      Windows NT was as close to a complete rewrite (of Windows 3.1) as Microsoft has attempted for a long time.

      Ah, Windows NT is in no way, shape or form a rewrite of Windows 3.1 (unless you mean NT 3.1, but even then it wasn't close to a "complete rewrite").

    67. Re:Windows XP was a complete rewrite? by Anonymous Coward · · Score: 0
      I suppose if you were just now transitioning from a 98/NT client base you'd go with XP Pro, but only because most vendors I've talked to won't sell you 2K unless you are just buying license packs and have preexisting relationship. YMMV.

      Sure they will. You'll buy XP (workstation)/2003 (server) licences, and use whatever media you want (2000).

    68. Re:Windows XP was a complete rewrite? by G-funk · · Score: 1

      Wasn't the core like 30% ported from VMS or some such?

      --
      Send lawyers, guns, and money!
    69. Re:Windows XP was a complete rewrite? by Trejkaz · · Score: 1

      I love those Longhorn themes. They're so flat, it's refreshing sometimes to have a user interface which doesn't look bulgingly 3D. Those themes also fit with the 'new look' of office and a few other apps, which was probably the point anyway.

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    70. Re:Windows XP was a complete rewrite? by Jahf · · Score: 1

      Since I didn't give a version number, I meant the first Windows NT product.

      While not a complete rewrite, it was much more of one than the example than the thread parent's example of XP as a rewrite, which was what I responded to.

      --
      It is more productive to voice thoughtful opinions (reply) than to judge (moderate) others.
    71. Re:Windows XP was a complete rewrite? by Joe+U · · Score: 0

      Windows NT started as a rewrite of Windows for the soon to be released N-Ten processor. (Of course, there never was a N-Ten processor, so Microsoft marketing retooled the name to mean New Technology). The idea for the Windows NT project was to get Microsoft out from behind IBM's shadow and OS/2.

      Windows NT was designed from the ground up to be based on the same concepts that made the VAX a good system. (The main reason for using VAX/VMS as their model was due to the fact that David Cutler, one of the VAX/VMS creators was hired by Microsoft right after quitting Digital)

      While Windows 3.1, OS/2 and VMS were the basis for the design of Windows NT, the codebase had to be written from scratch. There is NO OS/2 code in Windows NT, if there was, IBM would have a claim on Windows NT. There is also no VMS code in Windows NT (that would have started a lawsuit that Microsoft couldn't possibly win at the time). There is also no Windows (1, 2, 3.x) code in the Windows NT kernel, as NT was created as a 32bit OS from the ground up, 16 bit code was out.

      So to sum it up, Windows NT was never entwined with OS/2, it was designed to compete with it from Day 1.

      If you're interested in the Windows NT story, which is actually pretty interesting, check out winnetmag.com, they have a good article on it.

    72. Re:Windows XP was a complete rewrite? by Anonymous Coward · · Score: 1, Insightful

      Actually it's possible to get that level of compatabilty with W2k. Just install the Windows Application Compatability Toolkit (it's available for free off of M$'s site). I use it at work (a high school). IMO, W2K + WACT is far more stable (and faster) than XP Pro.

    73. Re:Windows XP was a complete rewrite? by phorm · · Score: 1

      Good question. I'm not sure on the answer though, why not try it?

    74. Re:Windows XP was a complete rewrite? by Guy+Harris · · Score: 1
      (Of course, there never was a N-Ten processor, so Microsoft marketing retooled the name to mean New Technology).

      Are you certain that N10 wasn't the Intel code name for the i860?

    75. Re:Windows XP was a complete rewrite? by Joe+U · · Score: 1

      I think you are right. I guess I lost track of the N-Ten history.

    76. Re:Windows XP was a complete rewrite? by Gumber · · Score: 1

      The OS that became WindowsNT (and eventually win2k and XP) was in development before Windows really took off with 3.x. So I'm not sure its fair to call it a rewrite of 3.1. What ended up happening is that they decided to capitalize on the success of 3.x and adopted its version number, its UI, and much of its API (at least as far as GUI code went.

      Microsoft isn't stupid. They know that the biggest return on investment comes from code they didn't have to write, so they use as much of their old code as possible, trying to focus their efforts on writing new code that brings new features.

      In the process, some subsystems are replaced or superceeded. The old APIs typically stand though, but they may become a sort of translation layer on top of a new API, rather than maintaining the entire replaced subsystem for compatibility.

      Taking the example of longhorn, two major changes come to mind. 1) The are making major changes to their graphics layer, which should enable things like standard 3d ui elements, multiple video overlays, improved text rendering and layout. 2) The are grafting SQL Server and NTFS together to enable much richer use of file-metadata, and on top of that, they are layering a lot of standardized schemas for representing various information (like workflow status, contact information, etc) which should improve datasharing between applications, as well as the users search/retrieval experience.

      Probably the biggest driver of outright rewrites though is going to be security concerns. Microsoft continues to retool the OS to fix all its security falws.

    77. Re:Windows XP was a complete rewrite? by Gumber · · Score: 0

      Among other things, WinXP represents the merging of the Win 9X/ME codebase with the WinNT/2K code base. (something originally slated for Win2k).

      Given that, its not suprising that XP wins the compatibility prize.

    78. Re:Windows XP was a complete rewrite? by Gherald · · Score: 1

      Of course it is not suprising. In fact, I thought it was common knowledge. But appartently a few people didn't know it...

    79. Re:Windows XP was a complete rewrite? by IntlHarvester · · Score: 2, Informative

      There is NO OS/2 code in Windows NT

      Not true. The "LanMan" SMB Networking is right out of OS/2. This was even bragged about in the early NT documentation because it meant NT could slide-in to your SMB network seamlessly. For a long time, OS/2 and NT domain controllers were interchangable.

      There's also the HPFS filesystem code in NT3, and NTFS, which is admittedly based on HPFS. It's also highly doubtful there's 0 OS/2 code in the "OS/2 Subsystem".

      if there was, IBM would have a claim on Windows NT

      Microsoft and IBM had a "divorce" agreement - as reported in the press, this allowed them to share co-developed products -- which I think included DOS 5, Windows 3.0, and OS/2 1.3.

      --
      Business. Numbers. Money. People. Computer World.
    80. Re:Windows XP was a complete rewrite? by Anonymous Coward · · Score: 0

      Uhh, you did know there's a little tab in the Display properties box that has a drop box that lets you set whether or not you want to use the standard or 'Windows XP' theme.

    81. Re:Windows XP was a complete rewrite? by Joe+U · · Score: 1

      I was in the developers beta. My sources said there was no OS/2 code. I don't see a reason why they would lie about it.

      Also, I'm not saying Microsoft didn't look at OS/2 while they were working on NT 3.1, they said that outright.

      As for your other points:

      The LanMan SMB networking is right out of Lan Manager for DOS, of course re-written for the NT architecture.

      HPFS had to be rewritten for the NT driver model, or it wouldn't have worked.

      As for the OS/2 subsystem, I would think the same thing applies. It made more sense to rewrite DOS and Windows 3.1 support, so why not OS/2 support?

      To try and retrofit something do a different architecture would be pointless when you designed the original and can recode each function to the new system.

      To sum it up, there is no DOS in NT, there is no Windows 3.1 in NT and there is no OS/2 in NT.

      If you want more proof, google for it. There should be something in USENET circa 1992/3. Tho, we did use Compuserve and the Microsoft BBS for support channels back then, that information is most likely lost.

    82. Re:Windows XP was a complete rewrite? by foo+fighter · · Score: 1

      Locking the users down, group policy, and active directory are as much a part of XP as 2K.

      I know. I thought that was the point I was making. XP doesn't really add anything to 2k. Since we have already standardized on 2k from 98/NT, why bother with XP?

      --
      obviously no deficiencies vs. no obvious deficiencies
    83. Re:Windows XP was a complete rewrite? by Ryosen · · Score: 1

      >>by making it look more like other operating systems.

      As long as they're made by Fisher-Price.

      --

      Ryosen
      One man's "Troll, +1" is another man's "Insightful, +1".
    84. Re:Windows XP was a complete rewrite? by Ryosen · · Score: 1

      We use both XP and 2000 on the client. Without a doubt, XP is the biggest, buggiest piece of garbage to have come out of Redmond in a long time. SMB compatibility was broken in XP and has yet to have been acknolwedged, much less fixed. We just rolled out 30 brand-new XP machines. Whenever they attempt to access a file in a shared directory, they freeze. This happens in Office, Explorer and custom applications. We are now faced with the prospect of either upgrading the file servers to 2003 (with no guarantee of success) or downgrading the clients to 2000. We have never had a problem like this with our 2000 and NT clients.

      In the interest of making a thorough post, the clients are all P4s, pre-built by Dell. Network drivers were updated and we even stripped one machine and rebuilt it from scratch using a retail version of XP (not the OEM version provided by Dell). Other manufacturer's machines in other environments have exhibited identical behavior, so I doubt that it's Dell's fault. This issue has been discussed quite a bit on the Web.

      Incidentally, don't bother deploying Office 2003 if you are intending to connect to an Exchange 4 (yes, 4...I know...please, don't get up) server. Since Exchange 4 is no longer supported, MS neglected to test Outlook (and it's embedded Exchange client) against it. There are still many companies running on Exchange 4 (my client being one of them). For many of them, the cost of upgrading is prohibitive, even with SBS. In fact, even in you're on a "modern" mail server, stay away from Office 2003. It's been extremely buggy in areas too numerous to go into here.

      So, yeah, my vote goes to Windows 2000.

      --

      Ryosen
      One man's "Troll, +1" is another man's "Insightful, +1".
    85. Re:Windows XP was a complete rewrite? by Ryosen · · Score: 1

      The only issue that I have had with Windows 2000 (and I've been on it since it was called NT 5) is that it won't run DOS games (e.g. Privateer).

      Does anyone know if the compatibility mode in XP allows you to play some of the oldies? I'll push my luck and say in particular, Privateer, as I have yet to find a suitable replacement. (No, Freelancer didn't do it for me).

      --

      Ryosen
      One man's "Troll, +1" is another man's "Insightful, +1".
    86. Re:Windows XP was a complete rewrite? by IntlHarvester · · Score: 1

      Microsoft people have a tendancy to overstate the truth. Keep in mind that NT was originally advertised as "OS/2 3.0", so they probably wanted to make it very clear that the base operating system was all new code (which I agree it was).

      The LanMan SMB networking is right out of Lan Manager for DOS

      I don't think you could run a domain controller on LanMan for DOS. The Resource Kit claimed it was based on OS/2 LanMan.

      Another point I forgot is that the bootloader would occassionally throw an "!OS2" error or something .... Hmm.

      there is no OS/2 in NT

      Unless you were on the development team, I don't think you are in a position to state this.

      --
      Business. Numbers. Money. People. Computer World.
    87. Re:Windows XP was a complete rewrite? by Trejkaz · · Score: 1

      You're right. Mac OSX, KDE and GNOME do look a bit like Fisher-Price, actually.

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
    88. Re:Windows XP was a complete rewrite? by Joe+U · · Score: 1

      Unless you were on the development team, I don't think you are in a position to state this.

      And unless you were on the dev team, I don't think you're in a posistion to state otherwise.

      I'll take what they said as fact, I have no reason to believe they tried to mislead me, or any of the other developers and beta testers.

      There is no OS/2 code in Windows NT.

      End of story, anything else is approaching tinfoil hat land.

    89. Re:Windows XP was a complete rewrite? by rushfan · · Score: 1


      Unless you were on the development team, I don't think you are in a position to state this.

      And unless you were on the dev team, I don't think you're in a posistion to state otherwise.

      I'll take what they said as fact, I have no reason to believe they tried to mislead me, or any of the other developers and beta testers.


      MS have no reason to mislead anyone? You have got to be joking.

      "MS Pride" is a very good reason for them to lie (aka "market") NT as a completely new codebase, besides MS doesn't throw anything away, and I'm sure they wouldn't throw away the OS/2 code. Besides then and still now, I think IBM has a better record of writing reliable software.

      Rushfan

    90. Re:Windows XP was a complete rewrite? by Boltronics · · Score: 1

      A friend brought it on a trip to Hong Kong. :)

      --
      It's GNU/Linux dammit!
    91. Re:Windows XP was a complete rewrite? by IntlHarvester · · Score: 1

      You might be right, but petulantly stomping your feet doesn't make for a very convicing argument.

      --
      Business. Numbers. Money. People. Computer World.
    92. Re:Windows XP was a complete rewrite? by Joe+U · · Score: 1

      You're right the tinfoil hat comment was rude.

      So, lets get right back to suggesting that the NT developers are a bunch of liars.

    93. Re:Windows XP was a complete rewrite? by IntlHarvester · · Score: 1

      Actually, I'm suggesting that, if your story is true, you were probably talking to someone in product marketing rather than development.

      But I've had enough faulty arugments from you. Good day.

      --
      Business. Numbers. Money. People. Computer World.
  3. never.. by Anonymous Coward · · Score: 0

    the obvious answer is; "it's never enough". So, next article.. ;)

  4. Windows XP SP2 ought to be dangerous.. by [TWD]insomnia · · Score: 3, Insightful

    .. as they are rewriting the security layer!

    1. Re:Windows XP SP2 ought to be dangerous.. by Anonymous Coward · · Score: 0, Flamebait

      Everyone constantly complains about how bad WinXP security is, so when they start over to make a new, better one, you... complain?

    2. Re:Windows XP SP2 ought to be dangerous.. by Anonymous Coward · · Score: 0

      Never try to reason with a nerd. Just kick them in the bollocks and steal their lunch money.

    3. Re:Windows XP SP2 ought to be dangerous.. by Anepthia · · Score: 1

      Security layer? Windows XP has a security layer? I personally think SP2 may be implementing a totally new feature here.

    4. Re:Windows XP SP2 ought to be dangerous.. by Li0n · · Score: 1

      it's a very thin layer

      --

      ~
      ~
      :wq
    5. Re:Windows XP SP2 ought to be dangerous.. by DigiShaman · · Score: 1

      Damned if you do. Damned if you don't.

      Sounds like MS is on the right track for doing this. Sure, if might break some software. But, hopefully effected programs will have a patch due out soon to address the changes. And that shouldn't be much of a delay knowing that such software providers will be getting their hands on SP2 beta well before the general public gets the final release of the service pack.

      --
      Life is not for the lazy.
  5. Design desitions by FedeTXF · · Score: 5, Interesting

    As a coder I can assure you that working on somebody else's code is frustrating because you allways say: "I would have done this differently". Most rewrites I think come from there, having the idea of a better implementation.

    1. Re:Design desitions by Anonymous Coward · · Score: 0

      if you end up at the same point what's the difference? He's talking about tools not entire programs.

      I thought OOP was the answer to everyone's problems?

    2. Re:Design desitions by Old+Wolf · · Score: 3, Insightful

      A lot of time wasting comes from that too. Even if you can think of a better implementation, if it isn't better by it's not worth the development time + debugging time to do it that way.

      Re. the original post, I think a lot of the problem is caused by bad code commenting. When you make a "little tweak", or fix some minor bug, or fix a subtle logic bug, you should clearly comment in the code what you have done, so that it can serve as a warning when somebody else looks at the code and does not realise the subtlety involved.

    3. Re:Design desitions by selderrr · · Score: 5, Insightful

      I diesagree. Most rewrites come from the experience learned during long periods of adaptations. The roots of this rewriting problem go back to the source of all coding evil : specs.

      In 15 years of coding, i have NEVER worked on a project that had specs which could foresee future futher away than say 4-6 years. After that, either the managers start pushing up new features that simply do not fit the original concepts, or you bump into uses of your software you did not foresee simply because the scale of applications has grown beyond the site of your own usage.

      The last 4 years I've been writing an app for authoring psychology priming experiments (somewhat like e-prime, but with far more randomisation capabilities). In the original concept, no-one in our team expected someone to make randomisations wit a tree wider than 6 stages. So I went for 15 in my code. By now, 4 years later, I have seen projects with twice that depth. I could expand the code by changing some #defines to provide for larger arrays, but that ignores the fact that such complex randomisations demand a whole other interface. So after a few weeks of puzzling, we decided.. you guessed it : a rewrite.

    4. Re:Design desitions by blinder · · Score: 5, Interesting

      specs which could foresee future futher away than say 4-6 years

      LOL! Good grief man... the client I'm working with, their specs can't see past 4-6 weeks!

      Over the last year and a half I've been working on building a "policy engine" that manages this company's various business policies... everything ranging from ordering, or communications to whatever.

      Well, the ding-dang business users and their minions the "business analysists" can't see past a month or so... then oops... more functionality... change existing functionality... because "oops... we really need it to do this" to the point where I have to make this a unified system of "one off's"

      Yeah, ugh... and the idea of "rewrite" has come up because right now... the code base is huge... its a mess and looks like, well, like patch work. We are trying to get management buy-in... and calling it "upgrading and refactoring" because we know full well that "rewrite" is a dirty word in these parts :)

    5. Re:Design desitions by BinxBolling · · Score: 4, Insightful

      And often, you're mistaken when you think you have a better implementation.

      Here's an experience I used to have somewhat often: I'd be revisiting a piece of code I'd written a few months earlier. I'd think "Wait, this makes no sense. It shouldn't work at all. New approach X is much better." So I'd start refactoring it, and when I'm about 3 hours into the implementation of 'X', I begin to understand why I chose the original solution, and realize it remains the best approach. And so I nuke my changes.

      I don't tend to let that happen so much, any more. Partly I try to better document why I make the design decisions I do, and partly I try to have a little more faith in myself, and partly I stick to the attitude of "Don't fix what you don't empirically know to be broken."

      The point of my story is this: If someone can misunderstand their own design decisions after the fact (and talking to fellow programmers, I'm not the only one with this kind of experience), think how much easier it is to misunderstand someone else's.

    6. Re:Design desitions by Anonymous Coward · · Score: 0
      In 15 years of coding, i have NEVER worked on a project that had specs which could foresee future futher away than say 4-6 years.
      4-6 years?!?! I'm lucky to see one specced beyond 4-6 days!
    7. Re:Design desitions by FerretFrottage · · Score: 3, Insightful

      Give 10 software developers the same problem and you are guaranteed to get at least 11 different solutions

      --
      "Look Lois, the two symbols of the Republican Party: an elephant, and a fat white guy who is threatened by change."
    8. Re:Design desitions by Threni · · Score: 1

      > LOL! Good grief man... the client I'm working with, their specs can't see
      > past 4-6 weeks!

      Specs? Uh...what are they? ;)

    9. Re:Design desitions by Anonymous Coward · · Score: 0

      4-6 years?! My project can barely see past 4-6 hours!

    10. Re:Design desitions by Anonymous Coward · · Score: 0

      Riiight, 4-6 years, Mr. Future Man. My head implodes if I look beyond 4-6 minutes!

    11. Re:Design desitions by Anonymous Coward · · Score: 0

      Quien puede mirar 4-6 anos a continuacion? Mi gente entiende solamente 4-6 segundos, cabron!

    12. Re:Design desitions by aridhol · · Score: 4, Funny
      Specs? Uh...what are they? ;)
      Two lenses, held in a frame that keeps them in front of your eyes. Allows the slightly vision-impaired (such as myself) proper vision.
      --
      I can't say that I don't give a fuck. I've just run out of fuck to give.
    13. Re:Design desitions by aled · · Score: 0, Offtopic

      I think there's some office oral tradition that relates that with something called vacations.

      --

      "I think this line is mostly filler"
    14. Re:Design desitions by Anonymous Coward · · Score: 0

      It is "decisions."

    15. Re:Design desitions by Anonymous Coward · · Score: 0

      4-6 years?? You gotta be shitting me.

      Project I'm working on, I'm likely to have specs for 4-6 minutes!

    16. Re:Design desitions by aled · · Score: 2, Funny

      I'm a programmer and I disagree. Oh wait...

      --

      "I think this line is mostly filler"
    17. Re:Design desitions by Salamander · · Score: 3, Insightful

      There are necessary and beneficial rewrites, but the vast majority of rewrites occur because it's easier to write a new piece of code than to understand an old one. Yes, easier. The "rewrite bug" afflicts brash beginners the most, and top-notch experienced programmers the least. The best programmers tend to get that necessary rewrite out of the way during initial development, by writing a serious first-cut version, throwing it away, and then writing it a second time for real all before anyone else even sees it. Such code will often pass unit tests earlier than the "never refactor" code written by second-raters, and rarely requires a rewrite after that.

      --
      Slashdot - News for Herds. Stuff that Splatters.
    18. Re:Design desitions by Anonymous Coward · · Score: 0

      Maybe if you actually commented your code, like a good boy, you wouldnt be so clueless as to how your code works.

    19. Re:Design desitions by Anonymous Coward · · Score: 0

      Give one programmer one problem worded 10 different ways and you will still end up with at least 11 different solutions...

    20. Re:Design desitions by Anonymous Coward · · Score: 0

      Sounds like you need to comment more often :)

    21. Re:Design desitions by rgmoore · · Score: 1
      Partly I try to better document why I make the design decisions I do,

      And these are one of the most valuable kinds of comments to make. It's usually fairly easy to figure out what a given piece of well written code does, but it's not always obvious why you're doing that or why you chose a particular approach. A little comment saying "# now we fix broken headers" or "# cache caluculated values for speed" or something similar will save you a lot of time later.

      --

      There's no point in questioning authority if you aren't going to listen to the answers.

    22. Re:Design desitions by KILNA · · Score: 1

      Usually when I end up in a situation like that, I realize I didn't document the "why" in the code comments like I should have. Any time you go counter to your initial assumptions in the code you write, there should be comments that explain why you went that way. Those who forget history are destined to repeat it. :)

      --
      Error: PANTS NOT FOUND. Press <F1> to continue.
    23. Re:Design desitions by Bas_Wijnen · · Score: 2, Informative

      I know the feeling. But it hardly ever happens anymore, and that is only because I now document every "smart" move I make. If I do something which may look weird, I write a comment about why I don't do it the other way, or that it should have been the other way, but I was too lazy to do it.

      If I see something which looks like it shouldn't work, then I study it, and find out why it does, and document it. Or I study it, find out that indeed it doesn't work in some cases, document and fix it, or document that I couldn't see why it works, and that it may be buggy.

      Often it will be less work to document (and thus understand) other people's work than to rewrite it. Sometimes, however, this is not possible (because the original is closed source and you're not the owner of the source) or it is clear that it's not going to help much (because the original is really really bad, for example Netscape 4). In those cases is a complete rewrite acceptable.

      And of course you may want to rewrite a program which is only available as non-free software. Not because it's buggy, just because it doesn't allow others to study, change and improve it.

    24. Re:Design desitions by Bas_Wijnen · · Score: 1
      In the original concept, no-one in our team expected ... a tree wider than 6 stages. So I went for 15 in my code.

      The GNU coding standards say never to use arbitrary limits. Use dynamic memory, not an array. Much harder to do? Not if you're used to it. It takes a bit of time to learn it, and after that you always write better code, without a recurring time investment. This practice works for other concepts, too. Always make them better than you think you need them, allowing all kinds of things you don't imagine.

      that ignores the fact that such complex randomisations demand a whole other interface.

      In that case it seems a rewrite (at least of that part of the code) may be justified. Using static arrays is still not.

    25. Re:Design desitions by Godeke · · Score: 1

      Where do you work that you can see 4-6 years down the road? Corporate culture has integrated "process improvement" to such a degree, I feel good if the spec is good for 4 - 6 MONTHS. 4-6 years from now, I would expect everything I write to be unrecognizable.

      (That said, I do have one customer who is running on a database I wrote in 1986, but then again, they don't get "process improvement".)

      --
      Sig under construction since 1998.
    26. Re:Design desitions by Anonymous Coward · · Score: 0
      In 15 years of coding, i have NEVER worked on a project that had specs which could foresee future futher away than say 4-6 years.

      Well, I'd say concept of specs as carved-in-stone exact definitions is both dangerous, evil and unnecessary. This is in fact first thing against the wall, when Cluetrain (and Agile coders) come to town.

      I'd claim even getting 4-6 weeks is a major achievement; but who cares? As long as it is understood that specifications are approximations, and getting towards the goal is more efficient than locking goal and then trying to get there with no redirections, specs can be just "good enough".

      That being said, I generally prefer refactoring over complete rewrites, wherever feasible. But there are times when complete rewrite is still warranted... it's just a question of when and where.

    27. Re:Design desitions by mabinogi · · Score: 1

      They're the things you never see, but that the client swears that the new feature they want was in all along.

      --
      Advanced users are users too!
    28. Re:Design desitions by SlashdotLemming · · Score: 1

      Maybe if you actually commented your code, like a good boy, you wouldnt be so clueless as to how your code works.

      Or created a detailed design document....
      No onder software still sucks :)

    29. Re:Design desitions by ichimunki · · Score: 1

      Specs are what your clients tell you they actually wanted after you finish the work they already asked you to do. The best "specs" are the ones that require touching just about every subroutine you've written. And you'd better get it done quickly. After all, you've already written the whole program, right? How much more work could it be? ;)

      --
      I do not have a signature
    30. Re:Design desitions by ahdeoz · · Score: 0

      I haven't seen his code (and I doubt you have either), but in general, static arrays are almost always a good idea if you can use them. Chances are, you're going to end up "caching" your dynamic data at some point into some kind of (probably dynamic) array, just to avoid the waste of time memory allocation and clean up created by dynamic arrays.

    31. Re:Design desitions by sita · · Score: 1

      specs which could foresee future futher away than say 4-6 years

      Many people can't see further than their specs.

    32. Re:Design desitions by BinxBolling · · Score: 1

      Re-read my comment, in particular this line: "I try to better document why I make the design decisions I do". That means, among other things, commenting.

      I was already in the habit of commenting my code, and was plenty clueful on how it worked. But what I really needed to know, and what I usually focus on in my comments these days, is the why.

      Incidentally, when someone relates a mistake they made and how they learned from it, it takes a special kind of ass to fixate on the mistake itself and use it as an opportunity to berate the person for their 'cluelessness'.

    33. Re:Design desitions by Anonymous Coward · · Score: 0

      The GNU coding standards say never to use arbitrary limits. Use dynamic memory, not an array.

      Yeah - but the GNU coding standards also mandate the use of the ugliest brace style known to mankind, and strongly discourage the use of any programming language other than the archaic C.

      Dynamic memory allocation? What, with malloc() and free(), like them cool hackers did back in the sixties, man? No way. Use C++ and a Std::Vector as a bare minimum. Preferably use a modern programming language which frees you from all memory management considerations...

    34. Re:Design desitions by Anonymous Coward · · Score: 0

      How about you print out the specs and all changes to the specs must be done in pen in the margin or between the lines. When you have to print out a new copy of the specs, it is worth considering a rewrite of the relevant pieces of code.

      The specs get rewritten all the time, it seems unreasonable to expect that the underlying code stay the same.

    35. Re:Design desitions by AJWM · · Score: 2, Informative

      Using dynamic memory, always, in place of static arrays is for people incapable of doing data flow analysis.

      And if they can't figure out where their data is coming from and going to, the code probably has other problems too.

      (Not to say that static arrays aren't often used inappropriately, but the opposite extreme is just as bad.)

      --
      -- Alastair
    36. Re:Design desitions by marcello_dl · · Score: 1

      Sounds like a situation where you could test some Extreme Programming techniques.

      If your developing environment lets you easily refactor code, that is.

      --
      ---- MISSING MISCELLANEOUS DATA SEGMENT --- [sigdash] trolololol
    37. Re:Design desitions by Kris_J · · Score: 1

      I've re-written my own code after finding a vastly superior way of doing something. Every so often you just have to chuck the dead-end code away and start again. Sure, you might get new bugs -- same for any code change -- be you wouldn't re-write it if it didn't solve a lot more problems that it was likely to cause. Just because a user doesn't see anything wrong with the first version, doesn't mean it doesn't have serious problems underneath.

    38. Re:Design desitions by ClosedSource · · Score: 1

      Many real-time systems can't use dynamic memory allocation because of its non-deterministic execution time. So I guess the GNU coding standards aren't suitable in those situations?

      The point is that there are no absolute rules in SW.

    39. Re:Design desitions by bluGill · · Score: 1

      Problem is you cannot creat a detailed design document first, and that is when requirements place it. I can't start implimentation until the design document is done. So I do a best guess design document, and start to impliment that. Eventially I find something the design didn't account for so I shoehorn it in, creatly ugly code.

      What you really need is to write something that works for the common case(s). Then write a design document of how it should be, then start over from scratch and do it right. Even then you are lucky if you can see 5 years in advance how the code will need to be used.

      Take the last task I had: writing CDs, easy enough, I wrote something that put data on disk, and then did a design, which worked great. Then the boss gave me a DVD burner and told me to support that too. Turns out DVDs are very different in some ways, and I hadn't accounted for that. Depending on if is +r,+rw,-r,-rw,-RAM you need to do different things as far as formatting, and tracks are handled differently if you even have tracks. Suddenly my nice design that was working great was getting uglier and uglier and I was faced with a deadline getting closer and close and I still hadn't solved enough of the main tracks to write a design document on how it should be, much less do the re-write. (I got laid off for reasons not related to the above so I don't know how this story would have turned out. I like to think I could have made it work though)

    40. Re:Design desitions by mibus · · Score: 1

      > specs which could foresee future futher away than say 4-6 years

      LOL! Good grief man... the client I'm working with, their specs can't see past 4-6 weeks!


      Youuuu were Lucky!

      When I was a kid, we had clients who couldn't work out what they wanted Yesterday!

      We had to build the software before they even came to us with a tender!

    41. Re:Design desitions by KevMar · · Score: 1

      fundamental limitations

      everyone here knows that MS Access is very poor at multi user interactions. a project that a student worker did where I work was written in Access for one person to check stuff in and out with a barcode reader.

      Time goes on and 3 years later this little project has 6-10 concurent users in the same database with the counter in the main table is over 1,200,000. (note that it does not actualy have 1200000 records, we archive them every few months for performance)

      Now that we have compleatly rewritten it with a real interface and a SQL Server backend it is realy fast.

      But now that we have rewritten it, I realize some simple logic changes and maby some linked tables would have been good enough.

      Some mistakes you have to make

      --
      Im a gamer, not a grammer major. This post is full of spelling and grammer mistakes.
    42. Re:Design desitions by zhenlin · · Score: 1

      Such spectacles may be useful for those responsible for the spectacles of horrible specifications. Not everyone has 20/20 foresignt, what a shame.

    43. Re:Design desitions by Bas_Wijnen · · Score: 1

      The GCS says to use whatever indentation the program you work on is using. Only if you start a new project, they say you should use their indentation. And they don't even say it's important. The important thing is that the indentation rules are the same for the whole project, and they just defined some rules.

      Using C is indeed suggested, for portability reasons. But only if it is a sensible choice. They clearly state that you should use something else if the other language makes it easier for you to finish the project. They just say, that IF you have the choice between languages, and it doesn't matter much to you, then use C, because it's more portable.

      I use C++ all the time. And with the STL dynamic memory is used automatically, which means most arbitrary limits don't even show up without me having to worry about them.

      The GCS is a nice document which discusses important points in software design. But of course you should always do things because they're good in your situation, not because they are in those "rules".

    44. Re:Design desitions by Bas_Wijnen · · Score: 1

      You are right, but I wasn't saying people should always be using dynamic memory. I said you should not use static arrays if that results in an arbitrary limit. That is by far not the case for all static arrays, some are perfectly valid.

    45. Re:Design desitions by Bas_Wijnen · · Score: 1

      This is an interesting point. First of all, the GCS are just a discussion of software design, not a set of rules to follow blindly. They state reasons, and if those reasons don't apply to you, then you shouldn't follow them.

      But if it is indeed, as you say, impossible to use dynamic memory in real-time applications, then you have only a few possibilities:

      • Having arbitrary limits

        This is the easiest solution, just don't care about having to increase them and recompile whenever they happen to be too small. This is not nice, and it probably wasts loads of memory because all arrays are always maximum size, but it works.

      • Having a separate memory management thread which allocates system memory and keeps a buffer which is known to be large enough all the time.

        The process can then ask that thread for a piece of the buffer, which should react with a fairly well known timing (as long as the buffer doesn't run out.)

        This sounds much nicer, but it's also much more complex, and I'm not sure if I would like to have such complexity in a real-time project.

    46. Re:Design desitions by Bas_Wijnen · · Score: 1

      You can always use static arrays. But you end up with a text editor which can only handle lines of 256 characters long, or something similar. You gain a little speed, but you lose functionality.

      In some cases, you should not delete the original memory, but overwrite it instead. That's not a problem, I'd say.

      The point is, software design isn't easy. You can't simply follow some rules and get a good program. The GCS are helpful in reminding you of certain issues. But you should still make the choice of how to implement things, based on your situation.

      What I'm saying is that arbitrary limits ("640k should be enough for everyone" kind of things) are always a Bad Thing. You should try to avoid them whenever possible.

    47. Re:Design desitions by ClosedSource · · Score: 1

      I think your answer illustrates that what is now considered embedded and real-time, would not fit the traditional definitions.

      Having incorrect timing or being unable to get enough memory is a product defect, not just an opportunity to display an error message.

      Most of these systems don't use anything as sophisticated as a thread (many don't even use an OS) but when they do, most of the threads will be running 100% of the time. This doesn't leave much room for trading memory back and forth, so there's little value in allocating memory dynamically.

    48. Re:Design desitions by AJWM · · Score: 1

      Okay, agreed. Static arrays shouldn't be used if you can't guarantee (through data flow analysis or some such) that you'll never need more than whatever the array is sized at.

      (You just touched a nerve because I've had somebody go through perfectly working code and arbitrarily replace all "strcpy" with "strncpy" and the like -- when the only places strcpy was being used the source was guaranteed to be smaller than the target because of checks upstream in the data flow. They clearly didn't understand the program and that was just busywork.)

      --
      -- Alastair
    49. Re:Design desitions by sjames · · Score: 1

      Well, I'd say concept of specs as carved-in-stone exact definitions is both dangerous, evil and unnecessary. This is in fact first thing against the wall, when Cluetrain (and Agile coders) come to town.

      From a purely technical perspective, you're right. However it does create problems for contract programmers.

      I doubt that anyone who has done significant contract work (by the job rather than by the hour) hasn't encountered the case of the perpetually changing spec and milestones with final payment equally perpetually delayed because of it. Eventually it becomes a battle of wills where the programmer insists that they have more than fulfilled the contract and the client insisting that they won't pay because the program doesn't do what they want (whatever that may be today).

      In that sort of environment, it is necessary to have specs carved in stone, and change orders that spell out the cost overruns and additional milestone payments just to keep the contract from becoming indentured servitude.

    50. Re:Design desitions by selderrr · · Score: 1

      I'll give you 3 reasons :

      - speed : I have a tight inner loop that ahs to check that array at least 3 times per millisecond. If I move to a dynamic list, I have a bunch of pointer derefs that take way to long

      - memory : that array is just an array of LONGLONGs, not some huge struct. If I add a back&forth pointer to each LONGLONG, my dynamic list becomes twice as big as what I have now. And I have tons of these arrays : 100 lists of 10.000 arrays is not uncommon.

      - more speed : an array ALWAYS fits in the level cache. A list does not always, especially not if the array gets shifted around a bit. Trust me : the cache makes a lot of difference !!!

    51. Re:Design desitions by Bas_Wijnen · · Score: 1

      I wasn't talking about a dynamic linked list of tiny bits of memory. I was talking about a dynamically allocated array. Actually, you could allocate it on the stack, if it fits (and I guess it does if making it static is an option) and you'll have exactly the same situation as a static array, except that the size can be determined run-time, removing arbitrary limits.

      With dynamic memory you could have to use one extra pointer deref per lookup, but even that can be omitted (if the compiler optimizes it.) You may suggest this to the compiler by telling it that the start of the dynamic memory should be held in a register.

      Of course the points about speed and memory don't apply for this situation, it takes a negligible amount of extra memory (about 3 pointers per array (not per entry).)

      It appears I wasn't too clear about what I meant. Sorry about that.

  6. Other People's Code Is Crap by FatHogByTheAss · · Score: 0, Offtopic

    While mine is fine like wine.

    --

    --
    You sure got a purty mouth...

    1. Re:Other People's Code Is Crap by jqh1 · · Score: 1

      This is so not offtopic. We've all seen the "not invented here" attitude copped by most developers when presented with a bunch of code to extend or interface with.

      I once was involved with a well documented, clean framework for creating small applications. It cost a lot of money. Looking through it the first couple of times, I scoffed, thinking about 1) how trivial it must have been to churn it out, and 2) how many ways it was probably screwed up and how I would have handled those situations. Time went by, and after zapping out a few of the little apps in surprisingly short time, I had to change my tune (fortunately, I wasn't too vocal about it earlier).

      Human nature? Developer nature? I don't know, but it's definitely a force to be reckoned with.

      --
      who's moderating the meta-moderators?
    2. Re:Other People's Code Is Crap by FatHogByTheAss · · Score: 1

      Thank you for your astute observation. The average /. reader isn't bright enough to pick up on the subtlety.

      Most rewrites are caused by one thing. The desire to not have to maintain someone elses code.

      You may now mod this down as flame bait.

      --

      --
      You sure got a purty mouth...

  7. But.. But... by devphaeton · · Score: 3, Funny

    This introduces new bugs and abandons all the small fixes and tweaks that made the original version work so well. It also often introduces incompatibilities that break a sometimes huge existing userbase.

    Microsoft has created an entire, successful, multibillion-dollar-a-year-profiting business model off of this!!

    Sheesh.

    --


    do() || do_not(); // try();
    1. Re:But.. But... by coolgabe · · Score: 1

      In reference to your signature, you are aware that buses and trains also start at their respective stations, right?

    2. Re:But.. But... by devphaeton · · Score: 1

      Congratulations!

      I've been waiting to see how long it would take for someone to bring that up. After 2 months, you are the first!

      Sorry that i don't have any prizes, unless you want a Cyrix 150Mhz POS i'm about to throw away. :-/

      --


      do() || do_not(); // try();
    3. Re:But.. But... by Anonymous Coward · · Score: 0

      Funny, I don't see anything funny about this.. It's a business model, possibly an unconscious one but one nonetheless.
      Break compatibility - ??? - profit.

    4. Re:But.. But... by M.C.+Hampster · · Score: 1

      Microsoft has created an entire, successful, multibillion-dollar-a-year-profiting business model off of this!!

      Give me a break.

      That's why I can open a set of Windows 2.0 applications in Windows 2000 and have no problems. Yes, file formats in Office are an issue, but Microsoft is the absolute king when it comes to backwards compatability with their OS. Perfect? No. But miles ahead of the competition.

      --
      Forget the whales - save the babies.
    5. Re:But.. But... by coolgabe · · Score: 1

      Awesome - send me the Cyrix right away - my address is in my slashdot bio - I'll be watching the mail for my prize!

  8. Slashdot by JM+Apocalypse · · Score: 2, Funny

    In light of the preceding article, I propose that we completely rewrite slashdot! In BASIC! This will provide unsurpassed slowness and crashing, making the world better for all!

    --

    - - - - - - -
    Orppf urp mf y.ppcxn. yflcbi otcnnov C am yflcbi yr n.apb Ekrpatv (Dvorak -> Qwerty)
    1. Re:Slashdot by [TWD]insomnia · · Score: 3, Funny

      I propose we redesign Slashdot in brainf*ck instead.

    2. Re:Slashdot by Anonymous Coward · · Score: 1, Funny

      I propose we rewrite Slashdot in LOGO

    3. Re:Slashdot by Anonymous Coward · · Score: 0

      Oh yeah? I propose we rebuild it with LEGO. (note: the plural of LEGO is LEGO, as gets noted in every LEGO story.)

    4. Re:Slashdot by JM+Apocalypse · · Score: 1

      Err ...

      1) Long Ogleing Gadget Octopus
      2) Leave Orion, Go Onward!
      3) Lashing Out Gets Old
      4) Let Olives Grow Oil

      ???

      --

      - - - - - - -
      Orppf urp mf y.ppcxn. yflcbi otcnnov C am yflcbi yr n.apb Ekrpatv (Dvorak -> Qwerty)
    5. Re:Slashdot by JM+Apocalypse · · Score: 1

      Mods really need to get a sense of humor.

      --

      - - - - - - -
      Orppf urp mf y.ppcxn. yflcbi otcnnov C am yflcbi yr n.apb Ekrpatv (Dvorak -> Qwerty)
    6. Re:Slashdot by Anonymous Coward · · Score: 0

      How would that help here?

    7. Re:Slashdot by EnderWiggnz · · Score: 1

      damn yung'uns.

      betcha never used a cassette drive either.

      wuss.

      --
      ... hi bingo ...
    8. Re:Slashdot by Anonymous Coward · · Score: 0

      Screw you, hippy! If you haven't done it with a punch card and a 23 1/2 hour window between being allowed to test changes, you haven't PROGRAMMED!

    9. Re:Slashdot by Prior+Restraint · · Score: 1

      I propose we redesign Slashdot in brainf*ck instead.

      Ahem, don't you mean brainf*ck.NET?

  9. RW by Anonymous Coward · · Score: 0

    Did anyone else read this and wonder if your cd/dvd RW's were at risk?

  10. Rewrite can be good, if done properly. by Metallic+Matty · · Score: 3, Interesting

    The trick is to include all the tweaks and fixes that were implemented in the old code. Obviously, if you rewrite and then leave open all the gaps and problems from the earlier version, there's no point in rewriting. However, you could rewrite with those fixes in mind, and come out with a completely new (and problem-free) edition.

    1. Re:Rewrite can be good, if done properly. by Anonymous Coward · · Score: 0
      The trick is to include all the tweaks and fixes that were implemented in the old code. Obviously, if you rewrite and then leave open all the gaps and problems from the earlier version, there's no point in rewriting. However, you could rewrite with those fixes in mind, and come out with a completely new (and problem-free) edition.

      You've left out "hopefully". :-)

      But seriously, you also need to understand and retain the good points of the earlier version. That is, don't hit the problems that the eariler was trying to avoid.

      Otherwise you end up replacing one set of problems with another.

      Of course, in some cases there are tradeoffs to be made and you get to choose your poison. The classic case here would be speed vs. functionality.

      -cmh

  11. Ego? by Undaar · · Score: 4, Informative

    I think it may have something to do with programmer ego and something to do with the challenge. I'm guilty of it myself. You find something you're interested in and you want to build it. It doesn't matter if someone else has done it or even done it well before you. The challenge is to do it yourself.

    --
    ~ "When I'm of that age I'm just going to live up a tree."
    1. Re:Ego? by CommieLib · · Score: 2, Interesting

      There may be some of that, I suppose, but speaking as someone who is strongly advocating a rewrite for a new version, it's also a matter of just seeing vastly better ways of doing things now that you've had the benefit of the experience of v1.0.

      Furthermore, all of the features that creep into v1.1, .2, .3, etc. that were not envisioned at all in v1.0 become code barnacles, stuck on to the coherent codebase and clinging for dear life. Better to create a new codebase that incorporates them as part of it.

      --
      If your bitterest enemies are people who hack the heads off civilians, then I would say you're doing something right.
    2. Re:Ego? by globalar · · Score: 3, Insightful

      How do you learn how something works?

      1) You take it apart (literally the backwards approach, though if you have the time it works).

      2) Read the documentation, learn how to use it, and work with it. (Still will not show you everything, especially with well encapsulated components. And when was the last time documentation, even Google, answered all your questions?).

      3) Build something similar (a variant, clone, emulator, etc.)

      The experience of programming your own components cannot be substituted. Bad, but passable analogy: Building a house vs. repairing a house. In the former, you experience the though process; in the latter, you adapt your thought process (to some degree).

      Also, I think once you see all the work and brilliance that has gone into software you take for granted, you are motivated to build something once with the intention of reuse. To be a forward thinker you have to understand what has gotten us this far and what has to change to get us farther. Experience with what the wheel is made of and why, not necessarily rebuilding it, can provide you with these perspectives.

    3. Re:Ego? by StormReaver · · Score: 2, Interesting

      "There may be some of that, I suppose, but speaking as someone who is strongly advocating a rewrite for a new version, it's also a matter of just seeing vastly better ways of doing things now that you've had the benefit of the experience of v1.0."

      I've done (and still do) regular rewrites. In my case, it frequently ends up being rewritten because Management didn't accept my initial recommendations on development and/or back-end technology. Their chosen technology, which I am compelled to use, fails to adapt to easily foreseen circumstances and I have to rewrite my stuff to target the new technology.

      I can't blame them in the short run, though (even if the long run is certainly going to be very painful), as they had to get -something- up and running in just a few weeks, and the really bad technology was the only thing that was close enough to the desired target functionality to meet the deadline.

      Sometimes I rewrite old applications because they cannot possibly adapt to desired criteria or just perform so badly that they just scream for a redesign. All my existing VB apps fall into this category.

  12. I bet by Anonymous Coward · · Score: 0

    ...the next article will postulate that new versions of software can introduce new bugs. Egads. This is news! Glad I'm not a subscriber.

  13. Longhorn by NeoGeo64 · · Score: 1

    In Windows Longhorn's case, I think an entire rewrite (or close to it) is a good thing.

    There are so many unfixable flaws in the way Windows is built, and there are some other flaws that could be fixed -- but it'd require doing some major patchwork.

    We won't know just how secure Longhorn is going to be until 2006, but if the past is any indication... well... yeah.

    1. Re:Longhorn by Junks+Jerzey · · Score: 1

      In Windows Longhorn's case, I think an entire rewrite (or close to it) is a good thing.

      And if there was ever a time to switch to someting besides Windows, this is it.

    2. Re:Longhorn by NeoGeo64 · · Score: 1

      As soon as I have enough cash for an Mac, I'm going to purchase one.

    3. Re:Longhorn by Kethinov · · Score: 1

      You'd already be running OSX if they open sourced it or at least ported it to x86. Or perhaps weren't such nazis about their hardware and let us build our own mac without having to search ebay for power supplies.

      --
      You're right, I wouldn't steal a car. But if it were possible, I sure as hell would download one!
    4. Re:Longhorn by akac · · Score: 1

      And then Apple would cease to exist since you just took away their sole form of revenue and you'd have to go back to Linux or Windows. Yeah...great idea. Leave the business side to the guys who know it.

    5. Re:Longhorn by Kethinov · · Score: 1

      Yeah I realize it's pretty unreasonable to expect Apple to just open source OSX and even to port it to x86. But I think it IS reasonable for them to sell their hardware non-assembled. A lot of Mac users really would like to build their own. One reason I could never personally get a mac is because I hate packaged deals. Buying a G5 to me would be like buying a Dell or a Gateway except with a non-sucky OS on it.

      --
      You're right, I wouldn't steal a car. But if it were possible, I sure as hell would download one!
    6. Re:Longhorn by Slack3r78 · · Score: 1

      Yeah man, it drives me up a wall how GM won't just sell me a chassis and motor and let me build my own damned car, too.

      Remember, it's not how you view the company that's important - it's how the company views itself. Apple is a hardware company that happens to pride itself in putting together quality packages - which is arguably the only reason an operating like OS X exists.

    7. Re:Longhorn by Kethinov · · Score: 1

      Apples and oranges. Building a car is nowhere close to assembling a computer. x86 parts (including power supplies) are sold individually, so why not ppc?

      --
      You're right, I wouldn't steal a car. But if it were possible, I sure as hell would download one!
  14. Question by Anonymous Coward · · Score: 1, Funny

    Did you eat lots of paint chips as a kid?

    1. Re:Question by Dyolf+Knip · · Score: 1

      You mean wall candy?

      --
      Dyolf Knip
  15. Windows ? by HawkingMattress · · Score: 0, Redundant

    I didn't RTFA, but Windows, seems a pretty bad example of an useless rewrite, if we're talking about the rewrite from 9x to NT5

    1. Re:Windows ? by RadioheadKid · · Score: 1

      That wasn't a rewrite. The 9x/ME code base was separate from NT.

      --
      "Karma can only be portioned out by the cosmos." -Homer Simpson
  16. Damed if you do, damed if you dont. by Kenja · · Score: 5, Funny
    Slashdoter: Why wont Microsoft just drop the Windows code base and start over? There are too many problems to fix.

    Microsoft: Ok, Windows XP and 2003 have a full rewrite of the TCP/IP stack and security system.

    Slashdoter: Why did Microsoft rewrite the core OS? They just introduced more bugs and lost the stability and security fixes from older versions of the OS?

    --

    "Have you ever thought about just turning off the TV, sitting down with your kids, and hitting them?"
    1. Re:Damed if you do, damed if you dont. by [TWD]insomnia · · Score: 1

      That means Windows cannot be written and rewritten properly, ever.

    2. Re:Damed if you do, damed if you dont. by criscooil · · Score: 0

      Well since you're talking about Microsoft, that isn't a problem here.

      --

      My life is an open book ... up to a point.

    3. Re:Damed if you do, damed if you dont. by Anonymous Coward · · Score: 0

      Which means... what, exactly? Your post doesn't make any sense.

  17. better than by cmdr_forge · · Score: 1

    As projects get older, and developers get more experience in the programming area they often look back and find better ways of doing things...take a look at Enlightenment 17 development. They are constantly going back and making it better than what was initial scoped out. I would not be suprised if the next version is lightening fast than 16

  18. Netscape 4.x fast? by Anonymous Coward · · Score: 4, Funny

    Ok, this dude uses netscape 4.x and thinks its fast. next article please.

    1. Re:Netscape 4.x fast? by ericdano · · Score: 1
      Seriously. Perhaps he doesn't know about the standalone version that has all the mail and stuff stripped out?

      I use Mozilla all the time. Netscape 4.8, as I remember, was slow, prone to hanging, etc, etc.

      The author really needs to maybe splurge on a eMachine or something at Walmart and join the rest of us in the year 2000.......

      --
      It's either on the beat or off the beat, it's that easy.
      I moderate therefore I rule!
      --
    2. Re:Netscape 4.x fast? by Killean · · Score: 1

      Seriously, I have to agree with you. This article reads like it was written by my Dad. Obviously this guy doesn't embrace change very well, and doesn't have a salary based on selling software.

      --
      My new catch phrase is: "I NEED A NEW CATCH PHRASE, BABY!"
    3. Re:Netscape 4.x fast? by green_crocadilian · · Score: 1

      Netscape 4.x is quite a bit faster than Mozilla. Don't believe me? Grab an SGI O2 (MIPS 180 MHz). Netscape 4.latest will be responsive, render quickly and quirkily, until it inevitably crashes like 20 minutes later. Mozilla will run like a pig in cement...

    4. Re:Netscape 4.x fast? by Eil · · Score: 2, Interesting


      4.x is much faster than Mozilla. By a long shot. Its downfall, aside from having unmaintainable source code, was that it was unstable, did not follow any kind of standards, and had a tendency to screw up whatever *should* have worked right. I think Internet Explorer 1.0 is the only browser in existance to beat the general crappiness of Netscape 4.x.

      Give me a slow and bloated, yet stable and standards-compliant web browser over the opposite (Netscape 4.x) any day.

    5. Re:Netscape 4.x fast? by Anonymous Coward · · Score: 0

      lynx renders much faster. ;)

    6. Re:Netscape 4.x fast? by Anonymous Coward · · Score: 1, Informative

      Except that it has, like, O(n^2) table formatting algorithm. You don't see it when you're just doing layout kludges (and keeping it simple), but once you display lots of formatted data the crawl sticks in.

    7. Re:Netscape 4.x fast? by swv3752 · · Score: 1

      No, Netscape 4.x is just slow. Now my comparison is based in Linux, but...

      On a Celeron 366mhz 192MB RAM 6GB HDD Notebook, Mozilla is fairly speedy. Ignore load times, and it works pretty well. It surely is better than NS 4.76. yes, I can get a minor speed increase by using X forwarding from 2ghz desktop, but one should expect that, else there would be no pint to the whole thin client model.

      --
      Just a Tuna in the Sea of Life
    8. Re:Netscape 4.x fast? by ArmorFiend · · Score: 1

      > 192MB RAM

      IIRC this may be the rub. If the other guy's using 64mb or less, mozilla doesn't perform well, and scapegoat 4 sorta hunkers through.

    9. Re:Netscape 4.x fast? by swv3752 · · Score: 1

      The author of the article was writing about NS on his 450 MHz AMD K6-II workstation with 512 MB RAM (running RedHat 7.3).

      My notebook is running MDK 9.2, at the last time I tested NS it was MDK 9.1. So it is a lesser machine running a newer OS that is optimized more in theory.

      However, I have used MDK since 7.1 on that notebook. Since the .9 Mozilla days I have been using Mozilla as my primary browser. It has gotten progressively better. Even then it was faster.

      --
      Just a Tuna in the Sea of Life
    10. Re:Netscape 4.x fast? by Anonymous Coward · · Score: 0

      Try Phoenix. On my Indigo 2 (195 MHz R10k) it runs faster than Nutscrape 4.7 (the last release for Irix I have found), and has a lot of the features and compatability of Mozilla.

      Was on freeware.sgi.com last time I did an OS install and put back on all the GNU stuff.

  19. Tweaks only go so far... by Viral+Fly-by · · Score: 5, Insightful

    The minor tweaks, fixes, and changes that made the old version work so well can only go so far. Such is often the nature of code. Tiny fixes and patches are (sometimes haphazardly) hacked on to the code.

    Perhaps if true extensive software engineering and documentation techniques were followed, a full rewrite may not be necessary. However, as long as quick fixes continue to pollute the code and make it more and more difficult to work with, an eventual total rewrite will always be necessary.

    1. Re:Tweaks only go so far... by localman · · Score: 2, Funny

      I used to think so. But I was forced by economics at my current employer to just keep on hacking. For years I predicted the imminent collapse of our system under the weight of a thousand hacks.

      But it never collapsed. And the functionality and performance has been greatly increased. And we've added five more developers. And we're profitable.

      And because the original design was decent, there have been no catastrophic failures, or impenetrable bugs.

      Sure, we've rewritten many small parts of the system, but in a very iterative fashion. And there are some bits of old (ugly) code pushing four years now that still do their job just fine.

      Maybe this only applies to web development in perl (small CGIs using simple function-oriented modules with SQL to interface to a DB). And maybe it only works for companies using technology as support (as opposed to the company being _about_ technology). But there it works and it works well.

      Maybe here's the deal: we're always doing a "complete rewrite" -- it just takes us a decade and we do it a little bit at a time. But the point I think is that tearing out the guts usually causes more problems than it solves.

      Cheers.

    2. Re:Tweaks only go so far... by Unkle · · Score: 1
      The minor tweaks, fixes, and changes that made the old version work so well can only go so far. Such is often the nature of code. Tiny fixes and patches are (sometimes haphazardly) hacked on to the code.

      Along with this, there are many times that I have been working in code for a few of our products (codebase is at least 15 years old, I believe) where the customer has asked for a new feature that, try as I might, cannot be put into the current code. So I have to re-write a good part of it, sometimes complete executables.

      Recently, we have moved a couple of products to new operating systems (DOS to Windows, yes, we are still selling products that run on DOS, partially because they work "good enough" that the cost of rewriting is not acceptable to the powers that be), which obviously requires a rewrite. However, the code is so much less complicated than before, and the coders better (IMHO), that we actually have had fewer problems than if we had updated the old system.

      --
      Against stupidity, the gods themselves contend in vain.
    3. Re:Tweaks only go so far... by soft_guy · · Score: 1

      A total rewrite is hardly ever necessary. I've inherited many codebases before that had architectural problems. It is possible to refactor them.

      Plus, you need to make sure you're not just changing something to match "your style" of programming. You need to know you are really getting a benefit. I will agree that one possible future benefit could be that the code is easier to maintain. For example, refactoring the codebase so that all instances of the same problem use the same mechanism is a very valid refactor (e.g. change all containers to be STL containers).

      --
      Avoid Missing Ball for High Score
  20. Accomodating fixes by Erratio · · Score: 1

    I think rewrites are good, as long as they're done correctly. When fixes or compatibility issues are added to the initial version, they should be well commented and documented so that they are accounted for in any rewrite, and tested if the logic of the program has been rearranged (perhaps to better fix bugs in the first place). Ideally a rewrite makes it easier for bugs to be fixed. At the same time a program shouldn't need to be totally rewritten more than a couple times. After one time the code should have enough modularity so that pieces can be rewritten with small impact at a time.

    --
    I don't try to be right, I just try to make people think
  21. Gah by Anonymous Coward · · Score: 0

    I wish someone would rewrite 'ls'. It really needs to be optimized.

    1. Re:Gah by Anonymous Coward · · Score: 0

      OMG D00D YUO SHOULD USE TEH GENTOO LUNIX BECASUE IT LETS YOU OPTOMIZE TEH /bin/ls WITH -O3 AND -FOMIT FLAGS! YUO CAN GOES TEH REELY FAST!!!

      Fucking Gentoo fanboys and fucking lameness filters piss me off to no end. Everyone needs to die painfully.

  22. Interesting idea... no data by JohnGrahamCumming · · Score: 5, Insightful

    I'm sympathetic to the idea behind this article, but does it deserve a place on /.? There's absolutely no empirical data, or even a reasonable example given in the document. The author is talking about IPv6 and Perl6 both of which are unknown quantities at this point.

    He's right that just throwing away old code means yo u lose a lot of valuable bug fixes, on the other hand if you look at some code and realize there is a better way then the solution is to rewrite it.

    Of course you can have it both ways. What you do is write an automated test case for every bug that you fix in your code. When you write the new version it has to pass the old test suite, then you've got new code and all the experience from the old code.

    John.

    1. Re:Interesting idea... no data by ericdano · · Score: 1
      Agreed. The author's conclusions are somewhat suspect. Perl5 vs Perl6 argument. The performance issues aren't considered, nor are the extended features it will have.

      And the Mozilla/Netscape reasoning. Mozilla is way faster than 4.8. I have it loaded on my mom's lowly iMac under system 9, and it's WAY faster. I'm a little sad they stopped supporting it under OS 9. :-( Oh well.

      Makes me wonder about this guy........

      --
      It's either on the beat or off the beat, it's that easy.
      I moderate therefore I rule!
      --
    2. Re:Interesting idea... no data by gerardlt · · Score: 1

      I'm sympathetic to the idea behind this article, but does it deserve a place on /.? There's absolutely no empirical data...

      Since when has empirical data had anything to do with /.?

      --
      /* This sig is disabled. Press CTRL-W to enable. Thankyou */
    3. Re:Interesting idea... no data by Confused · · Score: 1

      Interesting idea in the sense that putting your family jewels in a grinder is an interesting idea.

      The authour sounds very young, inexperienced and full of naive optimism. If he ever had to maintain legacy code where generation of coders had to add unplanned features under time pressure, he'd know that from a certain point on a rewrite is the only solution to progress.

      Once the effort of trying to understand some crufty code with lot of dead weigth exceeds the effort of a rewrite it, the ideas in his article become pure fiction. And Netscape is about the worst example he could have chosen, considering what a piece of crap Netscape 4 was comparing to the current Mozilla.

    4. Re:Interesting idea... no data by dmaxwell · · Score: 1

      Unless I've missed something in the world of Classic MacOS nobody is maintaining browsers for it. Mac OS 9 has also seen it's last release of IE as well. Netscape 7.0.2 and IE 5.1 seem to be the proverbial it. It bums me out too. I will have to maintain OS 8.6 and 9.2.2 machines for the forseeable future. That isn't the way I wanted it but that is the way it is. I would love to have browsers newer than a year and half old for these platforms. Oh well.

    5. Re:Interesting idea... no data by PantsWearer · · Score: 1

      Oh, give him the benefit of the doubt: he could be old and completely unwilling to change.

      --
      Be glad life is unfair, otherwise we'd deserve all this.
    6. Re:Interesting idea... no data by ericdano · · Score: 1

      Yeah, I hear you. Mozilla, I think, stops at 1.3 version for OS 9. Which is too bad as it was really starting to shine under OS 9.

      --
      It's either on the beat or off the beat, it's that easy.
      I moderate therefore I rule!
      --
    7. Re:Interesting idea... no data by geoffspear · · Score: 1
      Mac OS 9 has also seen it's last release of IE as well.

      Umm... OS X has also seen its last release of IE. Like Adobe, Microsoft has decided that they can't compete with Apple in developing Mac software.

      --
      Don't blame me; I'm never given mod points.
  23. The need to rewrite by strredwolf · · Score: 1

    I can see one good need to rewrite -- when old techniques no longer do a sufficent job. Take Perl 4 for instance. It's simple, yes, but not extendable. You had to write your own libraries of Perl code to do more complex tasks (sirc, anyone?). Then Perl 5 comes out... and introduces package spaces and Modules, plus alot of cleaner code!

    A few of my perl scripts were just hacks. Patchy hacks that were dirty and buggy. I rewrote one, Anything, to be cleaner. Oh so much better.

    --

    --
    # Canmephians for a better Linux Kernel
    $Stalag99{"URL"}="http://stalag99.net";
  24. Unix vs GNU/Linux by kps · · Score: 2, Funny

    Ouch! There goes my karma!

  25. Something is weak here by Anonymous Coward · · Score: 0

    "if we just stayed in the same place, using the same versions of tools without improvement, then things would deteriorate"

    I don't see why things wouldn't simply "stay the same". You should probably rewrite the whole article.

  26. Untrue by Shazow · · Score: 2, Insightful

    Although I have an unhealthy habit of wanting to start things from scratch, I believe it can be a good thing more often than not.

    When you've developed a piece of software, fixed its bugs, and tweaked it, more times than not, those fixes and tweaks are nothing more than workarounds for your currently flawed structure. Usually, you don't realize these flaws until AFTER you've created it.

    By starting it from scratch, you can keep your mistakes in mind, and make better and more efficient software.

    Sure, there are chances of running into new bugs, but isn't that what the whole learning process is about? The more you learn, the better the software will keep making. You can only go so far, if you need to turn a paper bag full of feces into an operating system. But if you start from scratch, you can create your own digitized significant other. You know, relatively speaking.

    - shazow

    1. Re:Untrue by Progman3K · · Score: 1

      >By starting it from scratch, you can keep your mistakes in mind, and make better and more efficient software.

      >Sure, there are chances of running into new bugs, but isn't that what the whole learning process is about?

      But is it fair to expect clients to pay for it?
      Granted they will be getting BETTER code, but if the old one isn't broken in any major way, it just seems excessive to me to make them pay for it...

      Personally, I think this was one of the things wrong with the dot-com boom, where there were a bunch of little kids, fresh out of school, squandering the project budgets by being paid professional salaries but only delivering inferior product.

      Of course I won't lump ALL young developers into that category, because for some, it remains a calling, but it just seems that there were far too many in the milieu that were only there because it was the current "hot" career, and not at all about computer science.

      --
      I don't know the meaning of the word 'don't' - J
    2. Re:Untrue by Shazow · · Score: 1

      Well when I wrote this, I didn't have pay in mind. I'm generally talking about my personal projects and hobbies, etc.

      If you're getting paid, then I would imagine that it would be best to do as your employer told you. If he just wants the bugs fixed, then fix the bugs. If he wants a fresh start, then do a fresh start. Of course, your opinion could make or break the employer's decision, but I think it has to be mutually agreed.

      - shazow

  27. Wow by Boing · · Score: 5, Funny
    That article had about the highest flamebait-to-content ratio I've ever seen on Slashdot (and that's SAYING something).

    This oughtta be good. (puts on asbestos-lined pants)

    1. Re:Wow by proj_2501 · · Score: 1

      I especially like how he thinks that IPv6 has 64 bits.

    2. Re:Wow by tommck · · Score: 1
      Those pants aren't going to help you when Natalie Portman pours hot grits in there!

      --
      ---- It puts the lotion on its skin or else it gets the hose again. It does this whenever it's told.
    3. Re:Wow by Anonymous Coward · · Score: 0

      puts on asbestos-lined pants

      After you've been reading Slashdot for a while, you realize that it works *much* better if your pants have the asbestos on the *outside*!

      ;-)
    4. Re:Wow by Anonymous Coward · · Score: 0

      Absolutely right. Let's see... bashing Mozilla/XUL, check. Boosting Netscape 4 (which was worse than IE has ever been), check. And lamenting the FONT tag, good grief!

      Really now, creating Mozilla was the only way Netscape could possibly atone for their sins, after coming up with the blasphemous FONT markup and letting the NS4 manure spreader run rampant over the WWW.

    5. Re:Wow by PacoTaco · · Score: 1

      Have you ever read the BSD announcements?

    6. Re:Wow by Anonymous Coward · · Score: 0

      puts on asbestos-lined pants

      ...and promptly perishes from testicular cancer.

  28. Rewrites are driven by maintainability by shaka999 · · Score: 4, Insightful

    Your point is well taken about ego often driving rewrites but in my experience the driving force for rewrites is often maintainability.

    As a program ages and drifts from the original intent ugly hacks are often placed on top of the original code to add unforseen functionality. There is also the opposite effect where old code is sitting around that no longer has any function. I remember one drastic case of this when rewriting a program where only about 1/2 the code was even beeing utilized.

    By rewriting the code you clean things up and make it easier for future programers to understand what the code is doing.

    --
    One should not theorize before one has data. -Sherlock Holmes-
    1. Re:Rewrites are driven by maintainability by jstave · · Score: 1

      I was going to make the same comment but you beat me to it. I would also add that as the code ages and becomes more spagetti-like , it gets harder and harder to extend without breaking. A point is reached where any additions or changes cause unexpected side-effects, *especially* once the original coders have left the project, or company.

    2. Re:Rewrites are driven by maintainability by rreay · · Score: 1

      By rewriting the code you clean things up and make it easier for future programers to understand what the code is doing.

      So that they can rewrite it themselves when they have to look at it?

      Seriously though... If you're working on a piece of code that almost works but are unhappy with some part, refactor the part you don't like and go on. It'll be faster then a full rewrite and you don't lose all those bug fixes that took so long to get right in the first place.

    3. Re:Rewrites are driven by maintainability by eraserewind · · Score: 1

      There is also the opposite effect where old code is sitting around that no longer has any function. I remember one drastic case of this when rewriting a program where only about 1/2 the code was even beeing utilized.

      Absolutely. I used to get great pleasure in deleting large chunks of useless code from one of the products I used to work on, and still having more functionality than before.

      I found that stuff in the UI is partiularly prone to get bloated with no design put into the glue between the actual UI, and the core of the system. cut and paste abounds.

      Lines of code add to the cost of maintaining a product, and while they may be fine to get a release out the door, they make the subsequent releases and adequate maintenance harder and harder.

      Code should be eliminated whenever possible in my opinion. After all if the code isn't there, it will not be a source of bugs, and nobody will ever have to understand it.

  29. Don't Forget To Include Winamp! by mikewren420 · · Score: 4, Interesting

    For Windows users, Winamp is probably the best example I can think of. Take a stable, usable, simple and elegant audio player (Winamp2) and fuck it up by writing it from scratch (Winamp3), then ultimately abandon that clusterfuck rewrite in favor of yet another rewrite (Winamp5) that fixes what they fucked up with Winamp3.

    I'm mighty happy sticking with Winamp2, thank you very much.

    1. Re:Don't Forget To Include Winamp! by TwistedSquare · · Score: 1

      I got winamp 3, hated it and downgraded to 2, then my brother convinced me to try winamp 5. I installed it, I still use my winamp 2 skin, still use my winamp 2 plugins, didn't see much use for the media library, and thus the sole benefit of winamp 5 was this: the fonts seem slightly sharper. A mighty upgrade indeed.

    2. Re:Don't Forget To Include Winamp! by Gyan · · Score: 1

      Umm, what you're actually saying is that you didn't have a need for the new features in Winamp 3.

    3. Re:Don't Forget To Include Winamp! by MattRog · · Score: 1

      I still can't get the fire-style, thin-lined spectrum analyzer like in WinAmp2. Was it that hard to port it to the "Modern" v5 skins?

      --

      Thanks,
      --
      Matt
    4. Re:Don't Forget To Include Winamp! by sethadam1 · · Score: 1

      You know, my first inclination was to shout out "Hell yeah!" WinAmp 3 SUCKED and WinAmp 2 is still perfectly functional and meets all my needs. But then I downloaded 5, slapped a WA2 skin on it, and played with the media library stuff. And the InternetTV. You know what? Turns out WinAmp 5 ain't all that bad - it's actually kinda cool. Stable as hell and cool new options that make it almost like an iTunes management program.

      Of course, the point of the article is enhacing code, so the argument could probably be made that, as the author points out, why not just take the cool parts of 5 and add them to 2? Why use a combination of 2 and 3 when NO ONE liked 3?

    5. Re:Don't Forget To Include Winamp! by mikewren420 · · Score: 1
      Umm, what you're actually saying is that you didn't have a need for the new features in Winamp 3.


      No, what I'm saying is they took a perfectly stable and functional piece of software, and tried to make it 'better' by doing a complete rewrite.


      It wasn't broke, why did they try to fix it?

    6. Re:Don't Forget To Include Winamp! by Gyan · · Score: 1

      I replied to TwistedSquare, not you.

    7. Re:Don't Forget To Include Winamp! by Nicolay77 · · Score: 1

      Actually they took the cool parts of 3 (the user interface) and added them to 2.

      That's Winamp 5. It's not a complete rewrite. So the cool parts of 5 (that are not the cool parts of 2) are actually the cool parts of 3.

      And I liked the 3, for, about half an hour, before going back to 2. No really, I liked the video window, and to me winamp 5 is the best of both worlds.

      --
      We are Turing O-Machines. The Oracle is out there.
    8. Re:Don't Forget To Include Winamp! by Anonymous Coward · · Score: 0

      But there is something that everyone here is missing about Winamp3: portability.

      Winamp 2 is heavily reliant upon windows libraries, while Winamp3 was meant to move to a platform-independent architecture. Unfortunately, it wasn't as successful as had been hoped due to stability issues.

      I'm surprised at the poor treatment that Winamp3 has received from the Slashdot community given that there was some potential for the whole thing to become open source and provide a consistent media player interface for Windows, Linux, and Mac.

    9. Re:Don't Forget To Include Winamp! by nburtner · · Score: 1

      It actually did become Open Source. They released the Wasabi kit and the Wasabi.player part of it is Winamp Three. It's all right here.

    10. Re:Don't Forget To Include Winamp! by Anonymous Coward · · Score: 0

      portable, not portable, whatever.

      The bottom line is that Winamp3 was a much crappier piece of software- they took a damn good program- fast, unbloated, it just friggen worked... And made it into a bloated piece of crap including features that nobody asked for and nobody wanted. The media library had some promise, but it was sloooow and buggy. A crappy piece of software that can run on my toaster is still that... a crappy piece of software. Open source is nice and all, but I would rather use a good closed source program than a bad open source program.

    11. Re:Don't Forget To Include Winamp! by Haarg · · Score: 1

      One of the main things to remember about Winamp3 is that it wasn't the rewrite that hurt it, but AOL forcing Nullsoft to release it far too soon. The beta versions released after the 1.0 release were far faster and fixed many of the complaints people had about the Winamp3.

      I used Winamp3 for quite a while, but have since moved on to foobar2000.

    12. Re:Don't Forget To Include Winamp! by drinkypoo · · Score: 1

      I don't think much of your example. I installed WA5 on my XP system at home and it won't run. The process starts, and immediately exits. WA2 and 3 both work fine - I never had any problem with WA3, except that it was a shitty video player. It has this in common with WA2.8.

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
    13. Re:Don't Forget To Include Winamp! by f0rt0r · · Score: 1

      I was hopeful for Winamp 3, but my hopes were dashed against the rocks. That said, I have not tried 5 yet, but after reading this thread I am planning on it. Creative Labs media player ( I forget the name ) used to have the capability of playing audio and video files, and you could use playlists for both. I don't know why they took the video feature out of later versions, maybe it was too hard to support or something. Anyway, perhaps Winamp 5 will save the day. It would be nice to have Mplayer-type functionality on Windows one day, though I would accept it if started supporting only open standards, and slowly advanced ( via plugins, perhaps ) to be able to play quicktime, wm*, realmedia, etc.

      There have been companies that have attempted this and failed. And even had they succeeded it would be harder to switch to a non-free solution than a combination of free players to get the job done.

      Food for thought...

      --
      I can't afford a sig!
    14. Re:Don't Forget To Include Winamp! by Slack3r78 · · Score: 1

      The one part of Winamp3 that's kept me from upgrading to WA5 so far is the fact that WA5 lacks the multiple playlist feature from WA3. This alone is enough reason for me to keep using WA3 for now. I've gotten far to used to loading up full albums as individual playlists and clicking between them at will to go back to the old, frankenplaylist system of old.

    15. Re:Don't Forget To Include Winamp! by AnyoneEB · · Score: 1

      Search on the Winamp forums, I remember seeing someone post that they were working on a plug-in to do that. Ah yes, forum user DrO is developing it, here is the forum topic on it and here's the preview 3 download. Hmmm... as far as I can tell, it doesn't do anything yet, but keep a watch on that topic.

      --
      Centralization breaks the internet.
    16. Re:Don't Forget To Include Winamp! by Slack3r78 · · Score: 1

      My understanding is that it's actually slated to be added to WA5 eventually, but until it actually gets released, WA5 is essentially unusable for me. Either way, I've got a fairly stout machine, so WA3 runs fine until they get it fixed.

    17. Re:Don't Forget To Include Winamp! by TC+(WC) · · Score: 1

      If I understand the feature you want, it's included in the media library. Songs are organized by artist and album. If you just double click on a song when you have an album selected, the playlist becomes the tracks from that album.

      So picking an album to populate the playlist is pretty much just a matter of selecting the album in the media library.

      If you'd prefer to use playlists, you can make however many you'd like in the media library, and switch back and forth between them.

    18. Re:Don't Forget To Include Winamp! by Slack3r78 · · Score: 1

      The problem is, the was implemented in a rather elegant way in WA3. There's a sidecar on the playlist window listing all available playlists. Creating new ones is simply a matter of clicking the Playlist button and saying "add new" then renaming it. Yes, I could do the same thing with Media Library in WA5, but it's a MUCH clunkier solution as-is. Like I said, I'll wait until they implement the sidecar and multiplaylist support into WA5 before I switch.

    19. Re:Don't Forget To Include Winamp! by Nicolay77 · · Score: 1

      I forgot to mention the feature that made me choose winamp 5 over all others (including iTunes): global hotkeys!

      Enjoy them.

      --
      We are Turing O-Machines. The Oracle is out there.
  30. ReFactor! by gbr · · Score: 3, Insightful

    Don't rewrite. Refactoring code is the way to go. Refactoring in small pieces allows the app to maintain compatibility as the process progresses.

    1. Re:ReFactor! by Anonymous Coward · · Score: 0

      First we had to structure our code,
      then we had to modularize it,
      then we had to functionalize it,
      then we had to object orientize it,
      while not forgetting to patternize it,
      and now we have to refactorize it.

      And we're still wondering why there is so much code rewitizing...

    2. Re:ReFactor! by kelzer · · Score: 1

      Martin Fowler might disagree.

      Refactoring is worth it in some cases, but not in all. If the entire architecture needs to change dramatically, it could be far more cost effective to rewrite.

      --

      ---------------------------------------------
      SERENITY NOW!!!!!!!!!!!!!!!!
  31. DejaVu by The+Bungi · · Score: 1
    Was it a "good idea" for Microsoft to rewrite Windows as XP and Server 2003? I don't know, it's their code, they can do whatever they like with it. But I do know that they had a fairly solid, reasonable system with Windows 2000 - quite reliable, combining the better aspects of Windows NT with the multimedia capabilities of Windows 98. Maybe it wasn't perfect, and there were a lot of bugs and vulnerabilities - but was it really a good idea to start from scratch? They billed this as if it was a good thing. It wasn't. It simply introduced a whole slew of new bugs and vulnerabilities, not to mention the instability. It's just another example of where a total rewrite didn't really do anyone any good. I don't think anyone is using Windows for anything so different now than they were when Windows 2000 was around, and yet we're looking at a 100% different codebase. Windows Server 2003 won't even run some older software, which must be fun for those users...

    2003: HAHAHA, M$ IS TEH SUX, thye shuld reWritee tehir WINDOZE from sctratch!!! HAHAHA!!!

    2004: HAHAHA, M$ IS TEH SUX, thye reWriteed tehir WINDOZE from sctratch!!! HAHAHA!!!

    1. Re:DejaVu by ThePeeWeeMan · · Score: 1

      Not to mention that it wasn't a complete rewrite from scratch to begin with. :-)

  32. Maintainability by PhxBlue · · Score: 5, Interesting

    The other side of the rewrite issue is, how long can you continue to maintain code from a legacy system? I worked on a project a couple years ago that had been migrated from assembler to COBOL and is now being rewritten (as opposed to being redesigned) for Oracle. Nevermind for a moment the fact that the customers wanted to turn the Oracle RDBMS into just another flat-file system--which included designing a database that had no enabled foreign key constraints and that was completely emptied each day so that the next day's data could be loaded. . .

    Some of the fields that are now in the Oracle database are bitmapped fields. This is done because there's no documentation for what those fields originally represented in the assembler code and because the designers are afraid of what they might break if they try to drop the fields or attempt to map the fields out into what they might represent. I had the good fortune to get out of the project last August. . . last I checked, they had settled for implementing a Java UI over the COBOL mainframe UI.

    Anyway, my point is this: at some point, you have to decide whether the system you're updating is worth further updates. Can you fix everything that's wrong with the code, or are there some things you'll have to jerry-rig or just shrug your shoulders and give up on? Under circumstances like what I mentioned above, I truly think you're better off taking your licks and designing from scratch, because at least that way you can take advantage of the new features that more recent database software and programming languages have to offer.

    --
    !#@%*)anks for hanging up the phone, dear.
    1. Re:Maintainability by Florian+Weimer · · Score: 1
      Increasing maintainability can actually require a rewrite at a certain point. Other good reasons are:
      • licensing issues (Netscape 4.x)
      • badly needed architectural changes (threading support for Apache)
      However, business logic often cannot be rewritten from scratch because it must be consistent with older versions. At some point, it's necessary to live with all those warts and bugs because too much stuff relies on them.
  33. Rewrites aren't bad by Anonymous Coward · · Score: 0

    First of all, there is such a thing as good enough. Take a look at a lot of the gnu utilities. Some sit at version numbers like 0.17.0, because they're good enough.

    However, big projects are obviously more complicated, and a lot harder to get right. There is a lot more to a program than just the source code. It is entirely possible for the source code to be totally bug free, and yet for the product to be fatally flawed. The problem is the design of the program. In all of the cases mentioned (that I have any knowledge of to begin with) the design of the original was flawed. Rewrites may toss out well tested bug-free code, but they do so in order to create well tested bug-free designs. I will gladly take a good design and buggy code over good code and a bad design any day.

  34. Can someone mod the whole article Flamebait? by Anonymous Coward · · Score: 0

    Yo, moderators...

    Yeah, really. Mod the whole stinkin' article flamebait.

    -A

  35. as a programmer's skills increase by polished+look+2 · · Score: 5, Interesting

    As I recall, Torvalds made mention that some of his original code in the Linux base was not very good and he would have written it much differently today. Indeed, most anyone that habitually programs naturally becomes more skilled and if the underlying premisis/framework/model of an application or tool is not as good as could be - or is lacking a certain methodology that time has proven to be beneficial and only rewriting it will solve this - what is wrong with rewriting the code from the ground-up?

    1. Re:as a programmer's skills increase by acidtripp101 · · Score: 2, Interesting

      That is an excelent point.
      I was once working on a time card program for a buisness a few years ago. I was relativly new at programming in the real world (I was still in High School, actually) and after the intital program was 'finished' and we introduced it into the current setup, we had to fix bugs. After fixing bugs, and fixing the bugs that the previous fixes introduced, I realized that if I would have written the program using a different layout, the entire system would just be better.
      I didn't ever completely rewrite the program, but I did slowly migrate the codebase over to the new layout (all in all, I guess I probably rewrote the thing from scratch again... but it didn't seem that way).

      --
      Not Free(as in beer). Free(as in "I'm free to beat you over the head for being a dumbass")
    2. Re:as a programmer's skills increase by jadavis · · Score: 3, Insightful

      what is wrong with rewriting the code from the ground-up?

      Nothing is wrong with that, as long as your time is worth nothing.

      The obvious answer is that if you get some enjoyment out of a rewrite, and you actually do it, then sure, its great. But if you have to trade something more important, than it's bad. What else could you do with your time, and how much enjoyment or productivity would you get out of the alternatives?

      When I first started programming, I would always get a vision about how a piece of software should work, and think about rewriting it. But usually the current software is, to an extent, cluttered for a reason. I think it's only worthwhile if you can actually work out the details, and you're still confident. The details are what always cause the problems.

      --
      Social scientists are inspired by theories; scientists are humbled by facts.
    3. Re:as a programmer's skills increase by ahdeoz · · Score: 0

      Torvalds also made mention (a while ago) something about reusability just being an excuse for people who are too lazy to rewrite from scratch. Wish I could find that quote.

    4. Re:as a programmer's skills increase by Webmonger · · Score: 3, Insightful

      What is wrong with that is that most of the code is correct and solid. It's just organised in the wrong way.

      Instead of rewriting, restructure! When you rewrite, there's a period where the new code doesn't work. If you restructure in suitably-sized steps, the code always works between steps.

  36. IPv4 vs IPv6? by john_smith_45678 · · Score: 1

    So we should stick with IPv4?

    1. Re:IPv4 vs IPv6? by Znork · · Score: 1

      Sure. I just called my ISP the other day and told them I needed 10 new static IP's for my home network and they gave them to me at once and without charge.

      Oh, wait, no, that was in a dream.

      I can get as many static IP adresses as I can conceivably ever want by transitioning to IPv6 _today_ without even calling my ISP. That's compelling reason enough to switch for me.

    2. Re:IPv4 vs IPv6? by mrplastik · · Score: 1

      The other benefit to IPv6 will be the greatly enhanced routing. As it stands today, so many NSPs and ISPs have routing fubar'd like you wouldn't beleive. Handing off to lame peers, or letting noc monkies who just got their CCNP modify BGP broadcasts, without a clue.

      Packet headers may be 40 bytes, but when you're no longer passing through ~15 routers to hit your destination, +24 bytes will be trivial.

      Example of XO routing: (I now have a low opinion of them, after ~10 years of using them, beginning with a dial-up UNIX shell in 1994) : Houston, to Dallas, to Atlanta, to Washington DC, to Colorado, to California(LA->SJO no doubt even. hah.). Someone has their routing royally screwed. (Thank god not all transit providers aren't equally stupid)

      -mpf

  37. Full of shit. by iantri · · Score: 4, Insightful

    This guy is full of shit and has no idea of what he is talking about.

    Some of the better parts:

    - He claims that The mozilla project and everything Netscape >4 is pointless and that Netscape 4 "just works". We all know that Netscape 4 is an awful, crashy, buggy, standards-breaking piece of crap that set the Internet back years.

    - He claims that Windows XP was a complete rewrite. Windows XP is NT 5.1 -- (check with ver if you want) Windows 2000 with the PlaySkool OS look.

    1. Re:Full of shit. by Dark+Lord+Seth · · Score: 4, Funny
      Netscape 4 is an awful, crashy, buggy, standards-breaking piece of crap that set the Internet back years.

      And what does that make IE? The antichrist?

    2. Re:Full of shit. by Anonymous Coward · · Score: 0

      At least IE's renderer is not god awefull slow.

    3. Re:Full of shit. by iantri · · Score: 2, Informative
      IE is nowhere near as bad as Netscape 4.

      If you feed, say, IE 4 a complex page with CSS, it generally will render it OK (an OK implentation of the standards). Netscape 4, however, will crash and burn. No exceptions.

      The fact that many organizations "standardized" on Netscape 4 just makes things worse...

    4. Re:Full of shit. by Mysticode · · Score: 2, Informative

      Are you sure you aren't comparing Netscape 4.x which is how old against newer versions of IE?

      When Netscape 4.5 came out I remember comparing it to IE and found that Netscape worked better overall.

      I agree that Netscape 4.x doesn't work nearly as well as say IE 5 but IE5 is a lot newer.

      Just my two cents, I personally use Pheonix/Firebird and Opera.

    5. Re:Full of shit. by Anonymous Coward · · Score: 0

      My $0.02

      - IPv6 has 128-bit not 64-bit addresses (as this guy claims)

    6. Re:Full of shit. by mcmonkey · · Score: 4, Insightful

      Netscape 4 basically ended the browser wars. That was the point many users switched to IE, and they never switched back.

      Yes, it was that bad.

    7. Re:Full of shit. by Doctor+Faustus · · Score: 1

      We all know that Netscape 4 is an awful, crashy, buggy, standards-breaking piece of crap that set the Internet back years.

      Perhaps, but the UI was nice. I would have prefered if they had shoved Gecko into the rest of NetScape 4.

    8. Re:Full of shit. by Apathetic1 · · Score: 2, Informative

      He's definitely blowing smoke - he blames XUL for Mozilla's poor performance on his workstation. XUL is not the limiting factor as anybody who has used Firebird can attest. Firebird is much quicker than Mozilla and still uses XUL for user interface.

      --

      My username does not make me Apathetic. It's irony, get it?

    9. Re:Full of shit. by EnglishTim · · Score: 1

      We all know that Netscape 4 is an awful, crashy, buggy, standards-breaking piece of crap that set the Internet back years.

      But you have to consider what Netscape would be like if it had had the amount of work put into it that mozilla has now.

    10. Re:Full of shit. by shadowmatter · · Score: 1

      I'd still have to go with Netscape 4. Does ring a bell!? Combined with neon colors and dancing hamsters, it was a recipe for instant blindness.

    11. Re:Full of shit. by Anonymous Coward · · Score: 0

      It doesn't matter which one you compare it to. It took a lonnnnnng time before netscape 4 was upgraded to 5(or did the go straight to 6??) In the mean time ie came out with a version a year until they got to ie6 at which point they had won the browser war and have let the browser stagnate.

    12. Re:Full of shit. by Saeed+al-Sahaf · · Score: 1
      This guy is full of shit and has no idea of what he is talking about.

      What do you expect from someone who used to be an Assistant Vice President at Bankers Trust Co...

      --
      "Who are in control, they are not in control of anything - they don't even control themselves!" - Glen Beck
    13. Re:Full of shit. by Mysticode · · Score: 1

      It went from Netscape 4.x to Netscape 6 and that wasn't much of an upgrade since Netscape 6 was slower and more of a memory hog than Mozilla.

    14. Re:Full of shit. by Slack3r78 · · Score: 1

      Er... Netscape 6+ *is/was* Mozilla, just branded as Netscape and with a few minor changes. IE: AIM and Spellchecker in NS, Popup block in Moz only for a while, etc.

    15. Re:Full of shit. by tigga · · Score: 1
      Netscape 4 basically ended the browser wars. That was the point many users switched to IE, and they never switched back.

      Yes, it was that bad.

      That's not true. At that time M$ embedded IE into Windows and users just did not bother to download anything else.

    16. Re:Full of shit. by RdsArts · · Score: 1

      But no one could have, as the code itself was too tied to licensed technology IIRC.

    17. Re:Full of shit. by noda132 · · Score: 1

      We all know that Netscape 4 is an awful, crashy, buggy, standards-breaking piece of crap that set the Internet back years.

      Yes, it was an awful, crashy, buggy, standards-breaking piece of crap; but it certainly wasn't the awful, crashy, buggy, standards-breaking piece of crap which set the Internet back years -- and is still doing so.

    18. Re:Full of shit. by Jmstuckman · · Score: 1

      Heehee, I remember how Netscape 4 would get into what appeared to be an infinate resource-hogging loop all the time, consuming 100% of your memory and CPU if you weren't careful.

    19. Re:Full of shit. by bluewee · · Score: 1

      But it seems that today, the Mozilla / Firebird project has started to take back users.

      --
      [blue] - The Ministry of Information approved this message...
    20. Re:Full of shit. by Mysticode · · Score: 1

      Well Netscape 6 was Netscape's build of Mozilla - I swear though that it was slower than any other builds of the straight Mozilla source that I tried.

    21. Re:Full of shit. by iantri · · Score: 1

      Turn on the classic theme in Mozilla/Netscape 6+ -- it's virtually identical to the 'old' look Netscape.

    22. Re:Full of shit. by Anonymous Coward · · Score: 0

      It was Mozilla 0.6 -- a highly beta version that Netscape only shipped because they were years behind schedule.

    23. Re:Full of shit. by Anonymous Coward · · Score: 0

      I'm not sure what affected IE's dominance more: NN4's crappiness, or MS having placed IE in such an easily accessible position... The fact that Netscape 4 was a complete embarassment lent credence to the argument that IE won the browser wars by sheer competence in having the better product, and not due to any supposedly monopolistic practices by Microsoft.

    24. Re:Full of shit. by c++ · · Score: 1
      Does <blink> ring a bell!?


      I seriously doubt it.

    25. Re:Full of shit. by Doctor+Faustus · · Score: 1

      That's what I use (NetScape 7.1, with the classic theme). It's not quite the same but, since I have a pretty fast PC, it's close enough. Still, it did make the hardware requirements skyrocket, and it was something like four years after the Mozilla project started that NetScape 6.1 came out (I tried 6.0, and immediately dropped it).

  38. I don't get it. by User+956 · · Score: 1

    When is "good enough" enough? ... This introduces new bugs and abandons all the small fixes and tweaks that made the original version work so well. It also often introduces incompatibilities that break a sometimes huge existing userbase. Examples include IPv4 vs IPv6, Apache, Perl, Embperl, Netscape/Mozilla, HTML and Windows.

    I don't get it. Windows 95 was a piece of crap. Are you saying they should have extended that codebase, instead of developing Windows NT onward, into WinXP? Basically, you're *complaining* that Microsoft acknowledged the crappy, unstable nature of Win95, and tried to create a better product?

    What kind of fucked-up bizarro-world logic is that?

    --
    The theory of relativity doesn't work right in Arkansas.
    1. Re:I don't get it. by sm0yby · · Score: 1

      They had NT 4.0 out not very long after Win95 -- and NT4 was an upgrade (some like to call it a downgrade because of some of Microsoft's design decisions when rewriting the code, like allowing third party device drivers to run in ring 0) of NT3.51, not a rewrite of Win95. Then of course there was Windows 98, ME and then Windows 2000 (by many thought to be an upgrade to the Win9x family), followed by Windows XP.

      What Microsoft did with Windows 95, was create first the OEM Service Releases (OSR2 actually worked pretty well, at least for me), then Win98 and WinME. Windows 2000 was developed out of NT 4.0, which in turn came from Windows NT 3.51, the origins of which can be traced to the old days of OS/2.

      And I actually liked OS/2. PM has (had) its own ways of doing things (like the Shift, Alt and Ctrl mouse-drag combinations to copy, move or create a shadow of a file, which were dependent on the source and destination media), but the system was actually pretty usable. It really is too bad that it failed. I still have an OS/2 Warp 3 CD plus the Bonus Pak around here somewhere along with OS/2 2.11 floppies... might install it some day just for the heck of it...

      --
      Been modded interesting, insightful and funny. Why does real life have to be so different?
  39. Fluff Article by SandSpider · · Score: 4, Insightful

    Okay, so most of the article consists of, "Here's software X. They re-wrote it, and now it's not as good or as accepted. Why'd they do that? They suck."

    Software is re-written for many reasons. Sometimes it's ego, sometimes it's for fun, but usually it's because you take a look at the existing codebase and what you want to do with it in the future, and you decide that it's going to cost a lot less to implement the future features by re-writing and fixing the new bugs than to work around the existing architecture.

    I've had to make the re-write or extend decision more than once, and it's rarely a simple decision.

    What I would have preferred from this article is some interviews with the people responsible for the decision to re-write, and what their thinking was, as well as whether they still agree with that decision or would have done something differently now.

    =Brian

    --
    There is nothing so good that someone, somewhere, will not hate it.
    1. Re:Fluff Article by benja · · Score: 2, Funny

      Okay, so most of the article consists of, "Here's software X. They re-wrote it, and now it's not as good or as accepted. Why'd they do that? They suck."

      Hey, that's exaggerating. The article's more like, "Here's software X. They re-wrote it, and now it's not as good or as accepted. Why'd they do that? I'm not blaming anybody, because I know all this is done by volunteers who do a fantastic job. I'm just saying that the benefits aren't sufficiently obvious to make it overwhelmingly compelling. Bizarre!"

  40. Structural bugs by GrouchoMarx · · Score: 2, Interesting

    Sometimes, rewriting from scratch is necessary to remove bugs. Not all bugs are just failure to check a buffer overflow, which can be fixed without a complete rewrite. Sometimes your basic communications architecture in the program is fundamentally flawed and insecure. At that point, by the time you've fixed that bug in the existing codebase it would have been easier to start from scratch and make everything else work "natively" on the new internal standard.

    Take for example, Windows. ;-) There are fundamental security issues with all GUI windows operating in the same user space. If one is compromised, they're all 0wnz3d. That's a reasonably major flaw, but to fix it would require essentially rewriting the entire GUI portion of Windows, because it's so integral to the system. To try and fix that without a rewrite would be harder and more complicated than chucking it and starting from scratch, and probably introduce a dozen other bugs in the process.

    Sometimes you really do need to throw out the baby with the bath water, if the baby is that dirty. Besides, making a new one can be fun! :-)

    --

    --GrouchoMarx
    Card-carrying member of the EFF, FSF, and ACLU. Are you?

  41. Joel on software article by mitchner · · Score: 5, Informative

    Joel on software has covered this point in a good article: http://www.joelonsoftware.com/articles/fog00000000 69.html.

    1. Re:Joel on software article by Lester67 · · Score: 1

      That article was also previously covered on /.

      Coming up next: YESTERDAY'S WEATHER! Stay tuned. :-)

    2. Re:Joel on software article by Anonymous Coward · · Score: 0

      For pete's sake this is slashdot. We don't care what some guy named joel has to say on the matter.

      We're hust like programmers: we don't care if someone else has solved the problem before, we rewrite stuff when we feel like it, and we don't like reading other people's answers (i.e. code/articles).

    3. Re:Joel on software article by leonardop · · Score: 1

      Interesting article. I respect very much Joel's opinions on most issues whenever he posts a new article, and this one in particular raises very valid points, however, this article's main line of reasoning starts by judging Netscape's decision to rewrite its code from version 4.x to 6.x, something that doesn't fall in the category of things that can be simply described as the software authors' desire to "throw it out and start over" because "It's a big hairy mess".

      Mozilla's history is an interesting and revolted one, especially when it was released as an "open source" project (ie. version 5). Sure, Mozilla's developers felt it was a "big hairy mess" by then, but their decision to start from scratch was mainly deployed for a very diferrent issue, and from most people's point of view, it was the best decision they could've ever take. Granted, maybe Netscape (the company) is not the best `success story' ever, but that's related to another number of reasons, and when you focus on the issue of developing the best web browser possible, Netscape's developers decision back then was the single most important step to make Mozilla the greatest codebase for a web browser ever.

      For a bit of Mozilla's history and the reasoning behind the Netscape 4.x -> 5.x you can read a few fragments from the book "Creating Applications with Mozilla":

      http://books.mozdev.org/html/mozilla-pref.html
      http://books.mozdev.org/html/mozilla-chp-1.html

    4. Re:Joel on software article by Anonymous Coward · · Score: 0

      Sigh. As with everything, one needs to look at individual cases. This is why I like the idea of Z and B methods so much - it addresses things like the Netscape engineer's concerns (see followup.) He mentions a piece of code to handle 600 variations on FTP. Well, the ideal way to handle that would be to express in the general relm of Z or B notation what needed to be done in each case, and code arrived at from those expressions. The logic is then preserved even through something like a code refactoring.

  42. Who is this tool? by jsimon12 · · Score: 1

    Who is this guy? Rewrites done properly and for the correct reasons are great. One would think after seeing everything Microsoft spews out that people would realize heaping code on top of code isn't good. For starters it is unlikely that you have the same programmers working on a codebase after more then a year or two and most code isn't exactly well documented. So you see dupplications. As for getting read of tweaks? Huh? Where does he get this stuff?!?!? Then again if you read the artcile he still uses Netscape 4.08, WTF? it has known bugs out the yingyang.

    So back to my first question, who the hell is this guy?

    1. Re:Who is this tool? by gregarican · · Score: 1

      Checking some of his other websites I found a nice picture of him from one of his long bike trips. He looks like a real sharp one whose viewpoints are to be seriously considered. Truly a Renaissance Man of our time to be reckoned with.

    2. Re:Who is this tool? by happyfrogcow · · Score: 1

      Who is this tool?

      I don't know, but the tool needs a rewrite! ;)

      (just kidding mr. author of the article. take no offense! just a joke!)

  43. Good Enough? Never! by zangdesign · · Score: 1

    There is only "good enough for now". Rewriting software is good from several standpoints:

    1. It may be possible optimize slower areas of the code
    2. It may be possible to take umpteen patches and merge them into the regular code flow
    3. It may be possible to move modules outside the main code base
    4. etc., ad infinitum
    X. it may be billable as a new product (for commercial software only)

    Anyone who sits back and says a given codebase is "good enough for now" needs to be consigned to the scrapheap of history and quickly. You should always keep an eye out fot a better way.

    --
    To celebrate the occasion of my 1000th post, I will post no more forever on Slashdot. Goodbye.
    1. Re:Good Enough? Never! by sqlrob · · Score: 1

      And any of those (except X.) need a rewrite rather than a refactor exactly why?

  44. I didn't read the article by billnapier · · Score: 4, Funny

    It was too messy and unmaintainable. I'll wait until the rewrite comes out to fix all the grammer and spelling bugs.

    1. Re:I didn't read the article by Anonymous Coward · · Score: 0

      I'll wait until the rewrite comes out to fix all the grammer and spelling bugs.

      Maybe you're not the best one for the job...

    2. Re:I didn't read the article by Frank+T.+Lofaro+Jr. · · Score: 1

      It's spelt "grammar", not "grammer".

      --
      Just because it CAN be done, doesn't mean it should!
    3. Re:I didn't read the article by mindriot · · Score: 2, Funny

      Aww... this thread is getting too messy and unmaintainable. You should've done a complete rewrite instead:

      It was too messy and unmaintainable. I'll wait until the rewrite comes out to fix all the grammar and spelling bugs.

    4. Re:I didn't read the article by Anonymous Coward · · Score: 0

      Now, if someone will rewrite "C++ for Dummies", I could get a real job!

  45. Mozilla vs. Firebird by Anonymous Coward · · Score: 0

    Hmmm.. rewrite good or bad?

    Try Mozilla classic.
    then
    Try Firebird and Thunderbird.

    Firebird and THunderbird taking over...

  46. Highly selective. by Anonymous Coward · · Score: 0

    I notice the author brings up Perl 5 versus Perl 6.

    What he doesn't do is bring up Perl 4 versus Perl 5. Or Perl 3 versus Perl 5. Or Perl 1 and Perl 2.

    Perhaps it's because he's happy to admit that, unlike his predictions, old versions really do die out because their successors are so much better.

  47. rewrite, but do it correctly by tvykruta · · Score: 2, Interesting

    As a video game developer, I've been involved in many "code upgrades", as well as rewrites. As long as the rewrite is being done by people who wrote the original code, and they invest time in some preproduction carefully thinking through what they did right and wrong, the rewritten product will always be faster, more stable, easier to maintain, etc. etc. In the end it's always been a clear winner.

    1. Re:rewrite, but do it correctly by e-Motion · · Score: 1

      As a video game developer, I've been involved in many "code upgrades", as well as rewrites. As long as the rewrite is being done by people who wrote the original code...

      (emphasis mine)

      Excellent point. That eliminates the "NIH rewrite", which is usually caused by programmer hubris. Sometimes maintenance programmers rewrite code for the sake of "clarity", when in actuality they are falling prey to their own pride. Of course, the end product looks clearer to them, but that's probably because they wrote it. It may or may not be clearer in an objective sense, and it might contain more bugs.

  48. I think the department says it all by gerardlt · · Score: 1

    I know I always get a real buzz when I start with a fresh clean slate.

    However, I know that often that biggest gain will arise from the difficult mental process of working with what I already have. It is hard because it forces me to question myself.

    --
    /* This sig is disabled. Press CTRL-W to enable. Thankyou */
  49. This guy knows nada about IPv6 by ^BR · · Score: 1

    Not even that the new addresses are 128 bits long and not 64 like he states repeatedly...

    And prefering Netscape 4 to Mozilla, I want some of the stuff he takes...

  50. IPv6 address size cut in half? by GT_Alias · · Score: 1
    From the article:
    Apparently IPv6 will solve all these problems, with a brand new standard that uses 64 bits.
    ...
    Many, many applications work with IPv4 and assume that addresses will be 32 bit, not 64 bit (as IPv6 specifies).

    That's a pretty glaring error, if we're talking about the same IPv6 spec.

  51. Re:"DAMNED" has an N in it by Kenja · · Score: 1, Funny
    "DAMNED has an N in itbut i'm not going to tell you where"

    I do't kow what you're talkig about. I spelled damed correctly.

    --

    "Have you ever thought about just turning off the TV, sitting down with your kids, and hitting them?"
  52. Joel Spolsky by Boing · · Score: 4, Informative
    Joel of Joel on Software has written a much more insightful and useful (IMO) analysis of the motivations and fallacies behind code rewrites.

    Things You Should Never Do, Part I

    1. Re:Joel Spolsky by chromatic · · Score: 2, Informative

      I kinda prefer JWZ's the CADT Model.

    2. Re:Joel Spolsky by PythonCodr · · Score: 1

      Heh ... I knew I'd seen an article like the posted one before, and Joel's article was it.

      What both articles ignore is that it's quite possible that the original design just wasn't appropriate for evolving task of the software. Yeah, it happens. That doesn't mean you don't understand the design, in most cases you understand it quite well, and it's just not a good design. So, you come up with a more appropriate design and you rewrite the code based on it.

      What always bugged me about Joel's assertion that you had no reason to believe you'd do a better job the 2nd time around. If you understand the original design and intent of the code, and now better understand the how others want to use your code (call it an updated and validated specification if you like), you can make an informed decision about whether or not it makes sense to scrap it or patch it. Anecdotes about failed software rewrites are fine and all, but as an friend of mine (Hi Linda!) likes point out: the plural of anecdote is not data.

  53. Rewriting isn't ALL bad by Anonymous Coward · · Score: 0

    From my experience anyway. I digress, this is in the context of university assignments, where a rewrite takes a matter of a few hours, but I've had code that refused to work even though I could trace it logically and there didn't seem to be any problems. After getting fed up, I toasted it and started from scratch, with the fresh idea in my mind of how it was supposed to work, and it came out perfectly.

    1. Re:Rewriting isn't ALL bad by soft_guy · · Score: 1

      Fine. However, you aren't really talking about a real world situation, are you?

      Let's say that I have a moderately sized project containing 100,000 lines of code. Scrapping a few hundred lines of code within that project and rewriting that section is fine. Scraping the entire 100,000 lines and starting over... well you'd better have a damn good reason.

      I've inherited codebases that large. Ones that were originally written by non-professional programmers, too. In one case the guy was a physician and amateur programmer. After two years of working on the program, it no longer contained much of his original code - and had been refactored into a very readable and maintainable codebase. However, during those two years, we had shipped 2 major releases and probably another 3 minor releases of the software. If I had chucked the whole thing and rewritten from scratch, we would not have had continual improvement in quality and would not have been able to show progress.

      The way I did this was that I would take a particular part of the code and refactor it into readability. Then I would add the new features requested. Then, I would fix bugs. At one point, I even ended up creating a brand new project and then migrating over all the pieces I had created for the app. I did that to solve some app-wide architectural issues. Still, I never was in a situation where I could not build the whole app and show all the functionality to people.

      --
      Avoid Missing Ball for High Score
  54. What !? by iantri · · Score: 1
    What does a web browser do today that is so different to what was being done by Netscape 4.x? Nothing much, as far as I can see. Rendering HTML is something that Gecko can do quite well, but not all that much faster (as far as I can tell) than 4.x. In most cases, 4.x is perfectly "good enough" for me.

    This is a joke, right?

    Please tell me it is a joke.

    1. Re:What !? by 3.1415926535 · · Score: 1

      There's this new phenomenon appearing on the 'net recently, where people blatantly misrepresent facts in an attempt to anger or annoy people. Your best bet is to just ignore them.

    2. Re:What !? by BRSloth · · Score: 1

      What do you mean "new phenomenon"? This happens all the time in Slashdot. They are called Trolls.

    3. Re:What !? by iantri · · Score: 1

      broken sarcasm detector?

  55. Refactor to reduce the risk by Coot · · Score: 1

    There is often a good reason for the rewrite, or the fork, and there is no reason why fear of introducing bugs should stop a rewrite.

    The key is to use refactoring methods to do the work, rather than rewriting from scratch. Implement a unit test framework for the software you want to rewrite, and then do the rewrite through a process of incremental change, running the test suite after each change. This method reduces the risks that would otherwise make the effort seem foolhardy and not worth the effort.

    --

    --
    “Doh!”

  56. Incorrect Facts, Conclusions Questionable by ion · · Score: 1

    I had to force myself to keep reading the article after the first case study. The simple fact that he cannot even get his facts straight (IPv6 has a 128 bit address space) does not help his argument.

    For a much more coherent argument against re-writes see Joel on Software, where he argues throwing everything out and starting fresh is a bad idea. He argues for evolutionary refactoring away old code.

  57. eh, -1 flamebait for the whole article... by SerialHistorian · · Score: 3, Insightful

    Rewrites are 'bad' from a management point of view (at least, a manager that isn't familiar with software development), which looks at return on investment (ROI).

    However, from a developer's point of view, a partial or complete rewrite is sometimes the only way to FIX certain bugs. While it may introduce new, small ones, usually developers are smart enough to read the old code and learn from it's mistakes before the do a rewrite.

    A partial or complete rewrite is ALSO sometimes the only way to fix 'spaghetti code' -- code that's become so tangled from patch upon patch being applied to it that it's now impossible to trace and fix a bug. If spaghetti code isn't pursued and rewritten on a regular basis (this is 'constant improvement' -- a management buzzword from the past few years that actually works), new bugs can be inadvertantly introduced -- and it can sometimes take weeks to hunt down an intermittant bug by tracing spaghetti code. Ladies and gents, WEEKS of programmer time is expensive compared to one programmer spending 8-10 hours per week tracking down bad code in the codebase and rewriting it.

    Really, there's a case for doing rewrites on a constant basis. The author should have instead addressed adequate testing in software development environments...

    --

    --
    Vote for your hopes, not for your fears - Vote Third Party

    1. Re:eh, -1 flamebait for the whole article... by RoboProg · · Score: 1

      -- Ladies and gents, WEEKS of programmer time is expensive compared to one programmer spending 8-10 hours per week tracking down bad code in the codebase and rewriting it. --

      Nuh uh! Our code is blessed with corporate goodness! It would NEVER require weeks to find bugs that aren't there, and even if they were, they wouldn't be too hard to fix, and even if they were hard to fix, they don't happen too often and their not worth fixing! So there!!!

      You want to spend how much? Waaaaaaaah!

      (not that I disagree you, but I think it would be fun to watch you explain this to The Great Wall of Managament, http://info.astrian.net/jargon/terms/w/wall.html)

      --
      Yow! I'm supposed to have a plan?
  58. Times they are a changin by the_rev_matt · · Score: 1

    Perhaps it has something to do with the fact that as technology changes, and the ways technology is used changes, the original design fails to efficiently and effectively meet the needs of the users. New features and functionality that weren't considered in the original architecture add stability and security issues. You reach a point where it makes more sense to take all of that knowledge gained from the current codebase and build a brand new one that takes into account all of the tacked on features and enhancements. And you will have to do it again once the "new and improved" version has been revised a few dozen times.

    --
    this is getting old and so are you

    blog

  59. Apple OS X Aqua by WolF-g · · Score: 1, Interesting

    The Aqua interface for OS X was completely rewritten for 10.2 Jaguar last year, and it was amazing. Things got alot faster and more intuitive.

    1. Re:Apple OS X Aqua by Anonymous Coward · · Score: 0

      Nothing in Aqua was completely rewritten, they just added an OpenGL acceleration layer and redirected all the graphics draws to that.

      And the system didn't become more 'intuitive' it was just as intuitive as it was in 10.1. It's just faster and less buggy.

  60. Regression testing... by kfractal · · Score: 1

    without it rewrites are dangerous. Well, just about any coding is :)

  61. Just Pissed by RadioheadKid · · Score: 1

    This guy is just pissed he has to learn new stuff.

    --
    "Karma can only be portioned out by the cosmos." -Homer Simpson
  62. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  63. Second-system effect by Chunky+Kibbles · · Score: 1

    Woohoo! he's discovered the second-system effect. Can I recommend people read some of JWZ's netscape ramblings, and "The Mythical Man Month" by Fred Brooks, Jr.

    Gary (-;

  64. Rewrites are Good by RichiP · · Score: 2, Insightful

    As a software designer, developer, programmer and user, I have to saw that rewrites done right are A Good Thing(TM). When I do a rewrite, it is with the intention that it is to be better than the old one. I only do rewrites when a limitation of the old code base has been reached or can be foreseen to be reached.

    When a rewrite is to be made, it goes without saying that anything learned from previous development should also be applied to the newer project. If you can't learn from the mistakes of the past, don't do a rewrite.

    It is not rewriting, per se, that is the problem. It is choosing WHEN to do a rewrite. Unless there is sufficient reason to do one (ie. old code hard to maintain, scalability problems, old code reaching its maximum potential, etc.), of course one should stick to improving on existing one. If, however, the reason is that so "we could have something new", or so that "we could say we did a rewrite" or "I'm the new architect around here. Scrap the old code and write my design", then of course rewrites might be more trouble than they're worth.

    All common sense.

  65. What a stupid article by tstoneman · · Score: 1

    How can you say rewrites are bad? That is simply ridiculous. Without rewrites, there would be no progress. Sure, people get inconvenienced, but it's a minor inconvenience relative

    There are some rewrites that are simply horrible and make no sense. But every single one of the examples that the author gives is an example of a GOOD rewrite!

    Apache 2.0? Mozilla? Perl? This is ridiculous. I love Apache 2 and Mozilla (I don't use Perl) and find Mozilla much smoother to use than Netscape. These are platforms that people will be using going forward. If going forward is impeded by the current architecture of the software, YOU NEED A REWRITE.

    A bad rewrite is when it completely breaks everything and no one migrates to the new version because there is no gain for anyone involved.

    And Windows 2K -> XP -> 2K3 were not rewrites. They are evolutionary changes... now the author doesn't think that software should be improved or changed to add functionality???

  66. Software sucks by pudchuck · · Score: 0

    If an application was designed correctly then it could have a much longer life. Just look at the physical world, good buildings, beautiful structures are around forever. Bad ones are burned for insurance claims. I think bad design is rampant in our profession, and I'm as guilty as anyone.

    1. Re:Software sucks by poot_rootbeer · · Score: 1

      Just look at the physical world, good buildings, beautiful structures are around forever./i?

      So obsolete buildings are never torn down and rebuilt? I guess all that footage I watched on the Discovery Channel of demolitions experts with their wrecking balls and stretegically placed dynamite was phony.

    2. Re:Software sucks by pudchuck · · Score: 0

      Obviously my statement isn't applicable in all cases, but it holds true for the majority of them.

  67. Humbug by Jahf · · Score: 1

    When you rewrite a project, it is obvious it is going to cause new issues. If you are paying attention, you make use of experience and/or at least view the patches and changelogs of the product you're replacing so that you don't incorporate too many of the old problems along the way.

    What I've read seems like most who worked on Netscape 2.x through Netscape 4.x would agree it was time for new architecture. It was probably time for new architecture in the Netscape 3.x timeframe but corporate pressures were high to produce quantity instead of quality. The codebase was just too rigid, especially in the rendering engine, to keep up with emerging standards.

    The point is that -not- rewriting may be safer in the short term, but often guarrantees your product is going to have feature lock and eventually obsolescence. ...

    A bit of a push off-topic, but I think this is a lesson I think TiVo may be about to learn the hard way as most of their new versions are only new feature releases, not updates to improve the core of how the products work, which has begun to limit the efficiency of their product (ie, as the drives in the product get larger, the inefficiency of how the TiVo handles it's database becomes more apparent) and what types of features that they can add. I'm not saying they need to scrap everything, but rewriting some of the underlying system is going to have to happen at some point.

    --
    It is more productive to voice thoughtful opinions (reply) than to judge (moderate) others.
  68. Sometimes ya just have to re-write by hcg50a · · Score: 4, Insightful

    From the Perl 6 development webpage:

    "The internals of the version 5 interpreter are so tangled that they hinder maintenance, thwart some new feature efforts, and scare off potential internals hackers. The language as of version 5 has some misfeatures that are a hassle to ongoing maintenance of the interpreter and of programs written in Perl."

    For me, this is a necessary and sufficient condition for rewriting something.

    Another one is: When changing the original will take longer than rewriting from scratch.

    --
    HCG 50a = 2MASX J11170638+5455016
    11h17m06.4s +54d55m02s
    1. Re:Sometimes ya just have to re-write by Bas_Wijnen · · Score: 1

      For me, this is a necessary and sufficient condition for rewriting something.

      Another one is: When changing the original will take longer than rewriting from scratch.

      I always thought that if there were two conditions which are both both necessary and sufficient, then they must be equal.

    2. Re:Sometimes ya just have to re-write by hcg50a · · Score: 1
      I always thought that if there were two conditions which are both both necessary and sufficient, then they must be equal.

      Yeah, I overstated it.

      In logic when you're trying to prove a theorem (ie., P == Q), it can always take the form of two sides:

      if P then Q

      and

      if Q then P

      The first condition states the necessity of Q for P.

      The second condition states the sufficency of Q for P.

      I overstated the case in saying that the presence of a bunch of tangled, ugly unmaintainable code is a necessary condition for re-writing it. I think it actually only needs to be re-written if it has to be maintained!
      --
      HCG 50a = 2MASX J11170638+5455016
      11h17m06.4s +54d55m02s
    3. Re:Sometimes ya just have to re-write by yonyonson · · Score: 1

      Another one is: When changing the original will take longer than rewriting from scratch.

      If this is the *only* reason for a rewrite then it is a ill fated one. Unless the original design or architechure is incompatible with the introduced change, a rewrite because of time will only reintroduce new bugs or cycle the old bugs back in. However there is the case of management seeking a faster return time . . .

      Just my [2] sense of things

      john

    4. Re:Sometimes ya just have to re-write by Anonymous Coward · · Score: 0

      Why do assume that Perl 6 will ever be finished? I say revive Topaz. It had a much better design.

    5. Re:Sometimes ya just have to re-write by Anonymous Coward · · Score: 0

      Another one is: When changing the original will take longer than rewriting from scratch.

      Agreed.

      I think with a lot of these rewrites, it's best to keep maintaining the previous version for as long as it takes for the new version to mature - and to keep fixing any serious bugs in the old model long after its replacement has taken over.

      One benefits of rewrites is that with an improved architecture, new, previously impossible modes of usage become possible. There's Mozilla with its rendering engine being used in a wide variety of different browsers, there's KDE being scripted and with new interfaces being built, there's all sorts of things.

      A BBS I use had an incredibly old, difficult-to-maintain system based on multiple login processes with shared datafiles and a complicated lock file arrangement replaced with a modern, client-server architecture a few years ago. The transition was fairly painful, but all sorts of things are now possible - what used to be telnet-only now has a full HTTP interface, bots, message archives... It involved a lot of work, but it was worth it - especially when the old version turned out not to be Y2K compliant...

    6. Re:Sometimes ya just have to re-write by murr · · Score: 1

      From the Perl 6 development webpage:

      Yes, but keep in mind that this page was written by the people who initiated the current incarnation of Perl 6 in mid-2000. At the time, they thought they would have a release within 18 to 24 months, an estimate which now seems to be off by a factor of at least 2x, probably more.

      This is, IMHO, the big issue with "big bang" rewrites: even if you ultimately end up with a superior product (which, IMHO, Mozilla is compared to Netscape), you often kill the momentum of your product for several years, and once the new product is out, it may not be nearly as relevant as it was projected to be.

  69. Heard it before by squiggleslash · · Score: 1
    A "rewrite" is often harmful, but not always so. Unfortunately the automatic presumption that one is tends to prejudice people against the concept when it's absolutely necessary.

    I've rewritten entire projects because they had entirely the wrong design, difficult to maintain, unreliable and would never have been capable of performing what they sought to do. (If you bring in consultants to start a project, you are often guaranteed to end up with code like this.) That's not to say that I haven't looked for ways to keep existing code where it could fit in the new structure, but it's often just absolutely necessary, and often the hardest thing to explain to whoever it is who's paying the bills.

    Sometimes legacy designs do cripple a potentially good system. I also think that Mozilla is an example of good to come out of the "We ought to rewrite this" camp - it took an age to appear, but once it did, it was excellent, far better than anything else (and still is.) Some people took exception to Mozilla's relatively slow user interface and rewrote those entire chunks (Chimera/Camino, Galleon, Phoenix, and others), and these, again, proved to be worthwhile rewrites.

    The critical thing when rewriting a project is not to get carried away. Frequently 90% of what's needed is restructuring, not rewriting per-se. Old code can often be recycled and restructured to fit into the new framework. But sometimes it's absolutely necessary to call a halt, realise a lemon is a lemon, and create something fresh.

    --
    You are not alone. This is not normal. None of this is normal.
  70. CONGRATULATIONS ON RECEIVING THE "DIPSHIT AWARD" by Anonymous Coward · · Score: 0

    The correct word is "damn" as in the interjective vulgar.

    YOUR spelling of "damed" would possible mean one of two things:

    Either as an adjective (-ed) form of "dam" which is what holds back water.

    Or as an adjective form of "dame" which is a slang term for a female.

    Often times people will spell "damn-it" (correctly spelling) as "dammit" (incorrect but accepted spelling).

    HTH HAND

  71. I can only say one thing: by Enahs · · Score: 2, Funny

    Enlightenment DR17.

    --
    Stating on Slashdot that I like cheese since 1997.
    1. Re:I can only say one thing: by kubrick · · Score: 1

      Duke Nukem Forever?

      --
      deus does not exist but if he does
  72. Who cares? The old versions stay for a while. by compactable · · Score: 1

    Don't like perl 6? Use perl 5. How is this an issue? Unless you cast your lot with the cult of Gates, old poducts last a long, long time before they're considred useless...

  73. Rewrite is a good thing by melted · · Score: 4, Insightful

    Every successful piece of software I've ever worked on was rewritten at least once, by the same team (or by myself on private projects) in the process of development, fully or at least partially.

    The fact of the matter is, even if you hire an expensive architect and have him do a good job, he's not a God. When you develop software some parts of it tend to become ugly as heck and you can't help but think on how to do the same thing better and/or with less effort, so that it won't become a PITA to run, maintain, improve and extend. When you reach critical mass, you become "enlightened", throw some shit away and rewrite it to save time later on. In all cases where I've seen it done I think it was worth the extra effort. I also think re-engineering code as you go saves money long-term if it's done reasonably.

    All of this, of course, doesn't apply to those who start their separate standalone projects even though there are dozens of other reasonably good projects to contribute to (and maybe rewrite some parts of). Freshmeat.net is full of examples.

    1. Re:Rewrite is a good thing by adrianbaugh · · Score: 1

      All of this, of course, doesn't apply to those who start their separate standalone projects even though there are dozens of other reasonably good projects to contribute to (and maybe rewrite some parts of). Freshmeat.net is full of examples.

      Sometimes writing a whole piece of software is the best way to take your coding to the next level regardless of how many other similar applications there are. You wouldn't get the same benefit from just contributing to someone else's project. So don't flame these people, once they've finished their own project they'll probably have a lot more skill to contribute to someone else's. And you never know, one of those projects just might turn out to be the One True Notepad-style Application we've all been waiting for....

      --
      "'I pass the test,' she said. 'I will diminish, and go into the West, and remain Galadriel.'"
      - JRR Tolkien.
    2. Re:Rewrite is a good thing by Slack3r78 · · Score: 1

      Not only that, but the fact that you can't always envision everything you'll want to one day add in doesn't help either. The best example I can think of is John Carmack and iD sofware. From the point of view of the author of the article, Carmack should still be hacking away at the Catacomb3D engine (think Wolfenstein 3D with CGA graphics and monsters instead of Nazis), Or perhaps, more realistically, the Quake I engine, instead of writing the Doom 3 engine from the ground up. After all, the old code base is more proven, no?

      The fact is, through a combination of experience gained, increased dificulty in maintainability, and new techniques, it sometimes makes sense to start anew taking advantage of the clean start to build something better than what you started with. Incremental building is important, but sometimes it helps to wipe the slate clean and start with something leaner, meaner and overall easier to work with.

    3. Re:Rewrite is a good thing by Anonymous Coward · · Score: 0
      All of this, of course, doesn't apply to those who start their separate standalone projects even though there are dozens of other reasonably good projects to contribute to (and maybe rewrite some parts of). Freshmeat.net is full of examples.

      However, in this case much less harm is done. If one throws away development of an existing app/system, to rewrite it from scratch, it halts progress (as seen from outside, ie. perception) for that thing for a while. When new projects are started it's "only" preventing more established ones form growing. Not that I agree with original author; there's definitely time and place for complete rewrites; and most of the time there are multiple partial rewrites going on for any live and useful project (dead, EOL'ed ones not necessarily so).

      Personally I'm less concerned in second case, actually; I think competition in somewhat constructive way (ie. instead of whining, badmouthing and being general PITA, building something on your own) is a Good Thing (tm), not a bad thing. But I do know this is one area where people disagree; is communist (well-written 5-year plans, only sanctioned projects, all resources for those) approach better than truly anarchistic or laissez-faire (not capitalistic, as no capital need to be involved).

    4. Re:Rewrite is a good thing by OldCrasher · · Score: 1

      I would further suggest that a good software architect envisages that the software will be rewritten. Maybe several times. This allows for the system to evolve as it gets bigger and handles more of the business or technical needs anticipated of it.

  74. There comes a time... by Jacob0531 · · Score: 1

    There comes a time when code evolves to much more than what it was originally designed for. New requirements added to an already old codebase often require major hacks to get working for a deadline, and never get reworked, despite the programmers best intentions.

    There comes a time to take a step back and look for patterns, useful idioms. Occasionally things can simply be refactored, but just as often a fundamental shift in program logic results.

    And hey, writing new code is always more fun that mucking around old code!

    1. Re:There comes a time... by nick-less · · Score: 1

      And hey, writing new code is always more fun that mucking around old code!

      even fixing bugs in new code is more fun than fixing them in old code...

      this guys problem is: he thought we are doing rewrites for the users *g*

  75. Software Life Cycle by Peter_Pork · · Score: 1

    Well, software has a well-known life cycle, and this is what forces developer to rewrite code. After some point in the life of a software project, bug fixing and adding features becomes so complicated that it is not cost effective to maintain the software anymore. It is simply better to rewrite with the new set of requirements derived from the life of the original project. Apache is a good example. The old version works very well, but adding each new feature is a nightmare, so they collected the existing requirements, and using their new insights coming from years of experience they rewrote the whole system. Sure, it will be a while before it is as stable, but the code is much better. Also, I can think of many example in which the rewrite ended up being much better, such as Netscape, the rewrite of Mosaic.

  76. Re:"DAMNED" has an N in it by Anonymous Coward · · Score: 0

    Yay, another Dame Edna fan !!

  77. It's all about entropy... by Anonymous Coward · · Score: 0

    You can think about all of those tweaks, inserts, and modifications as increasing the disorder in your codebase. I suppose that sometimes the best option would be just to start from a pure state and try to build back up to the same point with more order to your code, rather than re-purify old code. Either way, something will break, but I think coders would rather start from scratch than try to simply the nuances.

  78. joel on software by Anonymous Coward · · Score: 0

    Re-writing Netscape from scratch was a good idea.

    The car was broken, had 100,000 miles on it,
    and couldn't keep up to speed on the freeway.
    Putting on new tires, cleaning it and putting
    in a new battery wasn't going to fix it.

    The same damn reason you buy a new car is the
    same reason you build new software.

  79. bizzare by cultobill · · Score: 2, Insightful

    While the article is a good rant, it's just wrong sometimes. For instance:

    * He says that IPv6 uses 64 bit addresses. It uses 128 bit in reality. You would think that, if you were saying why something was bad, you'd do some basic research?

    * Also in the IPv6 stuff, "TCP/IP works pretty well". So? TCP/IPv4 and TCP/IPv6 are the same damn thing. That's not an argument against IPv6, it's an argument for knowing what you're talking about.

    * Perl. Sorry, the reasons for moving to the model in Perl 6 is well documented and sane. There's some problems with Perl 5 that we can't get around without losing backwards compatibility (syntax braindamage, for instance).

    * Mozilla. Ok, it's slow. The Mozilla team even admits it at this point. MozFirebird is better. The reason for starting fresh wasn't speed, it was because the old codebase sucked.

    * HTML. Having a language for both layout and data sucks. Splitting it into 2 parts is much better. There are developer perks, too (no rewriting the website to make it look different, no playing with layout to add data).

    The basic point he seems to be missing is: a major version change (1 to 2) is supposed to be a radical update. The version system used by the kernel (and a lot of OSS projects) is based on that. Major.minor.revision. Bump revision when making bug fixes, bump minor when adding features (without breaking too much API), bump major when it's something new altogether.

    --
    -- Bill "Houdini" Weiss
  80. BULLSHIT! by xutopia · · Score: 2, Insightful
    Right now the people that still use Netscape 4 should be hung upside down by their little toes, wipped with a chainsaw and burned with acid dripping on their genitals.

    Netscape 4 is horrible. It's usage is actually slowing down adoption of Mozilla and other far superior browsers. Once we start creating web sites with standards rather than with code that looks like HTML we'll have smaller browsers that can do things much faster than what Mozilla can do today. Indeed Mozilla isn't just one browsers but multiple browsers for all the F'ing crappy implementations of HTML there have been. Just look at the page this article is on. It's ladden with mistakes, isn't even standard HTML 4.0!

    This guy would prefer to see the net stop growing than see some change so he doesn't have to rewrite some stuff. Lazy ass.

    1. Re:BULLSHIT! by Anonymous Coward · · Score: 0

      Mozilla on a 133MHz Pentium, 72MB RAM, and Windows 95a? Ha! Not even Opera can run on that hardware.

      Web browsers and HTML standards are the ultimate example of good ideas gone wrong....

    2. Re:BULLSHIT! by kubrick · · Score: 1

      Right now the people that still use Netscape 4 should be hung upside down by their little toes, wipped with a chainsaw and burned with acid dripping on their genitals.

      It sounds like you have had to develop websites that actually worked properly on Netscape 4 as well as later browsers. Having shared that experience, I feel your pain.

      --
      deus does not exist but if he does
  81. Other industries do rewrites by fk319 · · Score: 1

    The problem with software is that it does not change over time. The engineering comunity already knows that "rewrites" need to happen. Every year there is a new car line, a new fridge line and even a new game box line.
    The software industry needs to do the same. The trick is how to pay for it. If you dont change your product and somebody else does and makes it better, then you loose. If you do make changes and nobody else likes it, you loose. Look at the car incustry, the same happens.
    This is what business is all about.

  82. rewrites are always a good idea. by Lumpy · · Score: 2, Interesting

    I wrote 3 years ago a web-app based on perl that is currently the heart of one of the tasks my company does. I am in the process of completely rewriting it in php and using no code or concepts from the first iteration in the new release.

    Why? I have better way's of doing things now, I need to be scalable to handle a worldwide company instead of simply a regional tool, and to increase speed, useability and stability.

    a rewrite is the only way to achieve these things. anyone who has been with a project for an extended period of time and had to expand/modify it beyond it's origional capabilities knows this.

    --
    Do not look at laser with remaining good eye.
  83. Firebird by sofakingl · · Score: 2, Insightful

    Don't like Mozilla? Use Mozilla Firebird. Honestly, I can't think of any browser I've used that is better than Firebird (especially with the addition of extensions). Firebird should be enough proof to this guy that Mozilla was a step in the right direction.

    1. Re:Firebird by adrianbaugh · · Score: 1

      Amen, brother. I never use anything else these days. For me its killer features are its popup blocking and the "Adblock" extension. Surfing is so much more pleasant these days!

      --
      "'I pass the test,' she said. 'I will diminish, and go into the West, and remain Galadriel.'"
      - JRR Tolkien.
    2. Re:Firebird by mccrew · · Score: 1
      Honestly, I can't think of any browser I've used that is better than Firebird

      That's because you have never experienced the simple greatness that is Galeon. For years now Galeon has been a quick, reliable, and incredibly useful browser. Even with all the effort on other browsers, such as the Johnny-come-lately efforts such as Phoenix and Firebird, none yet come close to the usability of Galeon.

      Galeon has a very high level of fit-and-finish: buttons in convenient spots, easy to navigate, and a very comfortable feeling when using it. And I'll give three specific examples of really small details that make all the diffence:

      1. Thought put into tabbed browsing. Like the others, or more accurately, before most of the others, Galeon has tabs, and the little X to close a tab is conveniently located right on the tab itself. No other browser does this, but it improves the usability immensely. It is mousing over to the X at the far right of the screen every time to close tabs that has me shutting down Mozilla and friends and running back to Galeon.

      2. Thought put into blocking ads. How many times in other Mozilla-derived browsers do you want to block ads from one server or another? If you're like me, its several times a day. In Galeon, when you right-click on an image, one of the options is to "Block images from <Server Name Here>". In all other Mozilla-derived browsers you first have to right click and click "Properties" so that you can learn the server name - is it DoubleClick (yes, definitely block) or the same server that all the other images are coming from (no, definitely don't block)? Then you can go back and right click in the images and say "Block all images from this server."

      3. Blocking pop-ups. OK, lots of browsers have this now, but Galeon was one of the first.

      Try Galeon. In my opinion, version 1.2.13, the "stable" version is much better than the latest 1.3.X. I suppose that would be the small part of this post that is relevent to the "rewrites are bad" topic :).

      So in summary, if you are looking for a fast browser that is just a browser, very easy to use, use Galeon. Or wait a long time for Firebird and the others to rewrite until they become Galeon.

      --
      Hey, Windows users, there is no such thing as "forward" slash, there is only slash and backslash.
    3. Re:Firebird by kubrick · · Score: 1

      Galeon has tabs, and the little X to close a tab is conveniently located right on the tab itself. No other browser does this

      The Tabbrowser Extensions extension provides this for Mozilla and Mozilla Firebird.

      --
      deus does not exist but if he does
  84. Changing requirements... by (H)elix1 · · Score: 1

    Maybe I just get stuck with ugly projects, but my take is requirements change. Assumptions that were true when things started usually are not the case a few years later. Maintaining that code usually means that you end up with legacy kruft that you would not add if you were rewriting today. For me, when the legacy baggage is too painful its time to rewrite.

    Sometimes old means stable, sometimes not... The trick is to know when it is time for a clean bowl and not get entangled by the 'not created here' syndrome when making that decision.

  85. Bug Fixes by Cpl+Laque · · Score: 1

    IANAP(I Am Not A Programmer)
    IAAET(I Am An Electronics Tech)
    Generally speaking from a non programmer perspective, My company has recently released a new line of instruments using all "new" surface mount PCBs. All of our older lines were pass through.(Pretty easy to repair not more than 50 pins tops) All the bugs and defects were pretty easy to rework on these old boards now with the new and improved surface mount I am starting to see alot of the same problems that were fixed in the old PCBs but not many. As a whole the new instruments are much better faster with a better communication protocol(tcp/ip) versus our old proprietary interface that no one knows anything about becuase it was designed 20 years ago by a guy who doesn't work here anymore but I digress...

    My point is that every company/project has to decide if going to the new version(or rewrite) adds enough signicant improvements or performace increases to out weigh the negatives of retracing bug fixes and reworks.

    Of course good documentation of code or schematics' updates and reworks could minimize the amount of previously fixed problems.

  86. Joel Redux by Kook9 · · Score: 1

    This topic has been covered, with much better writing, by Joel Spolsky:

    Things You Should Never Do, Part I

    Rub a dub dub

  87. Quoting the guy : by xutopia · · Score: 1
    "You might read all this and think what an asshole I am for suggesting that older, crappier, buggier, dirtier, messier, more complex software might be better than newer, cleaner, faster rewrites."

    Yup. How'd you guess?

  88. Is this a troll article? by Just+Some+Guy · · Score: 1
    First, IPv6 is 128-bit, not 64-bit. TCP/IP doesn't work "good enough"; it doesn't scale well, CIDR was an afterthought, and the necessity of NAT is just plain wrong.

    Second, of course Netscape 4 runs faster on your old machine than does Mozilla (even though you really mean Firebird, since Mozilla was always meant as a testbed, and Firebird was meant to actually be a stand-alone browser like old versions of Netscape). Most software released 6 years ago will be smaller and less featureful than its modern equivalents, and Mozilla does a lot of stuff that Netscape couldn't dream of.

    Third, HTML vs XHTML+CSS+etc. You are not a web designer. Even if someone's paying you to do it, you simply can't hold that opinion and be anything more than a Dreamweaverist or Frontpager. Why? Because noone in their right mind thinks the old, kludge-ridden, variably-parseable, non-standard markup language that is HTML before HTML4.01/STRICT is better in any way than XHTML. Which is easier: changing the global font by editing each and every <font> tag in your entire website or editing a single CSS file? Repeat for colors, layout, link styles, etc. There's no way I'd ever go back to doing all that stuff by hand.

    Sometimes rewrites are wasteful (see also second-system effect). Your examples, though, are awful. You listed several things that are not good enough, and that needed to be rewritten.

    --
    Dewey, what part of this looks like authorities should be involved?
  89. Those who don't learn from the mistakes by Wansu · · Score: 1


    Those who don't learn from the mistakes of the past are condemned to repeat them.

    --
    Wansu, th' chinese sailor
  90. Thank You Microsoft by Anonymous Coward · · Score: 0

    Thanks MS for bringing the PC to the masses.

    I am firmly aware that if it wasn't for MS, then I would not be using a computer today, and I would be using typewriters... more over, I probably wouldn't have my job because Bill Gates. Thank you for inventing the GUI operating system and the PC.

  91. weak article - sorry :/ by nv5 · · Score: 1


    However, I think IP V6, and XHTML, CSS etc, are entirely different beasts. They are "standards" not "code bases". Quite different in nature, ragardless of which side of the individual case one stands on.

    Calling WinXP and 2000 re-writes seems just blatantly wrong. Both of those are basically WinNT - some of the multimedia stuff came from Win98/ME - calling those a re-write is really over the top.

    No new insight, factual errors, and unclean separation of issues. Sorry, but I can't recommend this article as worthwhile reading.

    p.s. How can anyone from the outside possibly know, if Apache needed a rewrite or not? I will trust the decision of the developers, rather than one from the outside.

  92. aha-time by ]ix[ · · Score: 2, Interesting

    When i coach CS students i sometimes say to them:

    There comes a time in every software development project where the best thing to do is to delete all code and start again, perhaps you are there now?

    But that is usualy when a student has started coding without knowing a squat about how to solve the assignment and realized after a couple of hundred lines of code.

    --
    This is my sig, show me yours
  93. The Mozilla Rewrite by christooley · · Score: 1

    Ok, so I can see where there might be useful complaints about some things, but the Netscape/Mozilla rewrite was definitely not one of them. Netscape was dumping their browser development, they decided to open source it, and what they were allowed to open (after all the licensed stuff was removed) was unusable. The reason that there was a rewrite was not just because they thought it could be done better, it was because the people that maintained the Netscape code weren't all working on the Mozilla codebase and the new people couldn't read the Netscape codebase. It was a horrid spaghetti mess.

    As for the rewrite of Perl or Apache, those are the things that need to be done, to move on with our life. For instance Windows NT was a rewrite from DOS/Windows. Was that a bad idea? Was Windows ME really "good enough"? Give me a break.

  94. Refactoring + Unit Testing by ggambett · · Score: 2, Interesting

    Ad-hoc fixes to particular problems lead to code bloat. Excessive code bloat leads to a desire to rewrite.

    A full rewrite may have a cleaner architecture, but often, those fixes for particular, tiny problems are lost in the rewrite ("what is this two-line if supposed to do?").

    The solution? Redesign, but get to the new architecture from the old architecture by refactoring, one small step at a time. To do it quickly and with confidence, do unit tests. Lots of unit tests. Ideally, those tiny problems that prompted the fixes should have unit tests specifically built to trigger them.

    1. Re:Refactoring + Unit Testing by Baby+Duck · · Score: 1

      For rewrites, Unit Integration Tests are doubly important. These tests the results of a process after going across a flow of components. They make sure the end expectations are being met by the current software.

      Whenever a bug is found and fixed, the unit integration tests have to be changed too, so they accurately show what the end users will be expecting in the post-bugfix world.

      As long as the unit integration tests are continuously used, ANY new or modified code cannot possible repropagate that bug -- cuz you would know immediately.

      Now you can rewrite the code from scratch several times a day if you like. It doesn't matter as long as all the unit integration tests still pass

      New bugs only occur when the unit integration tests aren't broad enough -- did you forget to write a test that test a new feature? Or a nuance of a particular feature? Did you test with enough iterations? Enough variance in testing environments? With multiple processors? Over heavy loads or network traffic and/or simultaneous users?

      --

      "Love heals scars love left." -- Henry Rollins

  95. Sometimes complete rewrites are the only solution by AArmadillo · · Score: 1

    There was a study done many years ago about bugs in software. I can't remember who did it, but he discovered that after a certain point it is impossible to decrease the number of total bugs in a given piece of software -- everytime a patch fixed one batch of bugs, another batch was introduced. He then postulated that the only way to create bug-free software was to never let bugs in -- aka clean-room programming. Unfortunately, most developers who rewrite software from scratch don't rewrite it using clean-room practices, and end up with a new codebase that is just as buggy as the old one.

  96. Re:speaking of IPv6 vs IPv4 by mrplastik · · Score: 1

    It's not a matter of "taking off", as it already has in most respects. Sure, your average Joe doesn't an IPv6 connection... yet.

    bgp02# sh ipv bgp sum
    BGP router identifier x.x.x.x, local AS number xxxxx
    385 BGP AS-PATH entries

    If you'd look at the IPv6 routing table, you'd see just how many networks are being advertised already. IPv6 won't become widely used until NSP's and ISP's begin selling native links to residential users(target: 2005-2006). Which at this point in time, they have no real reason to do so. If you'd notice, most NSP's are peering up native IPv6 connections, or have some type of native transit. Most people don't purchase transit from them, because there's practically no residential end-users with native connections, thus they'd pay money, yet never use the link. (I personally beleive they should be giving transit away to current customers, in order to try and push IPv6, since in all honesty if you're paying thousands a month for ipv4 transit, why not give ipv6 transit away for free until it's a medium that actually generates traffic!)

    We still haven't quite exhausted IPv4 address space, but we will, which was the major reason for IPv6. 128 Bit address space > 32 Bit address space.

    -mpf

  97. Philosophy? by Anonymous Coward · · Score: 0

    I'll probably get modded down for this, but the discussion seems less like a "philosophical look" and more like somebody pointing out what they don't like about various products.

  98. linux harmfull! by ajrs · · Score: 1

    all of the attention directed at linux has diverted much needed atention from minux. New patches for minux must be submitted in B, to avoid extra compiler maintenance.

  99. As always... by Dracolytch · · Score: 1

    You have to make an informed decision based on the sitution. Here at work, I inherited an old system that was designed in Excel, implemented in Access, coded in PHP by someone who didn't speak English, and then maintained by the biggest moron I can think of. More importantly, the requirements of the company had dramatically changed, and they needed a more stable, consistant solution to play with the "big boys".

    In our case, we had to rework the system. It really needed to be done. Yes, we introduced new bugs when we did it. However, the improved design, performance, and usability of the tool have turned it into something users dreaded starting up, to something they'll happily use on a daily basis.

    Before you start on any major new software endeavour, you have to plan accordingly. Count all your options (ego be damned), and the benefits of each. You can't just rewrite something cuz you get a wild hair up your ass, or because it's harder to maintain someone elses' code. Once you can provide a list of legitimate, well thought-out plans to rewrite, then you should seriously consider it.

    ~D

    --
    This sig has been enciphered with a one-time pad. It could say almost anything.
  100. IPv6 by thedanyes · · Score: 0, Redundant

    ermm IPv6 is 128 bits rather than the 64 the article incorrectly states.

  101. Rewrite of the article by seanmeister · · Score: 5, Funny

    The Problem: Rewrite Mania
    Waaaaaaa!!

    Case 1: IPv4 vs IPv6
    Waaaaaaa!

    Case 2: Apache 1.x vs Apache 2.x
    Waaaaaaaaaa!

    Case 3: Perl 5.x vs Perl 6
    Waaaaaaaaa! Waaaaaaaaaaa!

    Case 4: Embperl 1.x vs Embperl 2
    Waaaaa!

    Case 5: Netscape 4.x vs Mozilla
    Waaaaaaaaa!

    Case 6: HTML 4 vs XHTML + CSS + XML + XSL + XQuery + XPath + XLink + ...
    XML is hard! My HTML for Dummies book weighs too much! Waaaaaaa!

    Case 7: Windows 2000 vs Windows XP vs Server 2003
    Waaaaaaaa!

    Conclusion: In Defense of "good enough" and simplicity
    Waaaaa waaaaaaaaa!

    1. Re:Rewrite of the article by e-Motion · · Score: 2, Interesting

      The Problem: Rewrite Mania
      Waaaaaaa!!
      ... etc



      Excellent rewrite. I found this post to be much clearer and more concise than the original article, while still maintaining the same message. I'm now convinced that rewrites can be A Good Thing.

  102. Harmful by SEWilco · · Score: 2, Funny

    "Considered Harmful" is Considered Harmful.

    1. Re:Harmful by corian · · Score: 1

      it was a witty refrence the last time it was used, but doing the exact thing again in two weeks' time does make it feel a bit trite and unoriginal, doesn't it?

  103. Re:speaking of IPv6 vs IPv4 by AndreyF · · Score: 1

    There are 16.7 million addresses per square metre of the earth's surface, including the oceans. This is overkill.

    That's untill nanotech comes up with microscopic airborne routers/servers...

  104. How did this troll get to main page? by SharpFang · · Score: 1

    Examples include IPv4 vs IPv6, Apache, Perl, Embperl, Netscape/Mozilla, HTML and Windows.

    When? Where? How? From the above I know Mozilla isn't rewritten, Windows get a deep overhaul but are in no way rewritten, HTML is a standard, not a program so can't be rewritten (just got extended to XML) - I don't know about the rest, but this is definitely a troll, and not very good to that!

    --
    45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
    1. Re:How did this troll get to main page? by NeuroManson · · Score: 2, Informative

      I disagree.

      Case in point, Windows 2000, AKA NT 5. When in its original development, it was being built on Windows NT 4.0 technology. When they realized that this "upgrade" added more problems than it solved, and subsequently was unable to keep up with newly emerging technologies and standards, they decided to scrap it and start from scratch.

      Similarly, this is why Windows XP is 5.11.2600 (if I recall correctly), because it was built on NT 5.

      As opposed to Win 9x which was just a modded kernel and added dll clutter.

      --
      Just because you can mod me down, doesn't mean you're right. Shoes for industry!
    2. Re:How did this troll get to main page? by Anonymous Coward · · Score: 0

      They didn't scrap and start from scratch between NT4 and NT5. The systems are very much alike.

      That doesn't mean they didn't add an assload of features - such as kerberos-based security, Active Directory, a kernel that puts device drivers in a different ring for performance reasons, better GDI+ and networking.

      Lots changed, but they didn't start from scratch. Active Directory was a huge feature, they couldn't have done Windows 2000 from scratch in the timeframe they had.

  105. An important missed point by rgmoore · · Score: 2, Insightful

    One point that the author seems to miss is that there are better and worse ways of doing a rewrite. Several of the examples he mentions (notably Apache 1 vs 2 and Perl 5 vs 6) are being handled very well. Development on the old versions is continuing while the new versions are being improved essentially in the background. That means that nobody is forced to upgrade until the new version actually provides them with enough tangible benefits that the switch is justified.

    Perl is an especially good example because the new version is actually separating the language specification (Perl6) from the Virtual Machine (Parrot). Parrot will be flexible enough to run both the old and new language specifications, so even people who don't want to rewrite their scripts will benefit from the performance enhancements. Combined with continued development of the existing codebase, this makes Perl very future safe, all while offering the potential benefits of a complete code rewrite.

    --

    There's no point in questioning authority if you aren't going to listen to the answers.

  106. Rewritten version of article by Anonymous Coward · · Score: 1, Funny

    Here is my rewritten version of this article:

    "Doh! I can't believe I just embarrassed myself in front of 1,000,000 geeks. I'll just go back in my hold now."

    There, much better and it removes all the problems like Neil saying that Netscape 4.x is a good browser.

  107. Missing the big picture by z00z · · Score: 1
    I'm sorry, but the author of this article is missing the forest for the trees. Without knowing his background, I would tend to think that he doesn't have too much experience in writing large pieces of software and maintaining them for a long period of time.

    As a piece of software gets more and more useful, more people start to use it. And hence, more bug fixes and suggestions start to trickle in. Initially, those could be easy to fix, without any side effects, but at some point fixing one bug can introduce a myriad of other problems. The larger the code base is, and the longer the code has been in "production", the harder this becomes. Then, it becomes apparent to the coders that had they chosen a different design strategy, things could be easily fixed. When enough of those revelations happen, and when it becomes extremely frustrating to follow the numerous bugs resulting from a small fix somewhere else, the time becomes ripe for a re-write. And, if the re-write is done properly, then everything will fall nicely into place. A case in point is Perl5, which was a complete re-write from scratch, but kept backward compatibility with Perl4, and greatly enhanced upon it.

    Also, the argument of "good enough" is a very weak one. I guess whether a tool is "good enough" depends on your intended application. Horses were "good enough" for most people to travel around with, before automobiles. Pen and paper were "good enough" for most people to calculate with, before computers. And the list never ends. But somebody, somewhere, always wants/needs more.

    If humans had been content with "good enough", then we'd still be in the dark ages.

  108. Re:Here's a rewrite, so to speak by maxdamage · · Score: 0

    Why hasnt this dude been trolled yet?

  109. Generosity. Progress. Grow up, Neil. by frostman · · Score: 1

    Wow, that is one awful article.

    The whole reason we have such great things as Perl is because some very smart people had an itch or two to scratch, and let us all have the results of their great work for free. That's called generosity.

    If some of these very same people are now excited about other approaches to the problem, who are you to whine about them "breaking" things? Especially when the things you like and consider "good enough" are still available, for FREE, for you to use for the rest of your life?

    When these very smart people go back to the drawing board and make something new, it usually results in something called progress.

    "Ok, so Perl 5 will still be supported, but was it really so necessary to do the total rewrite and break the old code?"

    Sorry, but until you are paying all these people for their time, it's really not yours to ask whether their projects are "necessary." If you don't feel like writing a new mysearchbot for Perl6, that's your business.

    As for the Microsoft example, don't you think it's a little naive to consider the business model of a huge software company and the motivations of open-source developers in the same breath?

    "When you rewrite you are abandoning history and condemning yourself to relive it."

    Sweet. I wish you'd put that in a <blink> tag.

    --

    This Like That - fun with words!

  110. Author ignores some important points by crush · · Score: 2, Interesting
    • Case 1: IPv4 vs IPv6 - IPv4 with NAT presents all sorts of complications and problems when trying to implement IPsec. Not least are the problems of NAT traversal which have only partial solutions available in the form of the NAT-T patches for linux-2.4 and are integrated into linux-2.6 and which can't do AH. Even if this is sorted out then there are still problems with MTU sizes leading to fragmentation as the result of protocol headers being layered within each other. IPv6 avoids these problems.
    • Case 3: Perl 5.x vs Perl 6 - Perl6 development is tied to the fact that the interpreter was hard to maintain due to the structure of Perl5. So, in order to maintain the interpreter and continue to make incremental developments (as the author wishes) it's necessary to clean house. There is also the desire to keep developers (people that can make improvements) involved by allowing interesting new ideas to be incorporated (such as Parrot: a multi-language interpreter)
    • Case 5: Netscape 4.x vs Mozilla - Well, I run mozilla on a 466MHz Celeron with 196Mb RAM and I don't see the speed difference that the author talks about.
    • Case 6: HTML 4 vs XHTML + CSS + XML - There's no question that CSS and XHTML make webpage scripting easier and cleaner. Thank god for these developments. The author makes no substantive argument here
  111. It's been my experience... by Luveno · · Score: 1

    ... that when an app is maintained over time (enhancements, bug fixes, tweaks, etc), the maintenance programmer often does their thing will the minimal amount of effort required. This is because the maintenance programmer (a) doesn't understand the program as a whole (b) is under a time crunch (c) wants to avoid changing as little as possible to avoid introducing new bugs. Often the maintenance programmers work is hack-ish in nature, thus eventually leading to a situation where a change is requested where a rewrite is the better approach.

  112. fire! fire! by happyfrogcow · · Score: 1

    "With the advent of NAT and the use of non-routable IP addresses to handle LANs, the need for every device to have a routable address becomes lessened."

    Oh boy, here we go again.

    "Case 5: Netscape 4.x vs Mozilla
    I have a 450 MHz AMD K6-II workstation with 512 MB RAM..."

    I call B.S. I ran Mozilla on a Pentium 350MHz with 128MB RAM without a problem. Mind you, I was running Linux+GNOME. The article doesn't specify what platform the author was using.

    "Case 6: HTML 4 vs XHTML + CSS + XML + XSL + XQuery + XPath + XLink + ... why they didn't add more types to the INPUT form tags to express different types - for example, a DATE attribute, or INTEGER, DOUBLE, or whatever ... This would get rid of so much of the headache involved with parsing out this stuff on the server side."

    So you want to simplify HTML by adding a type system? Baahahaha. Ok, sorry. That laugh wasn't entirely called for. However, no one is saying that you have to use or know about XQuery, Xpath, XML, etc. Use what gets your job done. As far as CSS in HTML, it's not a big deal. You don't really have to even have anything special. so you learn a few style things like <span style="color: #ffffff; font-weight: bold;">it's not a big deal.

    "But the direction we're going in, the HTML books have just become thicker and thicker over the last few years. And still, all most people really want to do is browse the web..."

    If all you want to do is browse the web, what are you doing with an HTML book? If you want to write a 1995 web page, you can still do it using only <p>,</p>,<br>,<a> and <img> tags if you want.

    "Case 7: Windows 2000 vs Windows XP vs Server 2003"

    All the other arguments might go somewhere, but arguing about this to MS will do nothing. They have a bottom line to maintain. Releasing new versions, claiming a rewrite will improve things is neccesary for them to make money.

  113. Silly article... by kson34 · · Score: 1

    Most of the points that the author makes are irrelevant, wrong or just plain silly.

    1) IPV4 vs IPV6 - Well, eventually we will run out of IP addresses (yes, I know people have been yelling the sky is falling for years, but eventually it will happen) and all of the new routers will support IPV6 so a natural progression will occur. Is IPV6 harming me in any way? No, and am I glad that slowly IP Stacks are being written for it, and one day I will wake up and IPV6 will be a reality.

    2) Apache 1.x really didn't need any more work, and yes, I don't use 2.x anywhere yet (mostly because PHP doesn't work seamlessly on it yet), but it is MUCH better for windows and eventually I know that I will switch to it. As long as people still maintain security patches and the like on the old version, kudus for the much nicer architecture on the old system.

    3) Perl 5 vs Perl 6. Well I guess we will see how good the backwards compatibility is when it gets released, once again silly to argue against something that hasn't even been released yet.

    4) Don't use emperl, so I can't comment on this.

    5) Netscape 4 vs Mozilla. Netscape 4 sucked. It was a bane to all web developers that had to maintain pages that worked with it. Half-assed CSS, a terrible dom, nasty hacks to make DHTML pages half work, and it was hardly light weight. Mozilla Firebird works just fine on my old PII-400, much better than Netscape 4.6 does so the argument that it is poorly written in specious. The CSS/DOM support for it is fantastic, it is faster than IE on windows, plus has features like pop-up blocking and tabs that you just can't get for Netscape 4.x.

    6) Obviously the author hasn't done any real web development, or creates nasty web pages full of font tags, etc. CSS was a great development, and XML and its related technologies (XSL, XPath, XQuery, etc) certainly have their place.

    7) Windows 9x and ME are based on windows ontop of DOS technology, Windows NT/200x/XP are based on the New Technology and are complete rewrites. XP is not a rewrite of 2000, it is 2000 with a different Shell. 2003 is 2000 with a bunch of new features added as well as a completely new security paradigm (disabled everything and force the use to enabled features one by one rather than the old Microsoft paradigm of enabling everything and forcing users to shut down services as their security holes become apparent.). Re-writing windows 9x was one of the only good things that Microsoft has ever done. The old dos/windows kernal was about as stable as a two legged table with an elephant perched atop it.

    In short, sometimes things shouldn't be completely re-written to save time and keep things compatable, but most of the time after 5-15 years of cruft being added to it, it is good to take a fresh clean start and get a well designed architecture in place that you can build upon. Examples of this include

    1) PHP - PHP2, PHP3, and PHP4 where all complete rewrites of the lexical engine (they kept the functions, but the parser was completely re-written and everytime it has only improved things). PHP5 the jury is still out on (I haven't tried running our legacy code on it), and it is more of an evolution than a re-write.

    2) Windows 9x - 2000 - Windows 2000 is a real, stable operating system rather than a cobbled together file manager/shell on top of a 16 bit joke of an operating system.

    3) OSX - OSX is much more stable than its predecessors, and actually supports modern OS features like pre-emptive multitasking.

    4) Mozilla - It took far too long (and basically killed the Netscape brand) but the wait was worth it. Much better browser than IE, and the old Netscape.

    There are more examples, but they don't quickly come to mind.

  114. HTML vs. XHTML? by marsu_k · · Score: 1

    I really don't see the authors point about not having a font tag anymore - HTML wasn't intended to describe the look of the page in the first place. Besides, by using CSS significant bandwidth savings can be achieved, not to mention the ability to change the look of several pages by changing a single file.

  115. I stopped reading... by Phil+John · · Score: 1

    ...when he claimed that IPv6 addresses are 64-bits.

    Also, he mentions Apache. Well, version 1.x forks when a new process is needed, version 2.x is multithreaded, therefore reducing the context switching load somewhat (switching threads as opposed to switching processes).

    --
    I am NaN
  116. ipv6 has 64bits? by Anonymous Coward · · Score: 0

    That's news to me. I thought it had 128.

    Perhaps proof reading and fact finding should be among your "good enough" peeves?

  117. Mac OSX by fiannaFailMan · · Score: 1
    I think the scrapping of the old style Mac OS 9 and replacement with the Unix-style OS X is perhaps the best example of a case where re-writing was a better option than incremental improvements.

    It could also be argued that the 'enhancement' to Windoze 95 that produced Windoze 98 was a case where an incremental update introduced bugs all of its own.

    --
    Drill baby drill - on Mars
    1. Re:Mac OSX by Jahf · · Score: 1

      Although in that case alot of the core OS was not a rewrite but was an adoption of another OS. The OP makes a point about network stack mistakes for instance, but OSX doesn't have to worry about that because it adopted one of the most robust stacks out there from BSD.

      I'm not saying you're wrong about OSX being the "right" thing to do, but rather that the right thing that Apple did was to -not- attempt everything from the ground up.

      That's one of the nice things about rewriting in today's world ... you can use an open source solidly tested base and only recreate those things (like Darwin/Cocoa/etc) that you -need- without adding bugs everywhere else. Rewriting today is -far- safer than it was 5-10 years ago as long as you make intelligent selections to start from.

      And, not a counter point to you but rather to the OP ... IPv4 -> IPv6 is not a fair case for "rewriting" since you are talking standards and not code. MUCH of the IPv6 -code- is going to be adopted IPv4 code. The OP seems to be against re-architecting just as much as re-writing. Sometimes you -have- to start from scratch if you're going to be able to continue future development.

      --
      It is more productive to voice thoughtful opinions (reply) than to judge (moderate) others.
  118. Waitaminnute! by American+AC+in+Paris · · Score: 1
    ...what if you have a program that makes extensive use of GOTO?

    Harmful to re-write...harmful to use GOTO...urk...can't...move...

    --

    Obliteracy: Words with explosions

  119. Bad Examples? by shadowpuppy · · Score: 1

    While I generally agree that reinventing the wheel is bad. Most of these seem to be unexamples.

    IPv4 vs IPv6 - This is one of those things that has to change sometime. The sooner something like this gets fixed the easier it is for everyone.

    Perl 5 vs 6. - As I understand it Parrot will run Perl5 code so who cares and there is enough developer mass behind Perl that the transition should be smooth.

    Netscape 4 vs Mozilla - I'm runnig Firebird on a 400 Mhz Celeron with only 96Mb of memory and the thought of going back to Netscape 4 is horrible. Apart from speed I can't think of a sinlge thing that isn't better. And speed is relative since, browser crashes mean I have to refind the page I was looking at or giveup and use somehting else to view that page. In fact I'd say this is a strong arguement in favor of rewrites.

    HTML vs a plethora of better standards - Why would you use netscape 4? It's broken. The problem with HTML is people and programs actually destroy information with it. We loose track of what belongs to what section of a document. Whats a title or heading and whats just bold.

    Windows 2k vs 2003 server - From what I've gather they actually are improving. Though in a confused Microsoft manor. I doubt most people want to return to DOS of even Windows 98.

  120. Give and take by j-turkey · · Score: 2, Interesting

    I'm not sure that the author of the story really discusses the give and take of patching an old codebase, vs a complete rewrite. Instead, he focuses on a negative that isn't really there.

    As soon as I read the headline, the first apps that sprang to mind were Sendmail, and WuFTPD. Both have been historically full of holes, and a complete mess. I haven't really looked at Sendmail code, but having to configure each option with regular expressions, while powerful, is just lame (IMO). The WuFTPD code is a mess. It's been passed on and passed on, and patched and patched. It eventually became a total whore that nobody really wanted to touch on any level.

    Now, both of these (AFAIK) were not rewritten from scratch, and suitable replacements have been produced all over the place. However, would it have been so bad to rewrite those from scratch, while still maintaining the older versions? How would it be any different from, say, the Linux kernel. I run 2.4.x on my production machines. 2.6 is out, but I'm not going to run it until it's proven itself elsewhere (and is integrated into a mainstream distribution). 2.4 will be maintained for a long, long time -- and it's not eve na complete rewrite (AFAIK). Usually code rewrites are adopted by the public...not right away, but eventually.

    Finally, his gripe about Mozilla/Netscape are interresting, but not really warranted (and he does acknowledge this). The applications became more bloated as system resources became more plentiful. Software tends to do this -- it has to do with greater layers of abstraction as hardware gets better. But furthermore, it's because Mozilla had to be able to "compete" with the latest greatest from Microsoft...which MSFT will always be updating as new standards are added.

    The point is, it doesn't really matter. It doesn't do a disservice one way or the other, and since much of the software we're talking about is Free Software, it matters even less, since the code it out there -- if there are enough people using the older versions, there will always be someone to maintain it.

    --

    -Turkey

  121. Other examples.. by Karamchand · · Score: 1

    ..might include the "rewrite" of OpenBSD's packet filter. While the reason for this rewrite was motivated "politically" (license restriction of Darren Reed's ipf) it was a rewrite - and a good one!

  122. Netscape 4.* Nostalgia ?!? by ortcutt · · Score: 1
    I wish that Mozilla development had been finised sooner, but there's no reason for nostagia for Netscape 4.* . Simple fact is that it was not standards-compliant, and from what I am told, it would've been a nightmare to remove all of the well-tuned bits of code that made the behavior non-standard. That's when it makes sense to start from scratch, look at the standards, and implement them.

    The authors complaints about speed are unwarranted and conflict with my experience. Mozilla (the suite) is reasonably fast although I have switched to using the individual apps, Firebird and Thunderbird. Both are plenty fast and don't -- in my experience -- have any problems that make them unusable.

  123. MS Win will be a complete re-write by FerretFrottage · · Score: 1

    Makes you wonder that if after appyling all the patches needed to make Windows operate properly and securely, will it be a complete re-write of the original code?

    --
    "Look Lois, the two symbols of the Republican Party: an elephant, and a fat white guy who is threatened by change."
    1. Re:MS Win will be a complete re-write by sm0yby · · Score: 1

      Don't you think that is something that could be called a Win-Win situation? I can't help but think back on the days when one could create their own WIN.COM file...

      --
      Been modded interesting, insightful and funny. Why does real life have to be so different?
  124. 64 Bits? by Anonymous Coward · · Score: 0

    "Apparently IPv6 will solve all these problems, with a brand new standard that uses 64 bits."

    No my friend, IPv6 uses 128-bit addressing.

  125. What if the first by Tagren · · Score: 1

    version is a matrix of solutions to breakage of a solution?
    Then it would make the continued development slower than h*ll, harder for new to learn. End result would be a WindowISMed version. Pure Horror.
    ---

  126. Is the submitter fucking nuts? Or on crack? by squarooticus · · Score: 2, Insightful

    Exactly when did Netscape ever work well on Linux?

    All I remember is consistent crashing from Netscape Gold through the finally-put-down Netscape 4.x. It was the biggest piece of shit browser ever written precisely because its codebase was old (forked from NCSA Mosaic in 1994, which itself was much older) and non-extensible, yet more and more shit was thrust into it. It had to be rewritten, and all the Gecko-based browsers have been much more feature-complete and reliable for the past 2-3 years than Netscape ever was.

    I use Galeon, and the thing basically never crashes. Back in 1999, I considered myself lucky if a particular version of Netscape 4.x only crashed once every half-hour.

    --
    [ home ]
  127. Maintenance programming can be done well by lildogie · · Score: 2, Interesting

    Maybe times have changed, but when I started my career as a _maintenance_ coder, there were two ways to do it:

    1) The usual way: fix small sections of code in the same style and technique that it was originally written,

    2) rewrite large sections of code that were _truly_ hard to maintain, taking great care to leave something much more maintainable behind. This route requires much more thorough testing than (1).

    I remember another of us "programmers" who said he didn't do maintenance, he was a "development animal." Wrote abysmal code. When he rewrote a major module of our system he tried to make FORTRAN look like ALGOL, using GOTO statements in the righthand margin of the code.

    I bet that module got a rewrite not long after that. Something that was maintainable and written for the language that was being compiled, not the language that didn't even exist on our system.

  128. Re:speaking of IPv6 vs IPv4 by duffbeer703 · · Score: 1

    Why not strictly control the propagation of networks?

    Keep the the number of publicly routable networks down and grow with time as performance improvements all technology to catch up.

    --
    Conformity is the jailer of freedom and enemy of growth. -JFK
  129. Harmful to smaller applications, maybe... by Powercntrl · · Score: 1

    I didn't RTFA but considering the comments I've read so far, it doesn't seem like I've missed much.

    The only cases I've seen rewriting instead of fixing the original are with smaller projects, like Xbox Media Player for example. For all intents and purposes, XBMP is dead. Pretty much all the original authors of XBMP decided to work on Xbox Media Center instead.

    I remember a lot of shareware from back in the day that the same thing happened to... One day the author woke up and hated everything about it and decided to start over completely. Other than complaining about it (which is ill advised since it just pisses off the programmers), there's not much you can really do. To people that don't program, reinventing the wheel looks like a tremendous waste of time. If the programmers of an app you like to use decide it's time for an overhaul, they probably have good reasons for it and if that really bothers you, it's time to look for an alternative or just keep using the old version.

    And hey, the good thing about apps that are open source, if some new programmers pick up the old codebase, it may still have some life left in it yet...

    --

    ---
    DRM is like antifreeze, to the MPAA/RIAA it's sweet, to the consumers it's poison.
  130. Code Rewrite -- Rational Reasons For It by wwvuillemot · · Score: 2, Insightful

    I do not concur with the author's seemingly blanket assumption that a complete re-write of codebase is wasteful. There are times when it is necessary for both practical and philosophical reasons.

    From the practical standpoint, and suggested by other astute readers, often times the initial specs did not sufficiently anticipate future growth. Needless, it is a poor programmer who does not from a programmatic perspective anticipate this and do his/her/its best to provide a sufficiently robust framework that has at least one order of magnitude growth in a primary spec. On top of this, standards change, new ones emerge, "paradigms" shift, needs change and so on -- at times it just makes sense to start from scratch. You are not going to build a business building on top of your house's foundation...it just is not scalable to the new needs.

    Philosophically, I think it is worth tearing down the structures and building anew at times. Too much incremental growth can lead to long term stagnation as the original skills to build the foundation are lost through inactivity. As an aerospace engineer I can see it now where too much information and processes have become institutionalized -- I fear if ever we needed to do it from scratch.

    1. Re:Code Rewrite -- Rational Reasons For It by chromatic · · Score: 2, Insightful
      You are not going to build a business building on top of your house's foundation...it just is not scalable to the new needs.

      That may not be a good analogy. You can't gradually update your house's foundation, while you can gradually improve the foundation of a piece of software.

    2. Re:Code Rewrite -- Rational Reasons For It by pmancini · · Score: 1

      To further expand on this comment I would say also that tools get better, methods get better and believe it or not, programmers get better. Take a look at something complex like the game "Freelancer." That is basically a top to bottom rewrite of "Privateer." In every way it is a better game than Privateer. If it had been built on the code base of privateer it would have been much harder to introduce all of the fantastic changes the world of computing has made in the last decade.

      There is another benefit to rewriting simple tools from scratch - you learn more about why they are important AND when you re-write them you do them in a different context than when they were originally created. This allows you to objectively assess the merits of the critical assumptions that went into the creating of the tool in the first place and make interesting and sometimes radical changes.

    3. Re:Code Rewrite -- Rational Reasons For It by wwvuillemot · · Score: 1

      I have to concur. That was my point; albeit you stated more succinctly than I.

      Rewrites are excellent learning opportunities -- naturally everything does not nor should it be a rewrite. But there are times when starting from scratch gives you two modes to the same problem; let evolution prevail and the one best suited to the environment win. In some senses, code rewrite can an internal form of competition as you strive to "improve" upon old processes and methods. I say "improve" since at times it can a two steps forward three back; but then that is part of the growth/evolution.

    4. Re:Code Rewrite -- Rational Reasons For It by wwvuillemot · · Score: 1

      You can certainly grow your foundation of a house; but only so much. Add a new room either as an adjunct to the framework (add foundation) or grow upwards off existing foundation (add to framework but retain foundation). But I do agree you cannot redig the basement without a complete "re-write".

      It is certainly not a 1-1 analogy, but nonethless appropriate on some first-order approximation. My point being that there is a similar relationship in the two -- an increasing difficult to add as complexity increases. At a certain point your interfaces just become too convulated or simply inappropiately under-valued to handle the new loads.

      Anyway, the analogy itself is not the point (when is it ever?). It is what it eludes to that is important -- changing needs, at times, cannot be addressed by an update to the current system.

    5. Re:Code Rewrite -- Rational Reasons For It by chromatic · · Score: 1

      My problem with the analogy is that the complexity involved in revising software versus revising a house is completely different. There are ways to take a simple program (say, one that's not thread safe) and make it thread-safe while retaining most of the code. You really don't have that option with buildings.

      There's something fundamentally different with software, as it's mostly free of physical constraints.

    6. Re:Code Rewrite -- Rational Reasons For It by wwvuillemot · · Score: 1

      What part of analogy do we not understand? I am not taking about the magnitude of complexity are equivalent, but the relation of complexity to change. I was trying to build an image. If you have a better analogy then certainly post it. *no sarcasm meant*

      And of course they are fundamentally different -- why else would we call it an analogy? Sometimes it it easier to talk about the relation of X to Y as it is analogous to A to B when A != X and B != Y, but X/Y == A/B...anyway.

      This thread has gone tangential! *laughs*

    7. Re:Code Rewrite -- Rational Reasons For It by chromatic · · Score: 1

      I wish I did have a better analogy, but unfortunately, I don't!

      Describing software in terms of physical goods leads to some convoluted thinking, though. Consider donating software licenses to a school. Is that really worth $x million?

      Now consider developing software. Linus started writing a terminal emulator and, a decade later, that project ran on huge mainframes, embedded chips found in consumer machines, and everything in between. Sure, that took a lot of time and, yes, he rewrote a lot of code along the way, but the fact that software isn't physical makes it possible. (If you don't care for the terminal emulator as a starting point, replace it with "a simple Unix workalike for the best x86 technology 1990 had to offer". The example still works.)

      He couldn't have turned a diorama into a multi-level museum that way. That's why I think the analogy is flawed. It seems to focus on the irreducible complexity that comes from a building being a physical entity. I don't think that applies very well to software.

      Maybe I'm being too picky, though. It happens. :)

  131. Windows 2000 vs Windows XP vs Server 2003 by kiva · · Score: 1

    The article claims that these platforms are "100% different codebase". I'd like to see where the author get this information. I have legitimate access to the Windows sources and I can tell you that each new release of Windows simply builds on top of the previous release. You wouldn't want to rewrite this stuff for each new release - for example, the WinXP sources is 5GB of source code alone.

  132. What about Gnome? by Anonymous Coward · · Score: 3, Insightful

    The Gnome desktop environment is a prime example of disasters through re-writes.

    As we all know, Gnome's oringal purpose was to provide a free rival to KDE, which was the first easy to use Desktop Environment for Linux, this was back before Qt was GPL

    Unfortunaltey for Gnome, its problems started as it kept replacing and rewriting core components. For example, it started out with the Enlightenment window manger, then it switched to sawfish, then it switched to the buggy and slow metacity. Metacity has had many problems, and most people want the old sawfish back, but havoc pennington refused to do it and insists that people use it.

    The file manager keeps changing too. First it was GMC, then it was the Slow and buggy Nautilus from the now defunct Eazel corporation, now they are writing a new Windows 95 like file manager for gnome called Spiral Nautilus.

    It also rewrote the graphics layer GTK and broke compatibillity with GTK 1.x. There are many legacy GTK apps still in wide use and they look ugly on newer desktops.
    There is also the many problems with the file dialog, which is now only emerging in GTK 2.4. This is also incompatible with older GTK versions. This means that if you want to use a new program, YOU HAVE to upgrade to Gnome 2.6, and can't keep your leagcy Gnome 2.0,2,4 desktops.

    They keep switching default apps, for example, Galeon was dropped in favour of the buggy and far less featureful Epiphany in 2.0. They also dumped several other applications that were useful.

    To make matters worse, it is going away from the old philosphy of simple text files and are using an XML based registry clone to configure stuff. KDE keeps the text file format underneeth and has had a standardized API for it.

    It also has a lack of true intergration, Micheal de Incanta has PUBLICLY ADMITTED that Bonobo was a faliure. KDE has had this BUILT in from day one using kpart technology, which is now being used in Apples Mac OS X Panther Edition.

    Gnome developers, realising they kan't kompete with KDE technology, has spread various FUD about kde, but the message is getting through. Red Hat has abondaned their Gnome desktops, Fedora developers are working hard to make KDE 3.2 the default desktop for Core 2. Debian, who has traditionally been pro-gnome have announced their full support for KDE and they are working hard to make KDE the defualt desktop for

    KDE on the other hand has kept consistent technology and has internally has changed very little since 2.0. Distros like Lycoris are still using 2.x because it is very stable and mature. KDE 3.2 will be a good example of why maturity, and not wheel inventing is a better idea overall. They have took their technology and have optimized it for usabillity

    Gnome 2.6 will need more than just propoganda about the HIG if it is going to get the attention it needs, but instead it looks like they are reinventing wheels again.

  133. Re:speaking of IPv6 vs IPv4 by Mod+Me+God · · Score: 2, Interesting

    I'm not sure of the relative validity of these points... though I agree with the sentiment.

    1. This is a Cisco problem, a general problem is in the points below:
    2. I didn't know there were "16.7 million addresses per square metre of the earth's surface, including the oceans", interesting. The problem with the present system is the 'chunking' of IP addresses... large groups of IP numbers lay dormant, reserved for academic/government institutions, the portion of private addresses is being squeezed in places. The IPv4 problem is an allocation problem, but allocations are determined by committees, and as soon as disparate and opposed committees get going progress and action stop for years, yes it is annoying beaucracy, but a technical work-around may well be easier than fighting this pettyness.
    3. A few years ago the internet was here and it did its job while processing power of out-of-the-factory internet infrastructure was so much lower than it is today. Volumes are higher now, the dotcom boom of endless financing has gone (maybe?!) but I believe the internet with IPv6 and its higher volumes could be cheaper now than it was (I am happy to have my mind changed with hard data but not supposition and not opinion based on loose facts and assumed weightings). Lecacy equipment and software has to be replaced sometime, all that COBOL was re-written pre-2K pretty easily.
    4. See 3.

    There may be "16.7 million addresses per square metre of the earth's surface" but if this can provide a solution for the next few decades, and is easier to overcome than the present beaucracy in IPv4 allocation (which is huge and incredibly difficult to overcome IMHO) then it is worth it.

    --
    --

    FreeNET user? Comfortable with the adverse selection?
  134. It just depends... by UrGeek · · Score: 1

    ...if you have a product need the end of it's life and the function is smooth, sure, don't mess with it. But if the original programmers are gone, it is poorly documented and you have much plans for it, a rewrite could be worthwhile even with the new bugs just to provide the new team a way to get to know the problem better. Then they will be able to maintain it better and improve, not to mention have a great sense of ownership in it. It just depends.

  135. Re:PARENT IS A COPIED POST by PhxBlue · · Score: 1

    Right. Copied from what, exactly?

    . . .didn't think so.

    --
    !#@%*)anks for hanging up the phone, dear.
  136. No offense by Anonymous Coward · · Score: 0

    but this guy does not know what he's talking about.

    I'd say that a majority of rewrites happen to facilitate progress. (wow, what a concept).

    At some point in time, most software runs into a brick wall, when it comes to extending it.

    I'll give you a very simple example (a better one than any of the examples that he listed):

    Take a browser that was written to display HTML. Then came along JavaScript. Oops, the browser does not use DOM for its internal tree. Of course you could kludge this onto the original browser, and it probably will never work entirely correctly (go ahead and by the Spyglass, now OpenTV, browser source, you'll see what I mean). Or you could rewrite it with this new technology in mind. (yeah Mozilla is not the greatest source tree on the planet, I agree)

    I really do not see the point of this article though. So we should just be patching up Netscape 4 for eternity? Or Windows 98? What was wrong with Windows 3.1? Should we still be using that then?

  137. 10 seconds to open a new window in mozilla by Anonymous Coward · · Score: 0

    The author doth talk complete bollocks.

    I hace 66MHz 486 running linux and mozilla - and it doth take only 6 seconds.

    Seriously, if it is taking him 10 seconds to open a new window with mozilla on a 450 Mhz PC, then the problem does not lie with mozilla.

  138. XML? by Doctor+Faustus · · Score: 1

    Instead of getting rid of useful tags and redesigning HTML as XML

    Um, no. While there are a few sublanguages that deal with display (XSL-FO, XHTML), XML is mainly a data format.

  139. There is no right answer by iamwahoo2 · · Score: 0

    Sometimes rewrites are good and sometimes bad. Often times when developing or expanding on somebody elses development you find that a different model works better.

  140. Rewrites necessary by russotto · · Score: 1

    Case 10: OS X Apple wanted to have a solid, memory-protected, pre-emptive multi-tasking, multi-processor friendly operating system. Their existing code base was a hodgepodge, some of it still in 68000 assembler and running in emulation. It was written for a single processor system with no memory protection, now supporting co-operative multitasking through the extension of a hack. Apple REALLY didn't want to rewrite this, angering developers and taking a lot of their time. So they tried to bring their current code base up to standard. They failed. Several times. Sometimes code really IS too crufty to save, and a rewrite is necessary. Whether Joel Spolsky thinks so or not.

  141. A similar article... by slamb · · Score: 2, Interesting

    Here's a much better article with a similar thesis: Joel on Software - Things You Should Never Do, Part I

    There are parts of it that I've never agreed with:

    "Well," they say, "look at this function. It is two pages long! None of this stuff belongs in there! I don't know what half of these API calls are for."

    [...]

    Back to that two page function. Yes, I know, it's just a simple function to display a window, but it has grown little hairs and stuff on it and nobody knows why. Well, I'll tell you why: those are bug fixes. One of them fixes that bug that Nancy had when she tried to install the thing on a computer that didn't have Internet Explorer. Another one fixes that bug that occurs in low memory conditions. Another one fixes that bug that occurred when the file is on a floppy disk and the user yanks out the disk in the middle. That LoadLibrary call is ugly but it makes the code work on old versions of Windows 95.

    This should never happen! If you have all these bugfixes in your code and no way to know why they were put in, you've screwed up badly. You should have each one documented in:

    • a bug number in the database
    • a log message in your commit history (cross-referenced to the bug database) (which you should be able to pull up easily with "cvs annotate" or similar)
    • if it's particularly weird-looking, a comment in the code

    So the idea that you'd have all these important bugfixes without any way of knowing what they are should be laughable! Given a codebase like that, you probably would be better off throwing it out, because it was clearly developed without any kind of discipline.

    Also, he's embelleshing a lot. If it's just a "a simple routine to display a window", it doesn't need to load a library, require Internet Explorer, etc., and thus can't possibly have bugs related to those things. He makes the situation sound a lot more extreme than it really is.

    But in general, I think he's right. Refactor, not rewrite. That's the same thing the XP people say to do. They also have extension unit tests to make it easier to refactor with the confidence that you haven't screwed anything up. Which can help in situations like this:

    I laughed heartily as I got questions from one of my former employees about FTP code the he was rewriting. It had taken 3 years of tuning to get code that could read the 60 different types of FTP servers, those 5000 lines of code may have looked ugly, but at least they worked.

    Ugh. I bet it would have been a lot less tuning if there were a decent way to test that the change to support #60 hasn't broken any of the previous 59 server types. Or that just a refactoring hasn't broken any.

    I don't think this advice always applies, though. I rewrite one major project from scratch at work: our personnel system. Our database schema was hopelessly denormalized and broken. That's not something you can refactor easily - with a widely-used database schema, it's easy to make one big change than many smaller ones, because a lot of the work is just hunting down all the places that use it. That's easier to do once. So I believe there are situations this advice does not apply, but I also believe they are rare.

    1. Re:A similar article... by Anonymous Coward · · Score: 0

      Well, keep in mind he was talking about Netscape's Version 5 source release. The big mistake there wasn't how ugly the code was, but the fact that Netscape thought they could get free maintenance programming work out of the Open Source community. (who didn't have access to source control logs or the guy who wrote the thing, even if they did have the desire to fix bugs)

      I agree that code that deals with differences in libraris or FTP servers SHOULD be factored in such a way that those differences are outside the core logic. But the REALITY is that bugfixes get applied in crunch time, and in the quickest, least intrusive way possible. When you have deadlines, you aren't "refactoring".

      Finally, any really robust code is sorta ugly because it handles many obscure edge conditions. It's just a fact.

  142. It's called Refactoring by Mandomania · · Score: 1

    And it's the coding craze that's sweeping the nation!

    Google's your friend in this case, as usual. Lots of people have spoken on this subject. Heck, there's even a book or two about it.

    For the uninitiated, Refactoring is the practice of restructuring a code base in a disciplined way (shamefully stolen from refactoring.com). Basically, you change the code's structure (hopefully in a good way) with minimal to no changes in the outward appearance of the software. This way, the code gets better (clearer, easier to maintain, etc.), without introducing new bugs and incompatibilities.

    There are cases where it's just better to throw away your old code, but those are much rarer than people like to believe. It's almost always better to refactor.

    --
    Mando

  143. Hard to write code that doesn't need rewrites by astrashe · · Score: 4, Interesting

    It's hard to write code that is robust enough to not need rewrites. The ability to do that is what separates the really good programmers from amateurs like myself. It's the difference between being a piker (like myself) and an engineer.

    I'm not a great programmer, and don't do it regularly, but when I have written fairly big projects, I find that the need for rewrites came out of poor design choices that I had made.

    I typically start out with something small, that can handle the core functionality expected from the project. Then I try to add features and fix bugs.

    Eventually, the code becomes very difficult to maintain, and ultimately, you get to the point where the ad-hoc architecture simply won't support a new feature.

    To the user, everything looks fine, everything runs reliably, but under the hood, there are real problems.

    My worst experience was with a web app. I started out with script based pages in ASP (not my call), and kept writing new pages to do different things. It got to the point where I had a about three hundred script pages and lots of redundant code.

    When it would become necessary to change the db table structures for another app hitting the same data, I'd have a lot of trouble keeping up, fixing my code quickly in a reliable way.

    The problem was that it just wasn't possible to stand still. I couldn't go to my boss and say, "I need a three month feature freeze, to rewrite this stuff."

    Writing a new version in parallel was hard because maintaining the crummy but functional code was taking more and more time. It was a real problem, and caused me a fair amount of pain, and suffering.

    After digging myself into that hole, I stepped back and tried to figure out how other people did it. I would have been a lot better off building on top of something like struts.

    The lesson I took from this is that it's important to study design patterns, and to use tested frameworks whenever possible. You have to think like an engineer, and not someone who codes by the seat of his pants. I'm not an engineer, so it's not easy for me to do that.

    I'm not saying that the people who run the projects mentioned are in the same boat that I was. As programmers, they're in a different league.

    But they're often working on problems that aren't well understood. Patterns and frameworks are ways to leverage other people's experiences. But if that experience doesn't exist, you have to guess on certain design decisions, and see how it comes out.

    Top notch programmers are obviously going to guess a lot better than someone like me will. But they're still going to make mistakes. When enough of those mistakes pile up, you're going to need to do a rewrite.

    You could make a point that's opposite of the one that the article makes by looking at the java libraries.

    They made choices with their original AWT gui tools that were just wrong. They weren't dumb people -- they just didn't know, the experience necessary to make the right choice simply didn't exist. Once they tried it, they realized it wasn't working, and they came back with Swing.

    Rewrites are always going to be necessary for new sorts of projects, because you can't just sit in your armchair and predict how complex systems will work in the real world. You have to build them and see what happens.

  144. Re:PARENT IS A COPIED POST by Anonymous Coward · · Score: 0

    Copied from a very recent story dipship. Why don't you find it to prove that the post wasn't copied? The post was copied.

  145. Benefits of rewriting by nimrod_me · · Score: 1
    One of the nice benefits of rewriting software (or for that matter - redesigning a system) is the lessons learned.

    The conventional approach to system engineering is to write a long and detailed spec, then implement the system and finally test it (eventually at the customer's site).

    This approach tends to create many unnecessary features and many times important and useful features are missing because they were not anticipated. At this point the product is already late and these features get added as an afterthought (patches...)

    The other way: write a simple prototype with the minimum features deemed necessary. Then continue refining or rewriting implementing all lessons learned and feedback received from users. This way unnecessary features are never implemented or get stripped early on, while useful features are continuously refined.

    It really works.

    Nimrod.

  146. What about OOP? by Anonymous Coward · · Score: 0

    I am not a programmer, but I do work with several. If you correctly use object oriented programming then why would you ever need a complete re-write?

    Our lead programmer here is always bitching at the other programmers for not writing their own classes, and making code reusable.

  147. There's room for middle ground by Waffle+Iron · · Score: 2, Interesting
    When I feel that a program is in need of a structural overhaul, I don't just throw it away. I usually comment out all of the source code, back down to a blank 'main()' function. Then I build it back up piece by piece using a cleaner design. However, instead of writing a lot of new code, I uncomment and tweak the bits of the commented out old program that worked fine. I usually find that huge swaths of the original program needed little or any work to adapt to the new architecture.

    Once all of the old code has been either pasted back in, revised or deleted, I've usually got a program that does everything the old one does and more, but it is smaller, simpler and cleaner.

    Most of the subtle features and knowledge embedded in the old code is not lost by using this approach; it gets pulled back in.

  148. You Whippersnappers with Your XHTML by ortcutt · · Score: 2, Funny
    This is my summary of the content of this article:
    Back in my day, when we got home from a hard day of making hoopskirts, we were happy enough to use our K6-II 450's to read plain old HTML 4.0.1 and maybe serve some web pages with Apache 1.3 like my granpappy used to do. Now the kids these days, they got their Althon64 and use Mozilla to read XHTML and probably use IMAP to a remote mail store. Won't those kids ever learn that the world was perfect in 1995 and that no improvement can be made on it except maybe by continually patching the same tools and standards that we already have.
  149. I h@te HTML 4.0 and Windows 95!!!! by DarkHelmet · · Score: 1
    d00d!!! I hate HTML 4.0. Like everything was right in HTML 1.0. Then they had to rewrite crap so that you could do more with it, and that make it slow. It was kind of........ (wait for it) .... a bummer.

    And...

    d00d!!! Why did they have to do Windows 95? Windows 3.11 was perfectly stable and secure.

    What the hell is this guy thinking? There's usually a reason that people do complete rewrites: because future versions of this software will have features that would be nearly impossible to manage using the old version.

    Continuing to build feature after feature in an old codebase is like building a tower on sand. And for any of you people who want to know what the effect of that is, I suggest you visit Pisa sometime.

    And for those of you not willing to sacrifice security / stability / etc, wait until the new version shakes out. And realize that the world doesn't cater to your 450 MHz AMD K6-II anymore.

    Dipshit.

    --
    /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i
  150. Rewrites by JASegler · · Score: 2, Insightful

    There comes a time in any softwares life that a rewrite IS the correct decision.

    To put it in real world terms...

    If you take a single floor home and start adding floors to it, you won't ever turn it into a skyscraper. At least not one I'd ever want to be near.

    If you want a skyscraper, you bull doze the house, design the skyscraper and build it.

    A lot of early design decisions can really haunt you later. Like the Apache threading example in the article.

    -Jerry

    1. Re:Rewrites by chromatic · · Score: 1

      If you track mud all over your kitchen floor, do you rip it up and put down new tile?

    2. Re:Rewrites by JASegler · · Score: 1

      Nope.

      Would you put an "addition" on a skyscraper to change it from:

      100 stories, 40 ft x 40 ft to

      200 stories, 80 ft x 80 ft?

      Programs are designed to do certain tasks with room for expansion.

      As time goes on, tasks are added.. Eventually, the tasks grow well beyond that expansion factor in the original design and a rewrite often in order.

      A perfect example of that is Sendmail. A sendmail.cf is a scary place to visit. That's why you have so many complete redesign/rewrites (Qmail, Postfix, etc).

      -Jerry

    3. Re:Rewrites by chromatic · · Score: 1

      I'm not talking about rewriting some code, I'm talking about throwing away the whole thing.

      (I've explained elsewhere why I think the building analogy is flawed, so I won't address that here.)

    4. Re:Rewrites by JASegler · · Score: 1

      If you look at actively maintained code over the long term you eventually get to the point where not much of the original code is left.

      When doing development on an existing codebase I always look at two questions:
      Would it be faster to redesign/rewrite?
      Would it be more maintainable to redesign/rewrite?

      If the answer is yes to both, you may have a case for a complete rewrite.

      Your argument about software being fundamentally different from a building is not really accurate.

      If you *wanted* to you could gradually increase a houses foundation.
      You could turn a single family home into a 100 story skyscraper.

      You can jack up the house, put down a new foundation, etc, etc.

      However, it would have been cheaper and quicker to bulldoze and start from scratch. No one in the real world attempts to do it that way since everyone understands what a building is. They understand what what people are proposing is too major of a change and is just not safe.

      With software most of the decision makers don't understand software at all. So they view it in simplistic terms and have no concept of how sweeping the changes they have requested really are.

      But it's true, you can take a code base and add a tremendous amount of features to it. You can fundamentally change the design of it incrementally.

      It would have been cheaper and easier to do a full rewrite though. Unfortunately software doesn't collapse like a building does when people make stupid decisions like that. Instead managers see slipped time lines and horrid programs. Eventually they get cleaned up and run properly.

      Of course over the years, I've learned that Rewrite and Redesign are bad words. Refactor and retrofit are much better words to use right now.

      -Jerry

  151. You missed the whole point by aled · · Score: 1

    What you fail to grasp is that most of us make a living of that :-)

    --

    "I think this line is mostly filler"
  152. Re:"DAMNED" has an N in it by Anonymous Coward · · Score: 0

    No, you spelt damed correctly.

  153. Re:CONGRATULATIONS ON RECEIVING THE "DIPSHIT AWARD by Anonymous Coward · · Score: 0

    Well how's about congratulations to you. For what you ask? For the "Dipshit who can't catch on to a joke award". Good work.

  154. Progress counts for something by smackjer · · Score: 1

    Skipping the other obvious misinformation (WinXP being a rewrite, Netscape 4 being any good, etc), he doesn't see the value of CSS. The FONT tag sucks. Ever try using a different font in a table? Every single TD tag needs it's own FONT specifier. It sucks. What happens when you (or your client) want to change the font? What if your back-end coder and your design guru aren't one and the same?

    And XML does not and was never meant to replace HTML. XML = data. HTML = presentation. Data != presentation. That's the friggin point!

    --

    This is my sig. There are many like it, but this one is mine.
  155. HTML vs ........ by spotteddog · · Score: 1
    a simple markup language could allow us to divorce document presentation from document structure, and concentrate on how information was related rather than how it should be displayed

    Gee, this guy has it backwards. HTML is a markup language that allows you to specify how the document should look: what should be bold, italics, centered, where the pretty picture should appear, etc. HTML has never had anything to do with separating document structure from presentation.

    XML, is another story.

    --
    . there used to be a sig here.....
  156. Making a name for yourself by gorfie · · Score: 1

    Reinventing the wheel can result in many things:

    To start:
    1.) Bad software that nobody wants
    2.) Better software that people want
    3.) Equivalent software that competes

    On top of that, a programmer doesn't have any chance of striking it big by making slight modifications to the work of others. Reinventing the whell can gain you praise, recognition, etc. (unless your product sucks in which case you get ignored). On top of that you typically learn more and improve more from starting over.

    So, from a "how does it benefit me" standpoint, starting from scratch presents a better future than tweaking. And before you blame the individual/organziation that made the leap, look at the people who are buying into the new version (i.e. the product wouldn't be a problem if people didn't gravitate towards it).

  157. Fight of the Century... not by ReadParse · · Score: 2, Funny

    The story says, in part...

    "Examples include IPv4 vs IPv6, Apache, Perl, Embperl, Netscape/Mozilla, HTML and Windows"

    All props to IPv4 and all, but I don't think it stands a chance against all of those put together (even with Windows on their team).

    RP

  158. my experience with J2EE rewrite from CGI by SpecialAgentXXX · · Score: 2, Interesting

    In the company that I work for, we have been running our CGI "legacy" financial application for the past 8 years. After the first 4 years, it worked fine with no more problems! Scalability, memory leaks, etc., etc. were all found. The application just hums along doing its job and the users are happy.

    But 4 years ago management had to jump on the J2EE bandwagon and introduce the "Java" version of our financial product. Here it is FOUR years later and our "new" Java app is still not in production because of spec changes, clustering issues, etc., etc., etc.

    I kept telling them K.I.S.S., but sales said that we need the new buzzwords to get clients and everyone knows about "Java". Hell, the way I see it, every time management changes their mind, it just adds to my job security since we need to make more changes.

  159. Code as a design tool by srussell · · Score: 1

    Another aspect that this ignores is the fact that, sometimes, code just isn't worth keeping. You write code, you learn from it, and sometimes you throw out what you've written and start over. Even if the basic architecture is still the same, rewriting code can often result in less buggy code than can be obtained by intensive debugging. You do this with your own code; surely it can be just as useful to do it to someone else's.

  160. Reminds me of that car ad... by adrianbaugh · · Score: 1

    Hi premise seems to be that "OK is good enough". The point is, often it seems good enough until you see what a difference the improved version makes. Take Mozilla, for example. I'm not going to argue about the slowness of XUL - there are lean, fast Gecko-based browsers (Firebird, Galeon etc.) - but I do beg to differ with the rest of what he says. Yes, you may be advised to write a stylesheet now, but you only have to do it once for your entire website. That's, what, a couple of hours' work? The beauty is, you get that time back and then some. Every time you want to change your site's look you just alter the stylesheet. Bang! All pages updated as if by magic. And you don't even have to use them. It may be deprecated, but Mozilla hasn't stopped rendering all those old, crappy websites that he professes to like. (Though you can force it not to render <blink> - this is a feature ;-))

    All those little kluges: yes, they're important, but they could almost certainly have been written better if they'd been planned from the start. A re-write gives you the chance to do that.

    In short, yes, sometimes it is worth starting again. After all, if it does all go wrong there's always the old version to fall back on.

    --
    "'I pass the test,' she said. 'I will diminish, and go into the West, and remain Galadriel.'"
    - JRR Tolkien.
  161. Netscape 4 by Xtravar · · Score: 1

    Anyone who uses Netscape 4 out of his or her own volition is either computer illiterate or really stupid.

    And I think this article demonstrates both attributes. What a load of garbage.

    There is a very strong case to be made against rewrites, but not by this dolt.

    --
    Buckle your ROFL belt, we're in for some LOLs.
    1. Re:Netscape 4 by jim3e8 · · Score: 1

      I don't know if you've looked at web design, by people who know what they're doing, in the last five years, but if you want to, start here.

      Things are much better than they ever were.

  162. Avoid Complexity by Lodragandraoidh · · Score: 1

    Rewriting unnecessarily is really a symptom of a much bigger problem: failure to avoid complexity - particularly when the rewrite only serves to bloat the code base with bells and whistles.

    The interesting thing about this is that developers have this ingrained sense of process that is inflexible, in many cases, disallowing the possibility of any other way. Additionally, businesses that market software have a tendency to use new features (which require constant rewrites) as a product differentiator - in order to sell more units (who cares if it works or not?)

    However, there is at least one good reason to rewrite: when the rewrite will lower the level of complexity significantly enough to gain overwhelming benefits in terms of efficiency, maintainability, stability, and reduction of the number of tests required to validate the application.

    --

    Lodragan Draoidh
    The more you explain it, the more I don't understand it. - Mark Twain
    1. Re:Avoid Complexity by chromatic · · Score: 1

      Good points! If the current version has no automated tests and if you can afford to take the time away from bugfixes or adding new features to the stable version, it may be worth starting over. In my experience, though, those occasions are rare.

      (I shouldn't be surprised at the optimism that says "We made a royal mess last time, but I know we'll do it perfectly this time!")

  163. Good vs Bad rewrites by Anonymous Coward · · Score: 2, Insightful

    Rewrites can be good or bad depending on the goal and the understanding of the people doing them.
    For a good rewrite to occur the following need to be true:
    - emphasis on smaller/simpler code, NOT adding new features (new features may come about "for free" as part of the new design, but must not be added in as extras at this stage)
    - the person/team doing the work should have a full understanding of the whole architecture of what is being rewritten
    - full access to all the previous bugs and bugfixes to make sure the new versions addresses all these problems
    - fairly complete regression testing should be available to compare the old and new versions
    - reduce/simplify/refactor as much as possible; identify common patterns and eliminate the redundancy, and in so doing hopefully eliminate bugs as well

    It's a pretty major chore that requires a lot of understanding and very comptenent people to head up the effort. But if done right, it's well worth the effort, because if it can maintain compatibility (or at least mostly) and greatly simplifies the source base, it will dramatically decrease the maintenance time needed in the future, and can naturally wipe out many potential bugs at the same time, reducing future debugging time.

  164. Oh My God! by Hanna's+Goblin+Toys · · Score: 1

    I just realized that the entire ATM protocol is going to break down; an IPv6 address is bigger than an entire ATM cell! You won't be able to address packets anymore using ATM!

  165. Lousy Examples by avdi · · Score: 3, Insightful

    Most of the examples given needed rewrites to remain viable. It's easy to look at a package from afar and declare it "perfectly sufficient". Things look different when you have to work with a system daily. In particular, rewrites often address shortcomings in a system's capacity for extension. Just compare the number of third-party extensions available for Netscape 4.* vs. the number now available at mozdev.org for Mozilla and Firebird.

    A bigger problem, to my mind, is when a half-dozen projects with the noble intention of replacing an aging kludged-up tool are started, all of which suck in different ways, and none of which learn from each other. And then they lose momentum and stagnate.

    Examples? Most programmers agree that "make" is overdue for replacement, but despite many attampts (cmake, jam, cons, ant) no one has managed to come up with one that is compelling enough to catch on. CVS is a crufty mess, but none of it's potential replacements are mature enough or have the kind of widespread tool support to make much of a dent in CVS installations. And there are dozens of written-from-scratch applications which differ primarily on the GUI toolkit they are based on, which would be better apps if they incorporated the best features from all into a joint effort. My idea of the perfect browser combines features of Konqueror, Galeon, Epiphany, Firebird, and Safari.

    --

    --
    CPAN rules. - Guido van Rossum
    1. Re:Lousy Examples by cpeterso · · Score: 1


      I'm surprised the article did not mention the Winamp 3 disaster. Winamp 3 was a complete rewrite. It sucked so bad many people, including me, stuck with Winamp 2. Now Nullsoft has released Winamp 5, combining the best features of 2 and 3. Don't forget: 2 + 3 = 5 ;-)

  166. This is bogus... by clifgriffin · · Score: 2, Insightful

    There are always ways to improve code. Much of the time you'll end up with a much smaller, much more efficient, much more extensible application.

    Rewriting is almost always a good thing. The rules of writing english papers apply here.

    At a certain point, certain portions will mature to the point that they can't or needn't be improved with each successive version. If you're content with the architecture, you'll reach this stage. But not many applications can evolve to new heights with the same diagram/layout it started with 5 years ago.

    This is just a poor attempt to get noticed.

  167. Parallel in the automobile industry by Anomalous+Cowbird · · Score: 1

    This reminds me of an article I read years ago, discussing the differences between the American and Japanese automobile designers. The American approach (at the time -- I can't speak for the current practice) was to completely redesign cars from the ground up, on a fairly frequent basis; while the Japanese always began with existing designs and looked for ways to improve them.

    At the time, the Japanese were running rings around Detroit, in quality and in sales . . . .

  168. Re:PARENT IS A COPIED POST by Anonymous Coward · · Score: 0

    duh, ac, the burdon is on you, loser. So you're saying you have no evidence, yet you're still insistent?

    -M

  169. Every device needs an IP address - hence IPv6 by anti-NAT · · Score: 1

    I don't think this author understands the Internet architecture, nor IPv6's design goals. Perhaps he should before he critiques it.

    Here are the essential URLs :

    RFC 1958 - Architectural Principles of the Internet The end-to-end argument demands that all communicating devices each have a unique network layer address.

    RFC 1752 - The Recommendation for the IP Next Generation Protocol The design goals of IPv6, including a critque of the proposals for it, including TUBA - TCP and UDP with Bigger Addresses.

    He may also be interested in learning why NAT is not so "perfect" or even "good enough" solution :

    RFC 2993 - Architectural Implications of NAT

    Things that NATs break

    Some people say there is nothing wrong with NAT. To them, I'd propose the following analogy.

    Imagine you had only ever seen the world through empty toilet rolls - ie. without your peripheral vision. If that is all you knew, that is as good as you'd think the world was. IPv6, restoring full and unique device addressing, restores the Internet's "peripheral vision" - it removes the Internet's empty toilet rolls.

    We may have already missed out on the next "killer app" after the WWW, as it required unique, end-to-end addressing, and the prevalance of NAT prevented it from being deployed.

    --
    The Internet's nature is peer to peer - 20050301_cs_profs.pdf
  170. Check with navigator.appVersion by herrvinny · · Score: 1

    Windows XP is NT 5.1 -- (check with ver if you want) Windows 2000 with the PlaySkool OS look.

    If you're running Windows XP and IE, you can check this. I don't know if this works with Mozilla. Put the following in IE's address bar:

    javascript: alert(navigator.appVersion)

    It'll return your browser and OS version. Mine came up as:

    4.0 (compatible; MSIE 6.0; Windows NT 5.1; iOpus-I-M)

    1. Re:Check with navigator.appVersion by iantri · · Score: 1

      What I meant was drop to a command line and run the 'ver' command, you'll get basically the same output.

  171. Throw one away by cdunworth · · Score: 3, Insightful

    It's really common to build something, step back, examine its warts, and start over again with a new perspective and understanding. It's called prototyping. Some people actually build the first one with the intent of throwing it away. Others release it as v1.0, and introduce issues of the kind this author is referring to.

    There are many reasons you might prefer a rewrite. The main one, to me, is that complicated applications contain layers and dependencies, not all of which are obvious to a new programmer. If, after some analysis, your assumptions about these dependencies are wrong, you'll break the original code faster than you can say "global variable". In the end, you could easily spend more time and effort patching and praying than you would rebuilding from the ground up.

    Of course, if some of the original architects are still involved in the project, arhictectural knowledge and assumptions can be transferred to new programmers in a fairly fluid way, and I suspect it is in these cases where you can confidently add on to an existing code base.

    And it's always helpful if the previous programmers were actually good programmers, and who wrote code and comments that were mindful of those who might follow them later. But that's not within your control.

  172. Icarus Verilog rewrite by stevew · · Score: 2, Informative

    I've had the fortune to be affiliated with the Icarus Verilog compiler/simulator effort over the last 3-4 years. The first version of the code had some specific design decisions that made scaling simulations beyond a thousand or so gates impossible.

    The author chose to throw out his simulation engine and much of his code generation and adopt a completely new model. It took him the better part of a year to get roughtly where he was with the original code base as far as functionality is concerned. He also has a regression environment with several hundred tests he uses regularly to let him know how he is doing with respect to functionality. About 2 1/2 years into the rewrite period, Icarus is now handling behavioral code of 1 Million gates at about 80% of the performance of commercial tools!

    Was the rewrite needed. YES! Did it take awhile. YES! Was it worth the wait. YES!

    --
    Have you compiled your kernel today??
  173. Author is jacked! by spotteddog · · Score: 1
    A suggestion: If you have a very successful application, don't look at all that old, messy code as being "stale". Look at it as a living organism that can perhaps be healed, and can evolve. You can refactor, you can rewrite portions of the internals to work better, many things can be accomplished without abandoning all the experience and error correction that went into that codebase. When you rewrite you are abandoning history and condemning yourself to relive it.

    Ok, so I can rewrite part of the app and he considers it ok. I can introduce just as many bugs rewriting part of something as rewriting the while thing. Not to mention royally f*&#ing up the API, and existing functions I thought that I remembered didn't touch that variable.

    Then there is the issue of new tools, and techniques being available now. Better compilers, better languages, better hardware, better whatever.

    If I write the original code, and I choose to rewrite, I am most certainly not abandoning history. If I didn't write it, I must have a reason for wanting to spend my time on the rewrite (better algorithm, new approach, added features, won't compile with gcc-3.0, whatever).

    --
    . there used to be a sig here.....
  174. This topic is a rewrite by Anonymous Coward · · Score: 0

    "Should we start from scratch, or revise existing code".

    I think this conversation has happened before, and we should continue where we left off, rather than start all over again.

  175. Whilst I generally disagree by fr0dicus · · Score: 1
    I will say: Winamp 3.x

    ;-)

  176. Look at Galeon by NetMasta10bt · · Score: 1

    Version 1.3.x with GTK2 support is a complete rewrite of Galeon 1.2. I still use Galeon 1.2.10 (the last RPM released). I think to call the new one Galeon is unfair really.... as it doesn't work the same way as the old version and is missing tons of features.

  177. as always, not that simple by Anonymous Coward · · Score: 0

    Netscape's death had nothing to do with software quality or time to market.
    You can not beat "free" and MS was not only giving away free IE, but setting up the entire OS to make sure you were going to use IE.
    Every computer novice (the grand majority of computer users) had no real choice in the matter-- they were going to use IE.

    Anyway, I think Mozilla 1.3 and greater beat the crap out of current IE. Until XP-SP2 comes out IE has no tabs, pop-up blocker, and other cool Mozilla stuff. So it looks like the Netscape rewrite did pay off.

  178. Something I heard... by Dixie_Flatline · · Score: 1

    From my producer who has also been a writer. (Apparently, Voltaire said it first.)

    The perfect is the enemy of the good.

    If you keep striving for the last 5% to make it absolutely perfect, you often end up throwing away what's good enough. It's not necessary for everything to be absolutely perfect. It's nice to try, but more often than not, you end up working hard for very little, and it takes much, much longer to get there.

    For instance, is Linux 'perfect'? No. Is it good? Absolutely. In fact, it's more than good enough for almost everyone. Very few people need perfection out of anything they have, and it's sort of unreasonable to expect it.

    Moral of the story? Don't do a code rewrite unless it's actually necessary. Things will become worse far sooner than they'll become better.

  179. The world is changing.. fast by Erik+Hensema · · Score: 1

    Why do rewrites happen? Quite simple. The world is changing, and it's changing in an incredible pace. We live in a world where processors double their speed roughly every 18 months. RAM gets bigger and cheaper.

    What worked three years ago could be messy and clumbsy by today's standards.

    The problem is: computers are getting more powerful. So the computers can do more. And computers should do more. That's why we make them in the first place. To make the life of the user easier.

    Easy-of-use almost always implies complex software. It may well turn out that you can't add the required level of complexity to version N of your software, so you write version N+1.

    Why IPv6? Because IPv4 isn't up to its task anymore. If you don't believe me, just ask your ISP for a /28 because your want to have all your machines online. Guys, this is a common situation and IPv4 can't deal with it! We have to use a dirty hack called NAT in order to keep things a little manageable.

    Why Mozilla? Netscape 4 is slow, unstable, underfeatured. It won't meet the demands of the modern web by a long shot. It's got a poor CSS implementation, the HTML implementation is not standards compliant, XML? Nah...

    In short: change is inherent to the modern (IT) world. Deal with it. If you really think netscape 4 is a good browser, it's getting time to look for a new field of interest. Seriously.

    --

    This is your sig. There are thousands more, but this one is yours.

  180. The problem with rewrites by Gorimek · · Score: 1

    Most software is pretty bad. It was written by not very skilled or motivated people under unfavorable conditions.

    This is often taken as a reason to rewrite the system.

    But what people always seem to forget, is the the rewriters are just as unskilled and unmotivated, and the conditions just as unfavorable as when the first version was written.

    So, naturally, you end up with a completely new system that is just as bad as the old one.

  181. Rewrite when turnover is high by SirLanse · · Score: 1

    Document all your changes, oh yeah all those 'programmers' hired in late 90s did that. When the turnover left you with buggy code and the author on the street, maintaining that crap can lead to re-writes. You can add stuff to a good base, but when the base is rotten you have to replace it.

  182. Here are some reasons by gabbarsingh · · Score: 1

    I can think of two reasons:

    1. As already pointed out, if its someone else's code that you have to maintain/enhance, it is most likely you will succumb to the rewrite temptation.

    2. When the original team decides to rewrite. This happens when the team set out on a project, almost finished it and on the way discovered things they didn't know before and methods that are result of actual learning. This is what happened to many Open Source projects e.g. Mozilla, Eclipse. Refactoring overload.

    I guess I am trying to say that rewrite happens for lack of knowledge/experience and too much of it!!

  183. Re:CONGRATULATIONS ON RECEIVING THE "DIPSHIT AWARD by Anonymous Coward · · Score: 0

    You silly person. He was making a joke. (Notice that he left out all his N's.) What is "adjective (-ed)" supposed to mean? "Adjective" is already an ... adjective. There's no need to stick an -ed on the end. And by putting it in brackets you just look indecisive and foolish. Or did you mean "adjectived" as a verb? That would suck badly. You can just go around verbing your nouns like that. "Interjective" is not a word, at least not until now when you made it up. "Interjective vulgar" is pure wankery. Don't say "often times". It sounds affected. "Would possible mean"? What could you possibly mean? Congratulations, you win the "lamest grammar-flame ever" award.

  184. Err, AAL5 by anti-NAT · · Score: 1

    IP packets are not mapped one to one with ATM cells.

    One arbitrary length IP packet, whose size is chosen by the source device, is mapped over the top of a number of ATM cells, using the AAL5 or ATM Adaption Layer 5 method.

    --
    The Internet's nature is peer to peer - 20050301_cs_profs.pdf
  185. The thing is by melted · · Score: 1

    >> Sometimes writing a whole piece of software is the best
    >> way to take your coding to the next level

    The sad thing is, I don't see this happening. Rather than reading good code written by somebody else and learning from it, most of those notepad wannabes write their own crappy code and learn NOTHING. It's like learning languages. To learn to speak well you have to be using the language in your conversations with the native speakers for hours every day. It simply doesn't work any other way. Same here. In order to accumulate the knowledge you have to have some kind of source of this knowledge, be it an experienced developer who's mentoring you or reading somebody else's code, or having your own code reviewed and criticized by your peers.

    1. Re:The thing is by adrianbaugh · · Score: 1

      I tend to agree. But good mentors of the kind you describe are in pretty short supply. It's far too common to see people get bawled out because they've made a mistake more than once. That's really off-putting.

      --
      "'I pass the test,' she said. 'I will diminish, and go into the West, and remain Galadriel.'"
      - JRR Tolkien.
  186. Smart Dust by meehawl · · Score: 1

    There are 16.7 million addresses per square metre of the earth's surface, including the oceans. This is overkill. The world does not need more than the 4 billion addresses available with IPv4, and I challenge you to come up with an application that requires that many.

    Smart Dust .

    --

    Da Blog
  187. It's all just history repeating... by F2F · · Score: 1

    No, thanks. I'll stick with Frederik Brooks' "Plan to throw one away, you will anyway".

    50 years of wisdom are not to be discarded lightly.

    But, then again, perhaps because people have forgotten this rule we've been stuck with the same OS design for the past 30 years -- people keep adding to it without really understanding the problem. On the other hand the new developments are shunned and soon forgotten.

    System software research is irrelevant.

    Go ahead, reuse the same code over and over again until it becomes a bloated behemoth which nobody understands, contrary to what are probably the three best rules of software development -- Simplicity, Clarity, Generality.

    They should teach kids at school that as soon as they have understood the problem they should rewrite their code to reflect the fact.

  188. excuses by mabu · · Score: 1

    I hate to say it but there's a lot of code out there that isn't so much badly written as it is badly documented. Why some programmers think it's k00l to write undocumented code is a testimonial to their egotism, insecurity and selfishness.

    I also contend more rewrites have been done by the original developers because they were too lazy to remember and document what they were originally doing.

    There's nothing wrong with rewrites. The whole goal of a rewrite is to learn from the first few iterations of an application and improve upon it. I'd also contend that it's just as easy to introduce more bugs by modifying existing code, so this argument is basically a rationalization to excuse poor programming skills.

  189. HTML 4 vs XHTML + CSS + XML + XSL + XQuery + XPath by SpaceRook · · Score: 1

    The author missed the boat in this case. I suggest he do some reading on web standards; the font tag is deprecated because a) It has no structural meaning b) It is a pain in the ass to update a hundred font tags when you can use a single line of CSS c) It wastes space. d) It mixes style and content.

    The author says "The Web exploded because it was opn and simple - accessible to schoolkids, anybody could write their own web page".

    No, they couldn't. They could write invalid crap markup that most browsers would forgive, but very few actually wrote correct web pages. We are moving towards portable devices with less CPU power to waste on guesstimating what your invalid markup means. This is where XHTML comes into play. Your markup is valid or it isn't. If it's not valid, it doesn't display. End of story. Programmers have been dealing with it for 50 years. It's time web developers upped their standards.

  190. Counterexample by Anonymous Coward · · Score: 0

    MS SQL 7 was a complete rewrite, and it rocked compared to 6.5.

  191. Misinformed and hasty conclusions by ArchAngelQ · · Score: 1

    This guy obviously can't get around the fact that bad designs are bad designs. He gives some good examples (embperl, for example), but then goes right downhill with his harrasment of Mozilla, and hits rock bottom when addressing HTML.

    Mozilla is two thing, a rendering engine (gecko), and then the application suite. That he can't see his head around that is a bit irritating, but hey, it's his opinion. Still, firebird's faster rendering of XUL, and ridding itself of extranios code would most likely suit him better, but he simply doesn't address it.

    As I said, his HTML vs XML and associated standards analasys is fatally flawed, as I'm sure many of you know. If you don't, check out a list apart (http://www.alistapart.com/), the folks there cover the ins and outs of the need to redesign html much better than I could.

    The fact that he starts with "The Web was based on the idea that a simple markup language could allow us to divorce document presentation from document structure, and concentrate on how information was related rather than how it should be displayed." and then goes on to describe how <FONT> tags aren't that bad, obviously means he's missed the whole point.

    And <FONT> tags are depricated in HTML 4.01 strict as well.

    Please, before posting a huge flame doc as an article, please do your research. We are geeks after all.

    Oh, and yes, I did just pick and choose which I read, thank you very much. I don't have enough info on the background of the rest to have an informed opinion. I personally find there to be a great deal of merit in that.

  192. It all depends by pagercam2 · · Score: 1

    This is another "my favorite color is blue" article. There are reasons to rewrite as opposed to patch old code. It is never black and white. Some features work well while others need work. Porting solid code that is mission critical is a good idea, but if you are adding support for a new file system (or something similar) then a rewrite that is more optimized to the new requirements is the better alturnative. Sure there are tweaks and bug fixes in existing code but there are also hacks and work arounds, if the new code is based on the old and diverges in code that wasn't effiecent then thats good and improves the quality and stability of the system. If its getting rewitten "just because I felt like it" then its a bad idea and should be avoided. So it entirely matters how stable and maintainable the old code is and what level of modification is required for new features. The old code may be stable but horribly ineffiencent and great performance gains maybe realized after the rewrite. They just isn't any simple answer to this issue it just depends!

  193. How about something current-- like XFree by Anonymous Coward · · Score: 0

    It's easy to look into the past and say "this and that" should have been done.

    But what about current programs...
    A few key people recently left the XFree effort seemingly because they felt a rewrite was needed.
    What do people who know something about XFree code think about that?

  194. Off his rocker- by scosol · · Score: 1

    WinXP was not a "rewrite" at all- in fact most people call it Win2k with some fancy pretty GUI stuff.

    And IPV4 VS IPV6?
    Huh?
    a) that's not software
    b) he refers to "poor applications knowing 32bit addresses, but being forced to deal with 128bit addresses" - that's ridiculous- the OS deals with that in most cases.
    c) regardless, that is *not* the reason IPV6 has gone nowhere- it's because simply of no backwards compatibility. the idiots who planned it astoundingly imagined everyone in the world simultaneously turning off their IPV4 devices, and turning them back on as IPV6.

    --
    I browse at +5 Flamebait- moderation for all or moderation for none.
  195. if it is fragile then rewrite by samantha · · Score: 1

    If changing the original (but preserving the purported API) causes potential massive breakage then a re-write is required as there are obviously untoward side-effects involved and/or indecent coupling from other code bodies. The breakage is a clue on what was broken all along. That it worked under some constraints sort of well enough does not mean it was healthy or wise to leave in its original state.

  196. "As A WebDeveloper I..." by __aagmrb7289 · · Score: 1

    It all makes sense now. Article was written by a web DEVELOPER. Some of it came close to making sense, I can certainly see why new APIs can be frustrating, and the point is valid in certain cases, but I didn't see any in the article. The point for me isn't that rebuilding is bad, just that it isn't always good - making the choice is the right tact, not "don't do it". Have fun with your HTML programming!

  197. so far I have not seen any compelling arguments.. by josepha48 · · Score: 1
    .. but could have missed them..

    Why rewrite?

    In open source, its mostly because you can. There are usually NO deadlines, so the rewrite can occur on the author(s) timeline. In a corporation this is less likely and more difficult.

    In the case of mozilla / netscape, the thought was that netscape was 4 years old or more ( I can't remember ). The UNIX codebase was based on motif, and not sure what the windows codebase was, probably VC++. The problem here was that the goals were to large. The new developers did not want to use much of the old code base as I imagine it was ugly, so they rewrote from scratch. The problem they ran into is that this took them about 3 years to get a product to market that is now (4 years or more later) a great browser, but maybe a little to late to market.

    IMHO they should have picked subsystems to rewite and worked on that instead. Not sure if they could have, but maybe they could have just changed the parse or the UI first and then worked on the rest later. Maybe a port to QT or something else would have been better and then to have released that as 5.0 and worked on bugs and new elements. Then the 6.0 could have been fixing the parser. That's my opinion, but not sure they could have.

    Gtk+ had similar problems and they rewrote much between 1x and 2.x.

    Most of the time the rewrite occurs, because times change. Needs change and things change. A codebase becomes outdated and no longer functions well. This is likely what happened with netscape. It was no longer useful to keep the codebase.

    Also you have developers that disagree on the best way to do things and it is difficult to get motivated to update and maintain someone elses code if it is crap code. So they rewrite.

    I wish I had that luxury here where I work, as I would love to rewrite. Problem is that we have deadlines and clients that we cannot just rewrite stuff anytime we want.

    I think the rewrite occur mostly because they can, and because noone wants to maintain someone elses code. They want to leave their mark on society so to speak and it becomes their code.

    --

    Only 'flamers' flame!
    Does slashdot hate my posts?

  198. Perl 6 v Perl 5 by Yrd · · Score: 3, Informative

    How is it possible to so completely miss the point of Perl 6? The intent is not necessarily to replace Perl 5 - Perl 5 is fantastic and the Perl 6 developers above all people know this. Perl 6 is perhaps best thought of as a DIFFERENT LANGUAGE which will 'just happen' to be, in many places, very similar/identical to Perl 6.

    Once you start thinking of Perl 6 in that manner, you realise what it's for. It's not to replace all of the Perl already out there. It's to provide a new tool, a new language for doing new things in, drawing on the experience gained in years of working with Perl 5 and other languages.

    Ponie, of course, is part of the effort to make sure that at least some of the vast amounts of Perl 5 code is usable with Perl 6, should programmers wish it. And even that's not a total rewrite of the existing Perl codebase.

    So ultimately, that article has nothing of use in it. Yes, programmers should be careful what they rewrite and when they rewrite it, but many times such things are actually worth it. GTK+ 2, anybody?

    --
    Miri it is whil Linux ilast...
    1. Re:Perl 6 v Perl 5 by soulsteal · · Score: 2, Funny

      Perl 6 is perhaps best thought of as a DIFFERENT LANGUAGE which will 'just happen' to be, in many places, very similar/identical to Perl 6.

      Sort of how tea is a substance almost, but not completely, not unlike tea.

    2. Re:Perl 6 v Perl 5 by Yrd · · Score: 1

      Typo. You know what I meant.

      --
      Miri it is whil Linux ilast...
  199. Re:speaking of IPv6 vs IPv4 by Da_Weasel · · Score: 1

    not to be picky or anything...but that 16,700,000,000 per square meter comment is waaaaaaaaaaaaaaaaaaaaaaaay off....

    it approximatly 2,200,000,000,000,000,000,000 per centimeter

    I completely agree with the code re=written comment though. With all of the provision in IPv6 such as IPv4 Compatible, and IPv4 Mapped IPv6 addresses, there is really no need to re write any code, you can simply put an additional NIC in the machine that is configured for IPv4 and the IPv6 router will handle encapsulating these packets. What alot of people don't realize is that the first 32bits of the new IPv6 address space has been reserved for existing IPv4 addresses.

    As for the absurdlyl huge address space. A lot of it is reserved and most of it is unallocated for any specific purpose, leaving lots of room for IPv6 to grow.

    One more point on over all performance of IPv6: Only the source and destination node may fragment a packet. This will reduce the overhead on internet routers because they will no longer need to be concerned with peicing together fragments created by another router just to get the original packet in a readable format.

    --
    If you must!
  200. But how many Re-Rewrites? by Peteresch · · Score: 1

    For instance: Mozilla was a rewrite of the Netscape code base, but Firebird was able to leverage the new code with out rewriting it again. This says to me that the developers did it right the second time around. Is that really so bad?

  201. Perl 4 - Perl 5 - Perl 6 by jhliptak · · Score: 1
    Under this logic, we would not have Perl 5.

    I've been programming long enough to remember when Perl 4 was state of the art. The same thing happened when we converted from version 4 to 5.

    Remember the big changes in Perl 5? We got objects. We got a standard way to extend the language. I remember having to re-compile perl into oraperl in order to connect to a database. Now I don't need to.

    The point is that there are major changes in technology that you need to support and the best way to do that sometimes is with a re-write.

    Generally, the following rule applies: When a major technology is not supported by the current software you should consider a re-write. this means that when you add something big like: threading, distributed objects, multiple platforms, etc. you should look at your options. Many times the right call is a re-write.

    I support the work they did on Perl 4 to Perl 5. They get the benifit of the doubt for Perl 5 to 6. Their judgement has been proven right before.

    1. Re:Perl 4 - Perl 5 - Perl 6 by Anonymous Coward · · Score: 0

      Except for the fact that Perl 6 is not backwards compatible with Perl 5 by design. They ought not call it "Perl 6" at all - they should call it "Nixdorf 9".

  202. Fuck you slashdot by Anonymous Coward · · Score: 0

    This whole article is just fucking flamebait. This whole fucking site is nothing more than Linux propaganda vehicle.

    FUCK YOU SLASHDOT YOU PIECE OF SHIT.

  203. I do the same thing with legos all the time! by jonathan_the_ninja · · Score: 1

    I will be trying to do something a certain way, that I would do with certain pieces, but then, I can't find the pieces, and I take an alternative approach.
    And then, later, when I find the pieces I wanted to use originally, I realise that the method I used as an alternative was much better!

    --
    I love NetHack.
  204. Sounds like someone else by Uggy · · Score: 1

    cue

    <voice style="character: Andy Rooney;">
    Didcha ever notice how sometimes
    they write code that is supposed
    to be better?

    Better than what?!?!
    </voice>

    --
    Toddlers are the stormtroopers of the Lord of Entropy.
  205. other areas of engineering by bigpat · · Score: 2, Insightful

    seems common in other areas of engineering also, bridges could just be retrofitted, buildings added on to, but sometimes there are too many unknowns in engineering old structures... Are the building materials made from Asbestos, How has the structure held up after so many years? Have other modifications extended or complicated further modifications beyond that which the original plans called for? Sometimes the unknowns themselves justify building from scratch. Sure we could just keep tacking on new technologies to old, but the result will seldom be better. More often the real advancement comes from taking the knowledge gained from past experiences and applying them to new, rather than actually taking old work and trying to make it work in a new situation.

    Would you really want horses running on a treadmill attached to the front of your car, just because humanity wouldn't want to throw away its previous investment in transportation technology?

  206. Surviving slashdotting nicely... by ngunton · · Score: 1

    One thing for sure - the old server is performing nicely under the load. I put in a front-end reverse proxy (apache + mod_proxy) a while back to improve performance, and it seems to be very effective. The server is still responsive under the load, and no problems at all so far.

    Well, apart from the odd flame here and there... ;-)

    1. Re:Surviving slashdotting nicely... by Anonymous Coward · · Score: 0

      Wow... a server serving nothing but pure static text working? Even against a high load?

      Amazing! I mean, it's not like a 386 couldn't do the exact same bloody thing.

      Your powers of observation and astute grasp of technology are truely amazing.

    2. Re:Surviving slashdotting nicely... by ngunton · · Score: 1

      Well, it is relevant if you're running a mod_perl enabled server, even if the file being served is just text. It still has to be processed by the mod_perl processes, which are relatively heavyweight. Whereas, the lightweight front end apache processes can be much more numerous, and don't have the same processing penalty. I learned my lesson when my original Spambot Trap article was published on slashdot - that was text-only too, but the server was slashdotted because of the fact that every httpd process was mod_perl.

    3. Re:Surviving slashdotting nicely... by Anonymous Coward · · Score: 0

      More relevant quotes:

      "I am so much smarter than you, Dr. Hibbert, so much smarter than you!"

      "This is a mint condition Atomic Man comic book, and is well beyond your meager funds."

  207. Professionally written... by mypalmike · · Score: 2, Funny

    Well, it was professionally written, except for the use of phrases and words like "pain in the ass", "jackass", and "asshole".

    --
    There are 0x40000000 types of people: those who understand 32-bit IEEE 754 floating point, and those who don't.
  208. Perl by Sheepdot · · Score: 1

    I've yet to see why a rewrite is a bad thing.

    die "Need argument containing valid directory" unless $loc = $ARGV[0];
    [...]
    @dir = split(/\n/,$dir);
    unshift(@dir, $loc);
    $dir = join("\t",@dir);

    The fact that I can write code like I do above is a "bad thing". As much as I love the "unless" command, it's bad code. As much as I assign mutually exclusive variables to @dir and $dir, it should not be done, especially when $dir and $dir[0] contain two wildy different items.

    1. Re:Perl by z00z · · Score: 1
      The fact that I can write code like I do above is a "bad thing".

      So don't.

      As much as I love the "unless" command, it's bad code.

      I would argue that unless() isn't THAT bad, but if you think it's bad, don't use it.

      As much as I assign mutually exclusive variables to @dir and $dir, it should not be done, especially when $dir and $dir[0] contain two wildy different items.

      So don't.

      Don't blame the language. Blame the programmer.

    2. Re:Perl by Anonymous Coward · · Score: 0

      I blame you, z00z.
      How can you let me code like that?

  209. A few of your facts aren't quite right either by anti-NAT · · Score: 1

    I suggest you have a read of this book, as it identifies the motivations behind a number of the design decisions behind IPv6.

    For example, IPv6 addresses were originally 64 bits in size. However, to facilitate autoconfiguration of node addresses, based on their EUI-64 link layer address, the decision was made to increase the IPv6 address to 128 bits.

    IPv6: The New Internet Protocol (2nd Edition)

    A fair amount of the content is mostly regurgitated RFC details. Those RFCs are now obscelete. The value in the book though is the commentary on the design decisions, and the "points of controversy" in each area. The only other way to learn about that would be to read through all the IPng / IPv6 mailing list archives, and that would take a lot, lot longer than reading this book.

    --
    The Internet's nature is peer to peer - 20050301_cs_profs.pdf
  210. License by Anonymous Coward · · Score: 1, Informative

    License.

    I've rewritten a lot of code from the sepcifications to get out from under the license.

    I've rewritten commercial code to get out from under the commercial license, and I've rewritten GNU code to get out from under he GPL.

    Unless everyone suddenly goes to a BSD license (or public domain, which leaves them open to legal liability, for lack of a "hold harmless" clause), I expect to be happily hacking away for many, many years to come.

  211. Perhaps, some wisdom by blate · · Score: 1

    A wise friend of mine, who's been in the software/hardware business for a long time, has a saying:

    "Designs are like waffles -- you throw out the first couple."

    Many people make the mistake of continuing to work with an old design (read: software implimentation), tweaking it, hacking on it, etc., for fear that a rewrite will take too long, be too expensive, or never work as well.

    That's why, for example, IOS is such a mess, IBM still develops in PL/X, there are so many COBOL programs still in use, and the bloody x86 instruction set still has yet to be abandoned for something more sensical.

    Rewriting a module, component, or entire product gives one a chance to learn from one's mistakes the prior go-around, make the code more maintainable, stable, and secure, and generally do a better job.

    I agree that following this procedure will undoubtedly introduce new bugs -- such is a fact of life. But all software has bugs -- some of them were coded last week and some of them were coded 20 years ago. To insist that users continue to utilize an old, outmoded, poor, or otherwise deficient design or implimentation is not acceptible and, IMHO, ends up costing more time and money in terms of sustaining development and support.

    1. Re:Perhaps, some wisdom by TheSunborn · · Score: 1

      But the problem is that people don't stay in their job long enough to make them rewrite the software. And thus software is often rewritten by the same company, but by new people who newer worked on the original design. So they would just make a design that solved the old problems but introduced new ones because for them it would be a "This is the first time we try to design something like this"

      Just look at intels itanic. Intel designed a brand new instruction set but widtout all the people who designed the original x386 so they replaced one braindead instruction with an other braindead instruction set, and the result is a chip which does integer math just as fast as the fastest pentium IV, but at ten times the price.

      Just looking at something, does not grant you the ability to design something better. To have a rewrite result in a better product have the software written by designed by people who have worked designing/patching the old system for many years. Else you just get the old bugs replaced by new ones tre years later(Mozilla)

  212. Think about your code by Kirby · · Score: 1

    The point that a total rewrite loses all the little tweaks over time is well taken.

    However, it also loses all the little hacks to make things work, particularly ones from bad design due to not fully understanding the problem the first time around.

    Most code for anything substantial has at least one major design flaw the first time around that's often possible to work around, but extremely difficult to fix. A major rewrite to a more appropriate solution (like better data structures) can often simplify code substantially and reduce hard to find bugs.

    But if that's not the case, resist. There's sometimes the urge to rewrite something because it's old, or difficult to understand. Unless your solution is much easier to work with or solves some actual problem, it's very risky.

    --
    -- Kate
  213. Why do I rewrite things? by pclminion · · Score: 2, Insightful
    I find myself constantly rewriting any code that I have complete control over. Code I write for my employer evolves continuously, but personal code for my own enjoyment is constantly getting axed and redone.

    Having done this for years, I think I'm starting to figure out why I do it, and perhaps someday I'll be able to stop myself from doing it, so that I can actually release something :-)

    I think the need to rewrite is more emotional than intellectual. As I work on an existing codebase, I notice the little bumps and warts on it, the little "tweaks and fixes" which make it work, and I find them ugly. For some reason, I place the highest aesthetic value on code that was written in one big, flowing session, where the entire structure was understood from the beginning, and the entire thing looks like it was born fully-formed from some supernatural source.

    In an ever futile attempt to realize this goal, I constantly chuck out perfectly good code and redo it from scratch. I do this because I seek the emotional experience of those few times when I really do sit down and blast out something that's beautiful, elegant, and functional. Even if, practically, it's no better than before.

    Open source programming is often described as scratching an itch. It should be immediately apparent why this correlates to extensive rewriting of code. Some problems are simply enjoyable to solve. The necessary thinking feels good. Just as we watch a good movie again and again even though we've got the plot memorized, some programmers want to rewrite the same functionality repeatedly because it just feels good.

    To hell with practical considerations, like whether or not that's "bad" for the codebase. I program for pleasure.

  214. Article not worth the electrons that represent it by Webmonger · · Score: 1

    First of all, not all of these "rewrites" are actual rewrites. Win2k was not rewritten to produce XP.
    The HTML example he gives is self-contradictory. He writes positively about separation of content and presentation, then whines about CSS separating content and presentation.

    The Netscae 4 codebase was better than 3, but it sucks compared to anything else people use today. Mozilla may take longer, but nested tables can freeze Netscape for minutes or hours.

    If you think XUL's a problem, use Galeon, fer crying out loud.

    You know what the worst part is? I agree with him. There are very few necessary rewrites. It's just a matter of knowing where you want to end up, and then figuring out how to get there from where you are. Doing it in stages means that you're never stuck with unready code, and most of it is well-tested by the time you're finished.

  215. Life Goes on star? by jsimon12 · · Score: 1

    Is that the guy from "Life goes on", Corky? Man he is in IT now too? WHOA!!!!!

  216. Recursive harm by Dr.+Photo · · Score: 1

    '"Considered Harmful" is Considered Harmful' is Considered Harmful.

  217. bad examples.. by Suppafly · · Score: 1

    Most of those examples are bad examples, because several of them aren't the results of total rewrites.

  218. Sorry bud by Kombat · · Score: 2, Informative

    I have a 400 MHz PC at home. Netscape 4.7 runs acceptable fast. Mozilla is a hog. So I'm sticking with Netscape 4.7.

    It's also useful to have that browser around when doing web development, to ensure that my sites look OK in the older browsers. There are still a lot of Netscape 4.7 browsers floating around out there.

    That said, I use Mozilla on both my 1.8 GHz laptop and my 2.0 GHz work PC.

    --
    Like woodworking? Build your own picture frames.
    1. Re:Sorry bud by bunratty · · Score: 1

      I've been running Mozilla on my 366 MHz Celeron with 256 MB RAM for two years, and I find it gives me the best browsing experience. What little Mozilla lacks in speed it more than makes up for by supporting more features and being less buggy than other browsers.

      --
      What a fool believes, he sees, no wise man has the power to reason away.
  219. Mozilla rewrite was necessary by Anonymous Coward · · Score: 2, Insightful

    > But you have to consider what Netscape would be like if it had had the amount of work put into it that mozilla has now.

    If you knew the history of the Mozilla project, you would know that modifiying the old Netscape code would have gone nowhere.

    Before the Mozilla developers decided that a rewrite was necessary, they spent the better part of a year trying to improve the original Netscape code.

    But the code was so bad that they couldn't attract any developers -- no one was willing to work on it.

    Trying to work on the old code was boring, and difficult, and required huge amounts of effort for very little gain. Also, the code was not modularized properly, which meant that very few developers could work on it at the same time without constantly tripping over each other.

    If they had simply tried to upgrade the old code, you would have a slightly better Netscape browser today (assuming they didn't give up entirely).

    But the rewrite attracted large numbers of developers, and produced some real innovations.

    Today, Mozilla is a much better browser -- head and shoulders above IE -- with better stability, better standards support, and features such as tabbed browsing, and pop-up blocking.

    But more than that, the Mozilla project has given us a powerful cross-platform development toolkit, with the XUL user-interface facility. This has not only created a new field in developing Mozilla plug-ins, but is being used for the construction of many other products.

    The original poster was right. The author of the article is talking nonsense.

    1. Re:Mozilla rewrite was necessary by Anonymous Coward · · Score: 0

      But the code was so bad that they couldn't attract any developers -- no one was willing to work on it.

      This is where the argument collapses -- Netscape was basically pushing Open Source ideology over good engineering, and it killed them.

      The original plan for Netscape 5 was basically Netscape 4+Gecko. It wouldn't have been 100% cross-platform or standards compliant but it would have been a hellava lot better than Netscape 4 was.

      I agree that the 100% open source rewrite of Netscape 6 was a good thing. But they shouldn't have stopped for 3 years while doing it.

      (Not to mention that Mozilla hasn't exactly attracted a herd of outsided developers either. It's still mainly ex-Netscape people working on the core stuff.)

  220. Netscape 4 by Anonymous Coward · · Score: 1, Insightful

    Netscape, and the web, with each version since at least 2 or 3, became less usable. In the days of Netscape 2/3, it was stable. The HTML standard was a lot simpler, and it was standards-compliant. I remember those days. The web worked great. It was faster than it is today, more machine-parsable, more disabled-friendly, easier to make web pages for, and just generally better.

    The problem came in when web design weenies decided they want pixel-by-pixel control of where everything went. Netscape and Microsoft, in competition to embrace-and-extend each other out of business, added crappy extensions to allow this. We saw layers, JavaScript, Java, Flash, etc. come out around this period.

    In order to keep up, the W3C came our with hairy standards to allow web pages to describe this sort of stuff. Writing a web client went from several months, to many, many years, with the only added benefit of web pages looking a little bit prettier with a good graphic designer, and much uglier and less useable the other 95% of the time. On the other hand, modern web pages now consistently cause the masses of complexity called web browsers to crash (I use Netscape, Galeon and Mozilla -- all of them consistently crash). Due to the complexity of the standards, different web browsers support different subsets of the standards, and so render differently. Web designers usually only sit with one or at most two browsers, and so never see how the pages break on everything else. Heck, with a lot of web pages, having a different set of fonts or different font-sizes from the web designer's box causes it to render uselessly.

    Normal people no longer learn HTML -- it is now much more complex than languages like TeX. They use tools like FrontPage, but increasingly the web becomes asymetric, with content providers (big companies with web design teams), and content receivers (typical end-users, overwealmed by the web, and only capable of putting up very crude web pages).

    I really don't see any win here. We introduced shitty standards, and coded shittier software to run on those standards, and then whine about how the old software isn't compatible with the new standards.

  221. Solaris 9 supports MD5 passwords by Ayanami+Rei · · Score: 1

    FINALLY.

    That alone was enough to make me upgrade.

    --
    THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
  222. The old stuff is often still there by egeorge · · Score: 1

    Something that he seems to be forgetting is that just because a piece of software goes through a significant rewrite or re-engineering, doesn't mean that the previous version isn't still usable.

    Sometimes I do use software that "just works" that is a few versions behind. But that doesn't mean I object to people improving it or rewriting it. Sometimes it just has to to with which version you prefer.

  223. Exactly. by Ayanami+Rei · · Score: 1

    I mean, XP and 2003 have less security holes, not more. If XP gets it, dollars to donuts 2000 has it too (with few exceptions, notably UPnP).

    All of his opinions are as shallow and uninformed. He just sounds like someone whining about change, only looking at the downside, and not even attempting to realize the potential benefits.

    --
    THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
    1. Re:Exactly. by WNight · · Score: 1

      There are still more 2k machines out there, and as XP is pretty much bug-compatible, why wouldn't crackers look for 2k bugs? When XP is dominant people will start looking at it specifically. UPnP was just so blatant it couldn't be ignored.

  224. MS IE? by Razzak · · Score: 2, Interesting

    I seem to remember the person in charge of developing Internet Explorer for MS saying this *exact* same thing. In fact, he claimed this was the reason MS won the browser war: Netscape lost all their years of work because they decided to re-write their browser, while IE tweaked theirs. I'm sure I read this on /. somewhere, but I can't find the article.

    I know a lot of it had to do with MS's business tactics, but Netscape/AOL took like 5 years to put out a new browser after 4.7. And do you guys even remember Netscape 6 Preview? What a god-awful browser that was. My friends starting calling it Nutscrape cuz it was so painful to use :(

    1. Re:MS IE? by Anonymous Coward · · Score: 0

      I don't think Mozilla was intended as an IE Killer - for that, it's been too late. Netscape 4 was buggy and inferior to IE4 in many respects still when it was "new". And anyone following Mozilla development knew that Netscape 6 had to be buggy as hell, because the Mozilla codebase was at the same time at version 0.6 or so and only beginning to be stable and usable.

  225. Netscape 4?!? by jsebrech · · Score: 1

    I was taking him seriously until he mentioned he used netscape 4 as his main browser. This can not be anything other than a troll (hmmm, moderation system must be working if they're submitting stories now). I run mozilla firebird, reasonably fast, on a pII/233. It's faster than netscape 4 on the same hardware.

    The reality is netscape 4's engine was too broken to be fixed. The lacking DOM and CSS support in NS4 was not because they didn't want to add it, but because they couldn't add it. The engine HAD to be rewritten, and ofcourse, one thing led to another, and it was deemed wise to rewrite pretty much the whole thing. Which imho was a good decision, because firebird beats ANY other browser easily.

  226. GUI polish by Anonymous Coward · · Score: 0

    Polishing and fixing bugs in a GUI toolkit takes a lot of time. Accessibility usually gets left behind.

    For an example of all the work to get widgets right, just on Windows see the Accessible Toolkit Checklist

  227. rewrites can actually save time! by Xtifr · · Score: 1

    > what is wrong with rewriting the code from the ground-up?

    Nothing is wrong with that, as long as your time is worth nothing.

    Actually, rewrites can actually save time if the code is old and crufty enough. Cut-and-paste programming, fragile global dependencies, poor or non-existent factoring and other antipatterns can make a code base all-but unmaintainable.

    Unfortunately, it's very hard to determine just when your code has become so hard to maintain that a rewrite would actually save time over hacking in needed new features. My experience suggests that keeping old code alive for too long is the more common error, but there are plenty who err the other way too.

  228. Re:Damned if you do, damned if you dont. by CmdrTHAC0 · · Score: 2, Insightful

    Those instances of Slashdotter are not necessarily the same person. Furthermore, Microsoft would be totally braindead to make a business plan from Slashdot comments. BillG probably isn't that dumb, despite what we wish for ;-)

    --
    __CmdrTHAC0__
    In Soviet Russia, Spanish Inquisition doesn't expect YOU!!
  229. Re:PARENT IS A COPIED POST by PhxBlue · · Score: 1

    So you're saying you have no evidence, yet you're still insistent?

    Oh, that's nothing new. . . I've spent the last four and a half years of my life in Alabama, so I'm used to it. :)

    --
    !#@%*)anks for hanging up the phone, dear.
  230. It _can_ be faster... by Ayanami+Rei · · Score: 2, Interesting

    If all you're browsing are pages served from a single domain, consisting primarily of flowed elements (headers, lists, images, and that's about it) with pages that are fairly short.

    Start adding tables and forms, trying to reflow the page when resizing (especially if it's a long one), and prepare for the wait of your lifetime.

    At least mozilla can display part of a page while the rest renders, and resolve more than one domain name at a time when connecting to resources in parallel.

    --
    THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
    1. Re:It _can_ be faster... by Anonymous Coward · · Score: 0

      Not to mention that NS4 gets really really slow when faced with many HTTP 1.1 servers (such as IIS).

  231. Umm yah by Glog · · Score: 1

    Win 95 sure did work flawlessly. It was a bummer when 98 came out. My BSOD went through the roof from 5/day to 30/day.

  232. As long as you don't make this mistake... by devphil · · Score: 2, Interesting
    what is wrong with rewriting the code from the ground-up?

    I usually find Jamie Zawinski to be an arrogant rude asshole, but occasionally our opinions overlap. In this brief rant he describes the Cascade of Attention-Deficit Teenagers software development model, which often leads to rewriting code from the ground up. Over and over and over.

    Stay out of that trap, and actually fix stuff during your rewrite, and there's nothing at all wrong with doing it over from scratch. Rewrite it just because you don't feel that modifying other people's code is sexy enough, or that your version will surely be bug-free -- because, hey, it's you -- or because "you would have done things differently," and you'll have failed.

    --
    You cannot apply a technological solution to a sociological problem. (Edwards' Law)
    1. Re:As long as you don't make this mistake... by Anonymous Coward · · Score: 0
      Cascade of Attention-Deficit Teenagers software development model

      Yes, that's all about Linux

    2. Re:As long as you don't make this mistake... by sjames · · Score: 1

      It's a valid point. A rewrite can be a very good thing as long as one of the questions you're asking yourself is 'how could I have done this so I wouldn't be rewriting it now?'

  233. Not for nothing but... by Ayanami+Rei · · Score: 1

    what the hell was wrong with XMMS? I mean seriously, the plugin architecture was ass-simple. It wasn't fancy visuals-wise but it ran on damn near every Unix with that could support an ATI rage card.

    --
    THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
    1. Re:Not for nothing but... by Anonymous Coward · · Score: 0

      perhaps its problem is that it doesn't support the alsa drivers and that 2.6 is getting rid of OSS ? Well, "there's still esound" you might respond.

      Otherwise, it's a nice piece of work.

  234. A Solution! Try Engineering by Phoenix_SEC · · Score: 1

    Like almost everyone here, I'm a developer and have an opionion..

    Anyway, it seems to me that this is all a point of discipline, or more specifically, lack thereof.

    For some reason (which is probably best another thread), Software Engineering has lost the 'Engineering' aspect and become, well, just Software. This is _not_ good.

    Take any engineering discipline out there, and think of _how_ projects are done. There are standard ways of conveying ideas, standards in diagrams, and in many cases, standards in documentation (though they may be loose). Any sufficiently accomplished EE can look at a schematic from any other and tell you what it is (understanding what's presented is a different story, but they will at least be able to _read_ it).

    Software is.. well, just code.

    At our company, we have a development process that was invented by our head honcho (read: founder, CTO, etc). It covers everything from documentation to code formatting to testing process. By using it, we've achieved a good codebase (over 1500 functions in the core libraries that can be accessed from any product/project) and have been using it for years. Likewise, anyone can look at code from anyone else, and it looks the same. You'd be amazed how much of a difference it makes.

    Granted, we are a "small" company, so the same may not work for everyone (read: two people with sufficiently sized egos butting heads over the 'correct' way to code), but by using engineering instead of coding by the seat of our pants, it works.

    I'll also say that we've had to do a few re-writes. Mostly, it's caused by engineers who have 'left' and weren't following convention or by new people who were still getting the hang of it. The code is impossible to follow, since documentation is the ugly bastard stepchild of software, and they didn't follow the conventions (e.g., someone using a 'standard' variable for a loop counter just because it was already defined). It's a mess, and it does need to be re-written. Basically, you just need to look at the additional time it will take you to support/improve the project 'as-is' vs. what a re-write will cost (often times, just re-writing modules is good enough, a thread here or there over time and it'll end up the way you want it to). Along those lines, there are several ways of doing re-writes; and some are better than others. If you go off into a box and design a new version of the same software, have the decency to name it something else. A re-write involves looking at the old documentation (if it's good, if not, it's off into the software), maintaining some semblance of backwards compatability, etc.

    Well, that rant got a bit longer than intended. Ah, well. Bring engineering back into software development, and it will be a huge boon for the industry... or, we can just keep on re-inventing the wheel.

  235. Great Article by mslinux · · Score: 1

    I've often thougth the same thing hundreds of times!!!

    I first started programming on a C64. Moved on to Unix shell scripts, C, Python and a few other languages. Most all of my programs are simple and straight-forward and they work! However over the years, I've received many suggestions on rewrites because my code didn't make x,y or z into a function or a class and we all know that functions or classes would be sexier in this situation.

    Or, I've heard things like, "That's great, and it's really simple and elegant, but it's not characteristic/ideal C code so we should re-write it to be more like the new x,y or z approach." To me, that's BS. If it ain't broke, then don't fix it. Most of the comments I've gotten like this come from PhD's in CS. They spend inordinate amounts of time thinking up the ideal way to use a language or design programs... to them a simple, easy solution that works isn't very sexy, certainly not interesting... maybe that's why they're always doing rewrites adding classes to languages adding OO capabilities to everyting, etc.

    All this reminds me of a friend of mine who is starting to use Linux... he works on building kernels and attempting to configure x,y or z more than he actually uses the computer. This is OK to a point, but after awhile it becomes tedious.

  236. When it's bad or out-of-date by ThinkTiM · · Score: 1

    A particular technology has a lifetime - and just because a piece of software uses it, and there's now something better, doesn't necessarily mean that it should be rewritten. If the piece of software is crap then it shoud be rewritten (so this is case 1). Case 2 is when you have a good piece of software that is using a technology that is at end-of-life. People should resist the temptation to rewrite in the case that the software is well written but is using slightly old technology (but one that isn't yet end-of-lifed).

  237. "Rewrites" by SiMac · · Score: 1

    Half of the things here aren't rewrites. Apache wasn't rewritten, just changed API-wise. Of course the old version works fine, unless you are a developer, in which case you feel like you're getting ripped apart by your anus in the 8th circle of Dante's Inferno. Windows XP was merely a revision, and although it is in some sense a rewrite of Windows 95/98/ME since it comes from the NT family, it is certainly not new code. IPv6 is only subjectively a rewrite of IPv4, more accurately a revision. Mozilla shares code with Netscape 4.8, although XUL is new.

    I think this is more of a complaint about any upgrade that breaks compatibility than a complaint about rewrites.

  238. Any program worth writing... by raytracer · · Score: 1

    Honestly folks, how many of us have written a program that we are entirely satisfied with? That wouldn't benefit from a careful rewrite from first principles?

    In the real world, it is true that we must balance what is gained with potential losses. The addition of new features and the removal of new bugs is often costly. Depending on what the value to the users may be, this may make the rewrite an economically infeasible choice. But few programs are so simple and limited that they couldn't benefit from another try.

    Any program worth writing is probably worth rewriting.

  239. Opera 3,5,6,7 by danila · · Score: 2, Informative

    Another great example not mentioned by anyone yet is the excellent Opera Internet browser. It isn't always rewritten from scratch, but overall there are enough changes in each new major version to make it almost unusable, at least to me. Every time a new version (3.0, 5.0, 6.0, 7.0) is rolled out, many little things no longer work as they did, and sometimes they are clearly and unequivocally broken.

    Before I knew better, I used to download the release versions (not betas or RCs), but each and every time I ended up uninstalling the new version and switching back. It usually took more than a month and about 10 updates for a new version to reach relative maturity. Witness 3.21, 6.05, 7.20, only these versions could be considered better than their predecessors in all respects. With version 7 I succumbed at about 7.1, but next time I will really know better and not even consider Opera 8, until there have been a month without updates. :)

    On a more serious note, I think there is moment of maturity in many every product's lifetime, a moment when new features could no longer justify an upgrade (other things, such as compatibility, being equal).

    --
    Future Wiki -- If you don't think about the future, you cannot have one.
  240. On XML and HTML 4 by Vivieus · · Score: 1

    Thinking that somehow XML is a rewrite of HTML shows his general lack of knowledge here. I mean, doh. XML is not a language meant for browsers or displaying nice pages, it's a way to structurate data. XML uses HTML/XHTML though for it's representation, so it can be used for that, it's just a side use. Now, stroring/transmitting/fetching structured data... that's what XML is about.

    And CSS? Just don't get me started on how silly his idea that plain old HTML is better for large complicated sites than one CSS file to rule them all pages. Yeah, it's sure easier to maintain all the pages' layout by rewiriting every single page to match the new look.
    Some people...

    --
    ___
    *insert sig here*
    1. Re:On XML and HTML 4 by marcello_dl · · Score: 1

      Exactly: the html vs. html + style or xml comparison is sure proof the guy is clueless.

      --
      ---- MISSING MISCELLANEOUS DATA SEGMENT --- [sigdash] trolololol
    2. Re:On XML and HTML 4 by Tidal+Flame · · Score: 1

      How many serious web developers make static HTML pages for all of their content these days? Just put your formatting code in your index file and let it control your other pages. Simple way to allow for easy style changes without having to learn CSS.

      I'm not saying you shouldn't use CSS for certain things - it's definitely useful for easily customizing <H> tags and blockquotes... but having to learn a whole new language just to make things more uniform? It's ridiculous. Do it with your favorite (preferably server-side) scripting language; that's something that a serious web developer should know anyway.

  241. rewrites are usually a bad idea by mrm677 · · Score: 1

    Any experienced developer, without an ego, will know that leveraging existing code is usually the best way to get something done faster and better. The Mozilla rewrite was a terrible idea and is what resulted in its delay. Sure, Netscape code might have been aweful, but incremental improvements are usually better.

    1. Re:rewrites are usually a bad idea by vidarh · · Score: 1
      An experienced developer without an ego will know that whether to rewrite or not is a decision to be made based on a thorough review of the code and it's structure, and that sometimes further development will slow to a crawl if you keep trying to work with a codebase that is rotten to the core.

      Did you ever look at the Netscape code that was released? I did. It looked okay at first sight, but the more people started digging, the more obvious the limitations of the platform became. There might have been a useful Netscape 4 like browser coming out of the Mozilla effort quite quickly if they'd kept pursuing that avenue, but it would have been tremendously hard to get any further.

      Thanks to the Mozilla developers taking the leap, even though it meant years of effort, we now have a platform that's been the foundation for a wide range of highly standards compliant browsers, and that is far more viable than anything based off the original codebase ever would have been.

  242. Rewrites by alw53 · · Score: 1

    Another thing that one can do to justify
    one's existence is to rename files,
    like conf.modules modules.conf,
    or /etc/wtmp -> /usr/wtmp -> /var/log/wtmp.

    This is much easier than rewriting code
    and every bit as disruptive.

  243. HuH by Anonymous Coward · · Score: 0

    How come Linux wasn't included on that list.

    Besides Linux itself being a rewrite of an old UNIX system, within Linux there are examples of rewrites for no good purpose. One example is the Linux TCP/IP stack. Almost every other OS under the sun uses the BSD codebase as their starting point, so all machines that talk together on the net speak through a common codebase. Linus, for arbitrary reasons nobody has fully explained, decided 'he didn't like' the Berkeley stack, so Linux adopted a rewrite. This means that there are warts and features on the Linux stack, that everbody else has to work around.

    The sad note is that in spite of this, Linux didn't get prominent listning in the article summary on the slashdot page. Any particular reason, Rob? It makes you look bad.

  244. Re:HTML 4 vs XHTML + CSS + XML + XSL + XQuery + XP by KnightStalker · · Score: 1

    It's time web developers upped their standards.

    No kidding. To quote Pat Paulsen "We've upped our standards. So up yours."

    --
    * And remember, it's spelled N-e-t-s-c-a-p-e, but it's pronounced "Mozilla."
  245. How about GNU? by ivoras · · Score: 2, Informative
    One of the biggest rewrites ever is certainly Linux and the FSF userland tools that accompany Linux distributions.

    While, for example, BSD's 'ls' program can be tracked all the way to the seventies, GNU people of course rewrote it just for the license sake.

    A nice example is the 'ping' tool. The story of ping tells how the program was concieved and made, and the FreeBSD's current ping.c is based on it:

    /*
    * Copyright (c) 1989, 1993
    * The Regents of the University of California. All rights reserved.
    *
    * This code is derived from software contributed to Berkeley by
    * Mike Muuss.
    ... */
    /*
    * P I N G . C
    *
    * Using the Internet Control Message Protocol (ICMP) "ECHO" facility,
    * measure round-trip-delays and packet loss across network paths.
    *
    * Author -
    * Mike Muuss
    * U. S. Army Ballistic Research Laboratory
    * December, 1983
    *
    * Status -
    * Public Domain. Distribution Unlimited.
    * Bugs -
    * More statistics could always be gathered.
    * This program has to run SUID to ROOT to access the ICMP socket.
    */
    That's a codebase 21 years old and still viable!
    --
    -- Sig down
  246. Writing one's own web page by sm0yby · · Score: 1

    Actually, most people I have seen creating their web pages have been using WYSIWYG tools. I have a few friends who like myself like to get back to basics and craft the markup themselves, but most of the people I know still use WYSPRWYVWS (What You See Probably Resembles What Your Visitor Will See) tools - one of them just recently said, when I pointed out that a small web page had a dozen-or-so errors when run through the W3C validator, that "yeah?". "So does www.${big_computer_company}.com on their front page."

    The problem is laziness, not lack of ability. I use XHTML 1.1 these days, and check to make sure the pages I create are valid. I also check how they appear in text only browsers (using Lynx), and make sure that the content is accessible to such users as well. (Obviously images and more advanced formatting is a different matter, but a <h1> is always a <h1>.) If people creating content for the web in general would go through half the trouble, a lot of pain and unnecessary guessing code could probably be weed out from the web browsers, not just Mozilla (or technically, Gecko). And yes, WYSIWYG tools should be capable of creating standards-compliant HTML, too.

    Neither does hand-crafting HTML have to be hard, or divert attention much from the content. Especially not if you have a decently designed CSS style sheet. I personally find it a lot easier and more intuitive to write

    <img src="..." class="floatright" style="width:XXpx; height:YYpx;" />
    than to click through half a dozen dialog boxes to do the same thing (insert a right-justified floating image). Most web sites have a standard basic outline, but you never hear people complain that it diverts attention from the content (if it does, they need to think about what can be done to it), and HTML code is little different. There is a header, the content, and a footer. The lion's share of just about any properly written HTML/XHTML document is going to be the content. So where is the big difference? Writing the tags myself also gives me a moment in between paragraphs to reflect over the content, which can hardly be considered a bad thing.

    This will probably get modded -1 flamebait, but I'll take the chance.

    --
    Been modded interesting, insightful and funny. Why does real life have to be so different?
  247. Let's just hope... by incom · · Score: 1

    That this doesn't become a new mantra amoung PHB's, "No Re-writes!" . Imagine how frustrating that would be, especially when a re-write is absolutely nescesary.

    --
    True genius is grasping a situation like a peice of fruit, and peircing it just right so that it drains dry.
  248. Andy Rooney usually has a point. by Ayanami+Rei · · Score: 1

    n/t

    --
    THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
  249. If at first you don't succeed by Lips · · Score: 1

    "When I first came here, this was all swamp. Everyone said I was daft to build a castle on a swamp, but I built in all the same, just to show them. It sank into the swamp. So I built a second one. And that one sank into the swamp. So I built a third. That burned down, fell over, and then sank into the swamp. But the fourth one stayed up. And that's what you're going to get, Son, the strongest castle in all of England."

  250. Question, by Anonymous Coward · · Score: 0

    Are you talking about making them burn forever in writhing agony or making them high class eunuchs? Yeah yeah, everyone knows what you mint.

  251. Re:speaking of IPv6 vs IPv4 by Muggins+the+Mad · · Score: 1

    > world does not need more than the 4 billion addresses available with IPv4, and I challenge you to come up with an application that requires that many.

    It's not really how many there are, it's *where* they are. And the difficulty of getting them assigned is driving people to use NAT instead, which introduces more trouble than it solves.

    If you can solve the problem of allocating IPv4 according to need rather than corporate power, get everyone to use the same set of extensions adding features IPv6 has built in (IPsec, QoS, etc), and solve the routing issues behind finding addresses split up into groups of two or three IPs then maybe you have a point.

    > Assuming that you can actually come up with one, it could easily be solved with Network Address Translation, or NAT as it is commonly known.

    So how do you do VoIP between two users behind NAT?

    How do I run a personal website on my desktop if I'm behind NAT?

    Sure, IPv6 may have far more addresses than we think we need. But so did IPv4. 32 bits to hold addresses? - we're only ever going to have maybe 50 universities with seven or eight computers each on the internet!

    - Muggins

  252. I hear they're beefing up the firewall by phorm · · Score: 1

    I'm sure they'll protect against the greatest threats. Maybe some default security to protect microsoft?

    Site blocking

    -----------------

    RedHat.com Block [x]

    Debian.org Block [x]

    Suse.com Block [x]

    Slashdot.org Block [x]

    Microsoft.com Block --unavailable--

    I'm joking of course, but anyone remember how after installing certain updates/software from Microsoft at one time netscape would begin crashing horribly afterwards? He who controls the default firewalling settings could control a lot... he who controls a popular closed-source OS could do as lot worse

    1. Re:I hear they're beefing up the firewall by drinkypoo · · Score: 1

      Certain updates from Microsoft made Windows start crashing horribly afterwards, too. It is not necessary to attribute to malicious behavior what you can attribute to incompetence. Windows 2000 Service Pack 2, anyone?

      --
      "You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
  253. Rewrite can be a good thing by bliSSter138 · · Score: 1

    I disagree - if only because in more than a couple of instances I've seen first-hand, the gains of a rewrite were worth the tradeoffs of the aging, legacy items that suffer.

    Don't get me wrong, a rewrite for rewrites sake is foolhardy, but Netscape 4.x is widely acknowledged to be one of - if not the worst browser on the planet. Regardless of the bloat, Mozilla is still a standards-compliant browser, and I'd be curious if the original author has tried Firebird. I am a Web designer, so a CSS/XHTML-based design is a bit more troublesome on the front-end. At the same time, it's far easier to change the entire layout of my site(s) and it's far easier to maintain accessibility with a CSS-based design.

    At the same time, we've recently upgraded to Apache 2 and the performance improvements are far and away worth any amount of legacy support - IMHO. I admit I'm a bit biased as I'm not programming, I am seeing the fruits of the labor as an end-result. But if those fruits come at the cost of legacy support that appears to be "good enough" - that's not enough for me to justify....go ahead and rebuild...

    Just my $.02
    - bliSS

    --
    the only difference between a rut and a grave, are the dimensions
  254. Good enough for now by GnuVince · · Score: 1

    The problem is not whether they are good enough now, it's whether they will be good enough in the future. You can't predict what the future will bring, so if you rewrite your software to make it easier to include new stuff, then it's all good.

  255. Damn right. by Trejkaz · · Score: 1

    Also, it's unfair of him to compare HTML to an entire list of technologies. HTML is to XHTML, CSS1 is to CSS2, CSS3, etc.

    XHTML 2.0 is going to be a bit of a massive move, but people can still choose to stick with XHTML 1.1. If anything I would say the changes are for the better.

    --
    Karma: It's all a bunch of tree-huggin' hippy crap!
  256. Partial Solution - Write modular code by muckdog · · Score: 1

    Even thought the author of this artical complains about mozilla look how gnome got around XUL but just using the gecko piece of the code.

  257. Living in the past by digitalgimpus · · Score: 1

    The author makes a few valid points. BUT... the author seems to be impling that the tech community should freeze.

    I couldn't imagine all OS's being based on DOS, because "it's already there". Even the NT Kernel has many improvements. Linux as well. It's reinventing the wheel, but it's a better wheel.

    XUL has the benefit of being truly cross platform, and standards compliant. It's easy to write/adapt. I don't know of any other standard that is.

    Apache 2 is clearly the better Apache version. I don't think many debate that. What they debate is the failure to complete the job of getting the modules updated to utalize it. I don't know of many Apache users who aren't itching to get ahold of it for production use. As soon as all those modules are working 100%, there are many gains.

    Funny the article didn't mention WinAmp 3... the one true case of bad rewrite.

    Perhaps it is reinventing the wheel... Then again, you can go with your wooden carrage wheels, while I have a shiny crome rim with all terain tires... see who has a better time getting cross country.

    reinventing can be a great thing. What's important is to do it in a way that smoothly transitions.

    What's also important, is for people to realize that their technology, when connected over the net, must eventually be upgraded to keep up with the net. Slashdot is slow with a 14.4 modem. I know that. But is Slashdot at fault for that? Or is it unreasonable to expect slashdot to freeze development because someone won't upgrade their modem?

  258. A response in the defence of XHTML by Trejkaz · · Score: 2, Insightful

    I sent this reply to the author through the site, but it would probably get some use here too.

    "The Web was based on the idea that a simple markup language could allow us to divorce document presentation from document structure"

    Which HTML 1.0 through 3.2 didn't really achieve, admittedly...

    "Some of the changes to HTML were done in a way that shouldn't break old browsers, but as I said before, I am increasingly seeing websites that don't render properly in Netscape 4.x"

    There's a shock. I thought it was 2004, and you're still testing on a browser which is at least three major revisions old, never mind that Mozilla itself seems to be more useful than Netscape's rebadged browser.

    "So apparently the FONT tag is deprecated - now we have to use style sheets and whatnot to do something that was originally very simple"

    This is because "the web was based on the idea that a simple markup language could allow us to divorce document presentation from document structure", and the FONT tag is presentation appearing in the document structure. That's sort of like a divorce where the couple still sleep with each other.

    "but at the expense of being able to do simple things quickly."

    I beg to differ. Even if I really want to break style guidelines and make a chunk of text red for no particular purpose, it still takes the same amount of time to type <span class="red"> than it was to type <font color="red">. Never mind that this really is a bad thing to do. Why is it red? Is there a meaning to the red? Perhaps it should be <span class="important">, in which case why not just use <strong>?

    "As a Web developer I have long wondered why they didn't add more types to the INPUT form tags to express different types - for example, a DATE attribute, or INTEGER, DOUBLE, or whatever."

    Of course XHTML 2.0 will be partnered with XForms, which will attain this functionality in so as far as any field which can store a value can be of an XML Schema type. This includes -- wait for it -- dates, integers, doubles, and arbitrary regular expressions.

    "These "rich" (but simple! not XML!) attributes could then be seen by the browser and presented to the user in whatever way is supported by the system"

    Hopefully they do this. I would love to see browsers implement a calendar popup. I can't count the number of times we had to use a JavaScript for this.

    "But the direction we're going in, the HTML books have just become thicker and thicker over the last few years."

    This I don't get. There are less tags now, right? It's the CSS and XSL books which should be getting thicker. By the way, never buy a book on XSL:FO. I accidentally dropped that on my foot, and christ, they hurt.

    I think the progression from HTML 4.0 through XHTML 1.0 to XHTML 1.1 was smooth. They're encouraging people to go back to the roots of the web: to mark up content depending on what it means, not depending on how it's supposed to look. Sites like www.csszengarden.com are living proof of how the separation of HTML and CSS can achieve excellent separation of concerns between the graphic designer and the web developer, and I'd personally love to see more sites such as this (only with real content!) pop up all over the place. If for no other reason than the pages loading faster due to many, many less tags in the HTML! :-)

    --
    Karma: It's all a bunch of tree-huggin' hippy crap!
    1. Re:A response in the defence of XHTML by hsoft · · Score: 1

      I agree with this reply, and would also add that if the author of the article wants to write HTML without thinking, he should use Frontpage instead of notepad. It generates "good enough" (lol!) HTML code for you, doesn't it? (Well, by looking at the look of the article, I would say yes)

      The web today needs XML/CSS/XSL/XHTML. As soon as you have a website that is a little much more than a "Welcome/Photos of my dog/Linkz/Email-me" wannabe website, simple HTML becomes hardly maintainable (What if you want to change all your titles from blue to red? no CSS? a nightmare.).

      Imagine if everybody would say: "Hey, why do we keep redesigning computers? This one is 'good enough'!". We would still be in front of an apple II. All website would be dull home page with photos of the guy and his family. slashdot wouldnt exist. In fact, with the "good enough" mentality, we would probably be on a BBS, writing "Oh dammit! I'm so glad. We have a BBS that has absolutely zero bugs, very stable, handles all requests fast. That is definately good enough."

      --
      perception is reality
    2. Re:A response in the defence of XHTML by Trejkaz · · Score: 1

      Oh man... a 1GHz Apple ][. Where do I sign up?

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
  259. Second-system effect by dmitriy · · Score: 1

    Fred Brooks described Second-System effect in his 1974 classic book, The Mythical Man-Month. I don't think there's a need to rewrite this book yet.

  260. power & extensibility vs ease of use by lordofthemoose · · Score: 1

    This just looks like a debate about power & extensibility vs ease of use (from a programmer's and sometimes user's point of view).

    Basically, you can choose between a small and easy program that will do just what you need but is not designed to do anything else, and a very big and complex framework that will allow you to do whatever you want, but at the cost of making even small things very complex, because they will depend on the whole framework. Having a nuclear power plant behind you just to make a "Hello World" program is perfectly pointless.

    This is also true from an UI point of view. When a new version of a special piece of software is released, I sometimes feel that I preferred the old one. The programmers wrote a Very General And Complete Thing which can do Anything They Want, but lost simplicity, both within the code and within the UI, since the user can now do zillions of things.

    The result is that I often feel the new version should most of the time have a new name instead of software 2.0. Sure, it keeps quite a few things in common with the earlier version, but after a while, it will become so much more complex than what it was in the beginning, that I'll stick to the earlier version, or switch to another competitor.

  261. Detailed Design Documents are a waste of time by solprovider · · Score: 1

    I am assuming that you are using "Detailed Design Document" to mean a report written before programming commences that includes everything from the overall architecture all the way to what each function does. It is usually obsolete as soon as a programmer realizes that half the functions are unneeded because of the implementation. I find it quicker to write the program than to write that level of specifications, and I use platforms that have methods for discovering the details from the code IF THE CODE IS DOCUMENTED PROPERLY.

    ---
    With LotusNotes, you name the design elements by their purpose. Almost everything is obvious, so if you want to check how a Field on a Form works, you look at the Form. Most of the code will included in the Field; everything else should be in the events code. Occasionally developers will hide code that affects one Field in a different Field; the "Design Synopsis" creates a quick searchable report to solve these issues. If anything is tricky, I add (hidden from users) design notes at the top of the Form where they are obvious to the maintainers. I do add a "DESIGN" page to define the workflow and architecture whenever it is not obvious.

    I once was sent in to troubleshoot a very large project that was about to become overdue. The developers had their list of bugs. After about 10 minutes to familiarize myself with the architecture, they started describing the bugs one at a time. I was able to find the code that contained each bug in moments, and usually had it fixed in minutes. Then they would test the function with several versions of the clients (mostly MSIE, but also Notes clients) while I worked on the next bug. We fixed about 150 bugs the first day, and another 50 (including a few that required more than a simple code fix) the second day. This was possible because where the fix was needed was obvious because of where it appeared, and Notes makes it easy to find the code.

    ---
    With Java, I include a text file that outlines the purpose and major architecture. I update that if there are any major structural changes. I also add comments for all classes and functions so that JavaDoc can create the specifications from the code. Bugs can be harder to track because the logic may pass through several classes (and of course each class is in its own file.) I have spent hours testing one class before realizing the bug is in a different class.

    ---
    With C, the documentation is much more important because even the best design will get messy during implementation. I have not used any tools that compare to JavaDoc. I avoid using C for major projects, and have been mostly successful since Notes plus some Java is usually obviously the best solution for business apps. (C++ is closer to Java, but none of my clients are using it.)

    ---
    I understand that when you have tons of developers working on a project, better documentation is necessary. But if you have tons of developers working on a project, the project will probably fail anyway (unless you hire a Linus clone to manage it.)

    --
    I spend my life entertaining my brain.
  262. OOP by IshanCaspian · · Score: 1

    This is why Object-Oriented Programming is so important. When you think of your program in terms of a series of independent objects that are orchestrated to perform a task, you don't need to discard code that isn't being changed.

    In my experience, I have seen very few projects that truly use OOP to its maximum power. Just the other day, I was leafing through the GAIM source, and let me tell you, it wasn't pretty. I personally haven't spent any time studying the code mentioned in the articles, but I'd be willing to bet that most failed rewrites come from code that is not modular.

    If you start writing your program with any idea in your head, it might work out, and it might not...the only way to be really sure that your work is going to be of some benefit down the line is to assume that whatever you're writing will need to be replaced, and make that process as painless as possible.

    IMO, portability, reusability, and time-effective maintenence are all dependent on OOP.

    --

    But there is another kind of evil that we must fear most... and that is the indifference of good men.
  263. Problem and solution by mauddib~ · · Score: 1

    The problem of rewrites does absolutely not lie in the current codebase, but in what has happened before that. There are a couple of reasons why rewrites become necessary:

    1. The system was not well specified or designed in the first place (eg. no modularization, no frameworks or reusability, no clear documents for the specification or design, client changes mind during development process)
    2. Updates on the software were made ad-hoc on the code base and not to the specification, leading to out of sync specs vs. code base.
    3. Pieces of code were used for things they shouldn't be used for (eg. using wrong types)
    4. (very important) Changes in technology or changes in demand (eg. nowadays communication mostly goes with RPC using XML, whereas in earlier times each communication channel would use another structure and syntax. Another example: users are more demanding to receive mail spamfiltering with specialized bayasian filtering rules instead of simple keyword rules)

    Ok, how to solve these very difficult problems (they are indeed difficult)?

    First of all, design your system for change in mind from step 1. Build a prototype which has the capability to be extended and throw it away, so you can see how extendability can best be implemented on your specific project.

    Second of all, use specifications and design documents, if necessary use UML diagrams so you can still understand the design after 4 years.

    Third of all, design and build every part of your system as if you expect it to be reused, even if it is not going to be reused in your current application. Design with modularization in mind. Make sure that the design you made and the piece of code you wrote is only going to be used for what it is intended for (but use generalisation to give it a broad intended range of uses).

    Fourth and most important, try to explain to your manager or client that in the long term quick hacks are going to cost alot more than work than solving the problem the right way.

    This advice may be a bit oriented toward businesses instead of open source development, but opensource has one big pre: not as much time pressure.

    --
    This is a replacement signature.
  264. agree on two points ... by porky_pig_jr · · Score: 1

    First, IPv4 vs IPv6. Not only there is no pressing need to move to IPv6, most of the applications/tools/utilities are not written to accomodate IPv6. As simple as that.

    Second, Perl. Personally, I gave up on this language, that is, won't be using it for any projects. First, there was a painful transition from v4 to v5, and now the happy Perl crowd want to present us with another painful transition, from v5 to v6. Thanks but no thanks. For all I care, Larry Wall and Co. are just the bunch of happy idiots who want to have fun but have no clue what production environment is all about. Perl is no longer a serious effort. it is a 'Church of Perl', with its true believers, and I'm having none of that. To be more specific, they don't talk about things like 'compatibility' or 'ease of maintenance'. Instead they talk about 'Perl as a part of post-modern culture'. enough said. They can have all post-modern culture they can eat.

  265. Re:speaking of IPv6 vs IPv4 by Anonymous Coward · · Score: 0

    1 is not only a Cisco problem; until they take the trouble and fix their boxen, there is a "coincidential" friction in IPv6 standardization which also just may have contributed to the fact IPv6 is not quite yet out there.

    As of the argument in the original article that rewriting IPv4 into IPv6 is not a very good idea, anyone who has minded larger chunks of code should know that sometimes the old way simply is beyond repair. In this case, fixing NAT problems and re-enabling application- and vendor-independent end-to-end to the Internet simply requires a re-write. Hence, IPv4 vs IPv6 is not a very good example.

  266. The ugly flip side by Anonymous Coward · · Score: 0

    I wish Newtek was guilty of this. Instead, the current version of Lightwave 3D (6.x/7.x) is starting to fall apart under the load as the ancient Amiga codebase is pushed far beyond its original purpose.

    While I hardly ever ran into bugs in their 5.x releases (and the ones I did find were minor), a significant slice of man-hours working in 6.x/7.x involve compensating for bug-related loss of functionality with workarounds, recovering from crashes etc.

    They should have rewritten after releasing 6, but they didn't, and they probably won't survive the results.

  267. Euh, one little detail? by marcovje · · Score: 1


    That most grand projects "rewrite X from scratch" never reach the 1.0 level, or that they cost years beyond the original estimate?

    One could do a lot of small bugfixing in that time

  268. Evolution sometimes requires big steps back by JWhitlock · · Score: 1
    Evolution scientists are now using mathematics to describe the "fitness landscapes" created by small changes to a creatures DNA. The idea is that swapping one allele (think of it as the smallest segment of DNA that does something - the characters of DNA, rather than the line segments of a vector font) either gives the organism a slight advantage or a slight disadvantage. Swapping allele for allele - stepping across the fitness landscape - across several generations gets the organism to the local maxima - the point of highest fitness that you can get to through incremental steps. However, local maxima are not necessarily global maxima, just like the tallest hill in Kansas doesn't measure up to the Rocky Mountains. Sometimes you have to swap alleles that give an organism a disadvantage - take them through a local valley - to get to a close maxima better than your local maxima. So, what appears to be a disadvantage in one generation can be the start of finding a better advantage - you just don't know until the organism goes through a few generations of environmental pressure.

    We can do even better in software (and other human tasks) than evolution, because we can make larger jumps and have an idea where we want to go and how to get there. It's the difference between getting a roadmap and driving from Lawrence, KS to Denver, and starting in Lawrence, closing your eyes, walking for a hour, and measuring your altitude. However, the risk is still the same - without a good idea where you are going, you can end up worse than you were. Think how social engineers thought communism and fascism were good ideas for societies, "if people would just implement it correctly". Thank goodness we have software models that let up abandon bad projects.

    I'd agree that rewriting from scratch is bad - if you have to jump to the re-write right away. But we all know the rule of 3, at least for Microsoft - don't jump on until the third release. DOS 3.0, DOS 3.3, Windows 3.1, NT 4.0 Service Pack 3.0, Internet Explorer 3.0, etc. etc. It's the same with the other technologies - wait at you local maxima until the new maxima is proven to be significantly better.

    However, "We're doing pretty good here" is a lousy reason to stay at a local maxima. Cochroaches are pretty successful biologically and evolutionarily, but I like the features we gave up to get to Human status.

  269. Sometimes you have to rewrite... by MightyYar · · Score: 1
    Last year at work I inherited maintenance of an Excel-based application. Excel was slow, extremely hard to debug, and the application behaved differently on the multiple versions of Excel out there. Not to mention keeping the users up-to-date with the latest version, and managing the changes that various contributers would make. It was a mess.

    Long story short, I and another fellow re-wrote the thing from scratch using PHP and MySQL. The whole rewrite took less time then it would take to debug a small change to the Excel app, and the distribution problems are gone... Success!

    The author uses some examples where the original implementation is not necessarily as bone-headed as using Excel, but he still misses the point that sometimes a rewrite is just WORTH all the pain.

    --
    W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
  270. Everybody knows rewriting is best by Anonymous Coward · · Score: 0

    Anyone who has worked on major projects where features are added over time periodically realize that rewriting sections or even completely starting over on the project usually leads to better implementations including the fixes and tweaks.

  271. examples of a "good" rewrite by Sunnan · · Score: 1

    Openbox really surprised me by being a great program even though it was a rewrite.

    About half of the rewrites I've seen have ended up as a better program than what went before, and half of them went nowhere and the program died. Sometimes it's OK to stop and say "this program is going nowhere. A rewrite is necessary".

    Other examples are Rosegarden, for example, and hasn't Perl been rewritten successfully in the past? (We'll see what happens to Perl 6.)

  272. Netscapes mistake was not rewriting soon enough by Anonymous Coward · · Score: 1, Interesting

    From:
    http://ocw.mit.edu/NR/rdonlyres/Electrical- Enginee ring-and-Computer-Science/6-170Laboratory-in-Softw are-EngineeringFall2001/BD7247F9-DD02-42D2-B8E9-75 FF01E4F868/0/lecture01.pdf

    Netscape Story
    For PC software, there's a myth that design is unimportant because time-to-market is
    all that matters. Netscape's demise is a story worth pondering in this respect.
    The original NCSA Mosaic team at the University of Illinois built the first widely used
    browser, but they did a quick and dirty job. They founded Netscape, and between April
    and December 1994 built Navigator 1.0. It ran on 3 platforms, and soon became the
    dominant browser on Windows, Unix and Mac. Microsoft began developing Internet
    Explorer 1.0 in October 1994, and shipped it with Windows 95 in August 1995.
    In Netscape's rapid growth period, from 1995 to 1997, the developers worked hard to
    ship new products with new features, and gave little time to design. Most companies
    in the shrink-wrap software business (still) believe that design can be postponed: that
    once you have market share and a compelling feature set, you can refactor the code and
    obtain the benefits of clean design. Netscape was no exception, and its engineers were
    probably more talented than many.
    Meanwhile, Microsoft had realized the need to build on solid designs. It built NT from
    scratch, and restructured the Office suite to use shared components. It did hurry to
    market with IE to catch up with Netscape, but then it took time to restructure IE 3.0.
    This restructuring of IE is now seen within Microsoft as the key decision that helped
    them close the gap with Netscape.
    Netscape's development just grew and grew. By Communicator 4.0, there were 120 developers
    (from 10 initially) and 3 million lines of code (up a factor of 30). Michael Toy,
    release manager, said:
    We were in a really bad situation... We should have stopped shipping this code a year ago...
    It's dead... This is is like the rude awakening ... Were paying the price for going fast.
    Interestingly, the argument for modular design within Netscape in 1997 came from a
    desire to go back to developing in small teams. Without clean and simple interfaces, it's
    impossible to divide up the work into parts that are independent of one another.
    Netscape set aside 2 months to re-architect the browser, but it wasn't long enough. So
    they decided to start again from scratch, with Communicator 6.0. But 6.0 was never
    completed, and its developers were reassigned to 4.0. The 5.0 version, Mozilla, was
    made available as open source, but that didn't help: nobody wanted to work on spaghetti
    code.

    In the end, Microsoft won the browser war, and AOL acquired Netscape. Of course
    this is not the entire story of how Microsoft's browser came to dominate Netscape's.
    Microsoft's business practices didn't help Netscape. And platform independence was a
    big issue right from the start; Navigator ran on Windows, Mac and Unix from version
    1.0, and Netscape worked hard to maintain as much platform independence in their
    code as possible. They even planned to go to a pure Java version ('Javagator'), and built a
    lot of their own Java tools (because Sun's tools weren't ready). But in 1998 they gave up.
    Still, Communicator 4.0 contains about 1.2 million lines of Java.
    I've excerpted this section from an excellent book about Netscape and its business and
    technical strategies. You can read the whole story there:
    Michael A. Cusumano and David B. Yoffie. Competing on Internet Time: Lessons from
    Netscape and its Battle with Microsoft, Free Press, 1998. See especially Chapter 4,
    Design Strategy.
    Note, by the way, that it took Netscape more than 2 years to discover the importance of
    design.

  273. Re:PARENT IS A COPIED POST by Anonymous Coward · · Score: 0

    Guilty until proven innocent aka the American way.

  274. You seem to be describing... by A+Fortiori · · Score: 1

    ...a big ball of mud. The thing that you really don't want to throw out and redo from scratch is the documentation that ought to accompany a project - if the behaviour of the code is fully documented, then a you can decide what if any functionality you throw away when rewriting the code.

  275. Throw-away prototype by cookiepus · · Score: 1

    Background: I work on a very large, critical finance system. Literally millions of dollars can be lost when out stuff does not work. This is my first job after college, all prior projects I've worked on were smaller (I usually lead them).

    Anyway, when I was in school, one of the little concepts I picked up and became enamored with is the idea of a throw away prototype. The idea is simple: plan to throw away your first implementation. That way, you implement it, learn the shortcomings of your design, and make a new design which now encorporates your new experience with this.

    The idea is really one that needs to be accepted: you're going to make mistakes during your design. If you plan to throw away your first prototype, it drives you to accept and correct your errors rather than kludging and hacking your original design.

    This is fairly accepted and fairly standard practice.

    Now, my opinion (based on experience)... When you've been working on a project long enough, you start to feel what the design did and did not anticipate, even if you no longer even know who did the design. You start to know what kinds of changes are easy to make, what kinda changes are hard. You also learn what kind of changes are most often needed, and the ones you have to hack around the most.

    I think you know where I am going with this...

    At some point, you start learning the same types of lessons from working on your code that you're supposed to learn from your throw-away prototype. At some point you start to keenly feel where the shortcomings are.

    So logically, if you understand how to improve your program through a rewrite, you should do it. But only once you really understand the old code enough to learn how to genuinely improve it for the practical considerations.

    This is where object oriented or at least modular, design pays off. If you can do a rewrite (or redesign) of your whole program without really having to rewrite some chunks (that you know are good), you're really ahead.

    1. Re:Throw-away prototype by kellererik · · Score: 1

      All sound and clear, but usually at some time during the first phase of development (the one that should be thrown away) a PHB/suit pops up and decides 'this is good enough for selling' and there you go. Microsoft style software in dire need for a rewrite within the next couple of years. Years, because the inevitable bug-fixes and patches begin to develop a live of its own.

      my 2 cents

    2. Re:Throw-away prototype by cookiepus · · Score: 1

      Maybe. Except this story is about too much rewriting of code, not the inability to do it because a sales guy is ready to market the current version.

      Presumably a suit doesn't force you to rewrite code.

    3. Re:Throw-away prototype by kellererik · · Score: 1

      The suit will force me to re-write the code eventually, usually after he/she gets under attack by furious customers. (Been there, five (5) rewrites).
      Things like that shouldn't happen in the first place. My point was that a sound design (build prototype - learn from it - throw it away - do the real thing) doesn't require re-writes (in the sense of throw away and start from scratch), so the mentioned re-write-mania doesn't happen at all (except if the design needs to be changed, but even then, no complete rewrite). The number one reason for a programmer to do a rewrite is that the production code wasn't 'production-ready' from the start.
      Sorry for being to general.

  276. I hate that article 'cos it contradicts itself by Anonymous Coward · · Score: 0
    Consider it's fundamental touchstone: "Code is easier to write than it is to read".

    Well, that's exactly why old software has to get rewritten. The guys who wrote it have moved on to other pastures. Great, the code works semi-brilliantly, but you cannot find another person on this green earth who can figure out why. Which means it cannot be maintained. It's an intensly complicated finely tuned morasse of code that nobody can modify.

    So at that point you either concede defeat and abandon the product, or hope you have enough inertia in the market that you can rebuild something based on it.

    Hire people on to meditate on the code enough to grok it and extend it, you say? That'll take just as long if not longer, and you'll be at the mercy of a couple of primadonna asshole programmers who know they have your company by the balls. Not an option.

    Been there, done that.

  277. System Encapsulation by btakita · · Score: 1

    Maybe this has already been mentioned, but why dont you just encapsulate the environments.

    If an application works using Perl 5, then dont migrate it to Perl 6!! Encapsulate it and access it as a seperate process or web service.

    An application works with Apache 1.x, but you want to start using Apache 2.x. Well, run Apache 1.x on one machine, and 2.x on another and access the 1.x app through web services.

    Companies still run code from the 1960s on mainframes. They're not "forced" to upgrade. There is still a demand for COBOL programmers.

    Maybe I didn't RTFA well enough, but if Neil Gunton did more homework, he would find that we have been using the solution all along.

  278. Mod Parent Up by sankeld · · Score: 0

    +1 Humble

  279. Joel on Software... by burns210 · · Score: 1

    Joel on Software has an excelent article which is worth a read and is exactly on this topic(but written a couple years ago)...

  280. mozilla? hah. by Splork · · Score: 1

    you go on and continue using netscape 4.x then...

  281. interesting topic but badly chosen examples .... by s0m3body · · Score: 0

    tcp/ip sometimes does not work at all
    yeah ... all internet uses are used to the fact that sometimes they have to restart their download or hit F5 to reload the page, etc ...
    but it does not mean that it is 'good enough' .. it only means that it is 'better then nothing'

    as for the address range ... yes of course, fancy stuff like NAT can route the packets, but takes the interconnectivity out - you can't connecto from everywhere to everywhere anymore
    yout local NAT is your god ...

    apache - have you ever tried to write an application using more then one thread ? do you know what it is all about ? to get all the threads working together rather then slowing down each other ? probably not, otherwise you would not say something like: 'Couldn't we have instead built on the existing code, which by now is extremely robust (if a little messy)...'

    perl - who suggest you to use perl 6 ? noone
    so how you can be so cheeky and try to suggest to all those people having their fun with that development that they should do something 'more useful in your eyes' and continue development on perl 5 ?

    'Browsing the Web is browsing the web, and it's pretty much the same for me now as it was back in 1998.' -> don't be so selfish and put the question differently:
    is the browsing the web for WEB BROWSER the same things as in 1998 ? NOT ! now it has to handle all the fancy stuff which wasn't being really used THAT time ......

    case 7 -> windows xp is only extension/bugfix/upgrade of windows 2000

    if you want to talk about windows and rewrites - WHY they have written windows NT ? why couldn't they build SERVER operating system based on WINDOWS 3.11 or WIN95 ????

  282. There is no excuse! by Ayanami+Rei · · Score: 1


    There is sort of a benefit to having output plugins...

    --
    THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
  283. Re:PARENT IS A COPIED POST by PhxBlue · · Score: 1

    Yeah, pretty much. But I'm in the military, so I'm definitely used to that. :)

    --
    !#@%*)anks for hanging up the phone, dear.
  284. They don't code 'em like they use to. by Anonymous Coward · · Score: 0

    Maybe we need rewrites is because our code is so brittle. Brittle in spec, brittle in design, brittle in implimentation. Present day code is designed with the same thinking that gave us bottom-dollar hardware, and the attendent problems. Just what's needed (and sometimes not even that) and no more. Our hardware use to last long times, and some of our code have that same quality. But few. More intelligent design, and careful thinking would go a long way to reducing the amount of rewriting needed.

  285. Large and small projects by CreateWindowEx · · Score: 2, Insightful
    I think this discussion is being clouded because people have experience with different-sized projects. If you are working on some fairly small tool which has a well-defined usage, it may be reasonable to rewrite the whole thing from scratch, partly because it is possible to test it fairly thoroughly yourself to verify your new version, and because it is possible to understand the whole thing in your head at one time, and thus make the decision to rewrite rationally.

    However, if you're talking about a larger project such as a commercial software application with 50 man-years of development, a complete rewrite will usually be undertaken with a large degree of ignorance of the true problem domain. Also, you can rewrite your codebase to fit more nicely with the *current* state of your specs and requirements, but the new "elegent" design may be even less suitable to tomorrow's new feature request. Even rewriting a major subsystem from scratch can be a costly mistake.

    The real trick is how to maintain the code in such a way that it continuously improves instead of just getting more and more riddled with spaghetti, dead code paths, and other clutter. It's especially hard, because it's easy to forget to treat a mature code base with respect, and just hack in "one more" thing because you are hoping to rewrite it at some point.

    There is the "broken window" idea--one broken window will lead to an increasing spiral of vandalism, and one line of crud in a source file will give future programmers the feeling that they can add ten more lines of crud because the code is already "dirty". While the usual adage is to clean up the window immediately, the reality is that most source files have one hundred broken windows already and fixing them all right now is not an option. What takes discipline is to make sure to leave each file in a better condition than you left it--remove some dead code, do a little refactoring to clean it up, rename identifiers or reformat code to conform with project-wide standards (NOT your personal pet style!!! This is very annoying when people check out a file, reformat it to their own preference, add one small feature, break some other part of the code, and check it back in to source control...). Another common problem is when people come up with some "new religion", convert about half the code over to the new way, but leaving it in a "worst of both worlds" state because it turns out the "new way" was just "different" and added as many problems as it solved. It is easy to add code that goes against the grain of the existing code because you didn't bother to really understand the system and structure of the code, or because you don't "like" a certain design decision.

    In many ways, the real achievement is that higher mental state where you stare at the huge, messy codebase that you've been working with for ages, have the "aha" moment, come up with a simple refactoring, make changes to fifty files, replace hundreds of lines of code with tens of lines, and it just works the first time and only takes a few hours, because for one fleeting instant, you had the whole thing in your head at once. I wish I could have more of those moments.

    I'm as guilty as any for violating these ideas--I often keep my nice clean "new" subsystems tidy because they are already tidy and conform to my current design philosophies/religion, but let my big, mature--and often more imporant--subsystems grow increasingly crudified because I have the continuing fantasy that I will be rewriting them from scratch "next project"...

  286. Prepare to throw one away by Latent+Heat · · Score: 1

    Yeah, so Brooks tells us "prepare to throw one away", that your first system is a prototype that gets scrapped when you do the real system. But then he says people get cocky that they know how to live life over and not make the same mistakes the second time around, and second systems are overwrought. Dunno.

    1. Re:Prepare to throw one away by Chunky+Kibbles · · Score: 1

      I see your point. But Brooks is saying a fundamentally different thing. The one you plan to throw away doesn't count.

      The thing is, you make one. You make it badly, but it demonstrates the concepts. Then you throw it away. You make another one, that's functionally like it, but designed with everything you learned from the prototype, that you deliver.

      The second-system effect is when, having looked at that one, you start again and add in everything the first one was missing, that the customer requested, etc... It ends up being offensively over-engineered, bloated, and actually sucks.

      Hope that helps,
      Gary (-;

  287. Re:Design decisions by Prior+Restraint · · Score: 1

    Re. the original post, I think a lot of the problem is caused by bad code commenting. When you make a "little tweak", or fix some minor bug, or fix a subtle logic bug, you should clearly comment in the code what you have done, so that it can serve as a warning when somebody else looks at the code and does not realise the subtlety involved.

    Ain't that the truth. This advice also applies to slap-dash work, too. You know the kind:

    • The code was supposed to be frozen a week ago.
    • There are still at least a dozen "show-stopper" bugs.
    • Jobs have been threatened. Director's jobs.
    • Since shit rolls downhill, everyone within fifty yards of the code repository is conscripted to work 12x7 for the next three weeks, regardless of whatever he or she was once working on (cancellation of vacation time goes without saying).

    Hacks are inevitable. The least one can do is take a minute to include a little note explaining just what you were thinking. Also, deleting the existing comment which no longer applies would be nice.

    There have been times when my hacks have been so frightful, so horridly brittle, that my explanatory comments conclude with an apology to whichever poor sap gets the responsibility of maintaining it.

  288. Re:speaking of IPv6 vs IPv4 by Anonymous Coward · · Score: 0

    I think some assinine admins would respond to your VoIP and desktop as web server arguments as being ignorant. Remember the BOFHs have little interest in YOU admining your own box. It's much better for them if they restrict what you can do because then they have fewer liabilties. Largely this is because they are a lazy lot.

  289. Time = $ by Anonymous Coward · · Score: 0

    Do what you got to do in a limited time frame.

    If you have the time, maybe a rewrite is appropriate. You would do this for things like the Mars Rover, But for Time-To-Market and budget concerns, you often have to release what you have.
    Later on, as time permits, you release patches and fixes, or make recalls.

    Heck, it will never be "Perfect". There will always be something wrong. That's where you get into version numbers and law suits. If it works good for a while, it is a success. If it fails, blame somebody else.

    Regards,

  290. reinventing the wheel is common amongst hackers by garbagedisposal · · Score: 1

    I worked as a programmer myself & I was constantly amazed at how majority of code hackers will waste enormous amounts of time writing code to solve a problem that has already been solved.

    This is one of the pifalls of development facing a vigilant manager.

  291. Netscape 4.7 vs. Mozilla by Zog+The+Undeniable · · Score: 1

    Q.E.D.

    --
    When I am king, you will be first against the wall.
  292. Damn wrong by musicmaster · · Score: 1

    HTML was not intended to describe the look of a page. So what? It was used for that and it did the job pretty well. There are many things in the world that are used in other ways as the original design.

    The basic function of stylesheets is the same as what you are using constants for in a program: replacing duplicates with a central copy. But in programming no one would use constants if there is no problem with duplicates.

    Compare this with the font problem. There is no reason why <font> and <style font=> couldn't be synonymes. It would make the browser simpler, it would provide backward compatibility, it would make (X)html files simpler and shorter. One could go on: there is no reason why the syntax of a stylesheet is so different from HTML.

    XHTML/CSS is for me a very complicated way to solve a very simple problem.

    1. Re:Damn wrong by Trejkaz · · Score: 1

      No, the function of stylesheets is to separate the web development from the web design. It stops the web developer having to think about graphics, and stops the graphic designer having to think about code. This is of course a further abstraction from simply using JSP or some kind of templating language.

      Even if you only use a piece of style once in your entire site, what if you want to change the appearance of your site? Go ahead, edit every single page, sucker. Or at least search every single page for the particular piece of style which is causing the problem.

      If you want a <font> tag badly enough, we are talking about XHTML, you know. The X means "eXtensible", and you can add whatever tags you want. Why not add an <x:font> tag if you love it so much? There's nothing stopping you.

      Also, backwards compatibility is already there. All a browser needs for backwards compatibility is a default stylesheet for each version of (X)HTML, and Mozilla already does this, right? Mozilla renders HTML 4.0 and even extremely old HTML 3.2 correctly still: you can still read Slashdot, right? Only designers and developers bright enough to understand what XHTML+CSS is solving, will tend to use it instead.

      XHTML/CSS is for me a much simpler way to solve the problem than adding extra font tags which aren't necessary and are guaranteed to break the separation of semantics and presentation.

      If I need a piece of text which is red, and it's say... a program error, then I would tag it with <span class="error">. It's not rocket science. Further down the track when I decide they should be orange instead, I know that it is in style.css, because everything is in style.css.

      This also enables the feature in Mozilla where you can choose the stylesheet at runtime. Personally I would kill for this feature on Slashdot, but unfortunately Slashdot chose to use HTML 3.2 without CSS, and thus can't use this incredibly neat feature.

      And of course for the people who are too narrow-minded to see the advantages of XHTML, they can keep using HTML 4.0 and their pages will just be as retro as Slashdot's.

      --
      Karma: It's all a bunch of tree-huggin' hippy crap!
  293. This is the "second version" effect by Anonymous Coward · · Score: 0

    This is the "second version" effect that is described in the classical book The Mythical Man-Month by Fred Brooks.

  294. Not exactly by Ryosen · · Score: 1

    Using Set from the cmd line will only change the environment value for the duration of the cmd line session and will not propagate to the entire operating system as a whole. It is only good for that session and within that session.

    Also, the ctrl+break combination is incorrect. It's the Windows key + Break.

    Lastly, environment variables shouldn't be changed all that often. So, from a user interface view, they don't need to be readily accessible. If you know of a case where they do need to be changed frequently on a system level, I would be interested to know about it.

    --

    Ryosen
    One man's "Troll, +1" is another man's "Insightful, +1".
    1. Re:Not exactly by Gherald · · Score: 1

      I agree with your last point, Windows has little use for environmental variables. Its mostly just for compatability with older programs that do not use the registry.

      There is a seperate utility called setx.exe that you can get from Microsoft's site that changes env. variables permanently.

  295. Galeon most usable by mccrew · · Score: 1
    I think you help to prove my point. You are correct that certain tabbrowser extensions exist.

    However, they are nowhere near the level of usability and simplicity found in Galeon for the following reasons:

    • They are not part of a stock installation, and therefore require a fairly hardcore geek to even know about them (I consider myself a very hardcore geek, and I was not even aware of these extensions). Therefore, to a "normal" non-technical user, these extensions do not exist.
    • To close a tab you have to pull down a menu and select close. Contrast this with a small X right on the tab in Galeon. One click, goodbye. No pulldowns. No problems.
    • Too many features - "close all tabs to the right of this one", "close all other tabs", etc. Too many "noise" choices cluttering up the overwhelmingly common use case.
    Don't get me wrong. I come not to "dis" Tabbrowser Extensions, only to point out how Galeon really gets the common use case right. That said, I do intend to check these extensions out. Might make Mozilla tabs more bearable.
    --
    Hey, Windows users, there is no such thing as "forward" slash, there is only slash and backslash.
    1. Re:Galeon most usable by kubrick · · Score: 1

      To close a tab you have to pull down a menu and select close.

      You must have missed the screenshot with the close-button on the tab.

      You're right, TE is overkill, but I wanted to refute that particular point. For me, the Adblock extension is the reason I wouldn't give up Firebird, but Galeon is a very usable browser nonetheless.

      --
      deus does not exist but if he does
  296. ipv6 by peter · · Score: 1

    Say what? It's not like there haven't been hundreds of new features added in to ipv4 (e.g. slow start, SACK, window scaling, timestamps, ECN, etc. etc.) before they had to just bite the bullet and make a non-backward-compatible change. Once you're making one, you should make all the ones you'll need for a long time in the future, which is what ipv6 does (assuming they didn't miss anything...).

    BTW, a good analogy for the address space problem is street numbers for houses. Sure there are lots of unused numbers, but most of them are between two existing buildings where there isn't room to put new buildings. (IP addresses have this problem because routing works based on nets and subnets, so routers don't have to know a separate route for every different host.)

    --
    #define X(x,y) x##y
    Peter Cordes ; e-mail: X(peter@cordes , .ca)
  297. Definition of Refactoring by JumperCable · · Score: 1
    In case anyone else is just as clueless about what the heck refactoring is as I was here is the definition:

    "Definition & Example of Refactoring"

    • From above website (definitely worth the read):

      • Refactoring?
        In his book, Martin Fowler defines Refactoring as "the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure." In other words, you clean up your code but don't change what it does.

        Refactoring can be as simple as changing this code:

        $exclamation = 'I like '.$pastry.'!';


        To this:

        $exclamation = "I like $pastry!";


        Still does the same thing, but it's easier to read.

        It's important to note that I don't need to know anything about the contents of $pastry or how $exclamation is used. The change is completely self-contained and does not affect surrounding code or change what it does. This is Refactoring.
  298. Evolutionist and Revolutionist by Anonymous Coward · · Score: 0

    That a reheat of the old evolutionist vs revolutionist issues : see http://incubator.apache.org/learn/rules-for-revolu tionaries.html

    All those example would have been great if they have follow the proper rules for revolution instead of declaring them the next version.