Spolsky Stands Firm on Linux on the Desktop 304
erlando writes: "SoftwareMarketSolution is running an interview with Joel Spolsky (from JoelOnSoftware) in which he responds to this earlier thread here on Slashdot. In short: He defends his position and makes some interesting remarks on Linux and the desktop."
Justifying his earlier statement (Score:5, Insightful)
JOEL:It may be true for the software that Eick evaluated. It's not true for the software that I've written, because I tend to refactor and clean things up regularly.
His argument is that code doesn't rust however he argues it by saying that he "refactors and cleans things up regularly". Perhaps he needs to think about that one a little more.
Re:Justifying his earlier statement (Score:3, Insightful)
Of course, he gets around that one too, stating that if it costs more to add features to the current code than it does to rewrite it, then rewrite it. I've seen designs so bad that it's literally more cost effective to scrap them and start from scratch.
He also says that it would make more sense to have a new (and competent) programming team refactor Outlook rather than have the existing one rewrite it from scratch because the existing Outlook team sucks. That actually makes a bit of sense if you think about it. He doesn't go into how much the new team might have to "refactor" Outlook. Anyone want to make a guess?
Design is more important (Score:2)
I agree that what he suggests is XP-like, but it doesn't require pair programming. You can't make a 3 story house of cards into a full-sized brick house, no matter how hard you try - design is paramount to refactoring.
I think people get confused when they read about XP and think design is ignored and everything is done "as you go". It's definitely not! You still have to keep in mind where you are going, even though you are only implementing for the present. Not only does that enable you to refactor, but also cuts down the refactoring time itself.
Joel's code is inherently refactorable because he's used to writing like that - and used to refactoring. What Joel hasn't said is that you have to purposely make your code easily refactorable from the outset, otherwise you'll spend your whole life refactoring from one feature to another.
So take your hideous house of cards into the middle of the street and shoot it if you have to. Refactoring may just be a waste of your time if the design is not easily refactorable.
refactorable? (Score:2)
* Good Cohesion
* Low Coupling
* No Duplication
It seems to me that the point of refactoring is often to make the code be this way. I don't think code has to already be good to refactor it, though mediocre code is clearly easier to work with than terrible code.
Re:refactorable? (Score:2)
* Good Cohesion
* Low Coupling
* No Duplication
Refactorable really means keeping your code in a state that allows it to be cheaply and quickly refactored. If you have to spend hours and hours to refactor you code, it's not worth it - it might be cheaper to rewrite it. If you consciously write your code so that it can be played with (ie. it's readable, consistent), you will have better luck.
Re:Justifying his earlier statement (Score:5, Insightful)
Re:Justifying his earlier statement (Score:2)
Re:Justifying his earlier statement (Score:5, Insightful)
There's two stances you can take: (1) This is is a bloody mess, let's rewrite. (2) This thing is a bloody mess, let's see if we can't fix it.
If you look for ways to fix things, then you will find them more often than if you don't look for a way to fix them. The problem is what happens when consistently find your fixes don't fix, or break new things? I don't think there should be a general rule that thou shalt never rewrite, but that you should look sincerely and hard at fixing before you rewrite.
Re:Justifying his earlier statement (Score:2, Insightful)
Rewriting means starting from scratch. Refactoring means doing things like analyzing existing code using code profilers and such to find weak spots or by accepting bug reports, then going into the routines that cause those bugs or weaknesses and looking for ways to improve the existing code. Maybe adding new features carefully.
Your hypothetical situation is simply too general and detached to draw conclusions from an analysis thereof. But offhand I'd say yes, much better. That's five years of finding bugs and squashing them, five years of tuning slow routines and bottlenecks, five years of security testing, and five years of usability tweaks. If you can provide all of that in just one year of development from scratch, you are a better programmer than most.
If found this quote funny: (Score:3, Interesting)
I was in a company that was run by technical people, but when the company ran into financial trouble, decided to become more "market oriented".
They hired a bunch of professional executives, marketing people, etc. Marketing was put in charge of determining product direction, as they knew what the customer wanted.
Well it turned out that the technical people were in fact smarter than the marketing and PR guys, who seemed to think that software could be created by committees and meetings and lots of vision. The company sank like a rock."
(S)He blames the downfall of the company on the marketing people, and yet had stated earlier that they were already in trouble anyway. Sounds to me like the company was doomed irrespective of the marketdroids.
He know us... (Score:5, Funny)
slashdotters are not exactly famous for reading the things they are commenting on
Oh well...
WINE-Win95 (Score:4, Insightful)
The Point Is... (Score:2, Insightful)
He's not saying that there are a ton of people out there using unmodified Win95, just that the vast majority of Windows programmers program with that possibility in mind.
No MS support, no USB (Score:3, Informative)
Two things about Win95:
1. Microsoft no longer supports Windows 95.
2. USB is not natively supported in the early versions of Win95 (and later versions are spotty, they get it right by Win98).
So on that level, Joel's arguments are flawed. Less and less people will be testing on Win95 because MS doesn't support it any more. The WIN baseline now starts at Win98.
Another thing: if you DO use Win95, do you test the off-the-CD version or the highly patched (practically Windows 98) version? Grey grey grey area, Joel.
Re:No Grey (Score:2)
Re:WINE-Win95 (Score:2)
That's true for the typical end-user mass-market software you're probably thinking about, e.g. office applications. But for the most part, this software is already available on Linux anyway as native applications, so there isn't any real need for WINE. Sure, having the Windows apps work on WINE would make the transition to Linux much easier for a lot of people because the software would be exactly the same, but it isn't really essential.
There are, however, also thousands of custom-developed applications out there that have been written for a niche market or even just a single customer. A hell lot of these applications will work with an unmodified version of Windows 95 (or Windows NT 4.0), simply because they tend to get updated less often and the updates tend to be small enhancements in functionality rather than a complete rewrite of the GUI just because using an Explorer-like toolbar would be cool.
If this software doesn't run on Linux, many small and medium businesses don't even have the chance to run Linux without previously spending thousands of dollars to have their software rewritten.
Re:WINE-Win95 (Score:2)
Re:WINE-Win95 (Score:3, Insightful)
...and Windows is the desktop OS standard. By your reasoning, you would need Windows anyway.
But it is very possible to not use the standard tools and still communicate with the rest of the world. The real issue with MS Office is not running the actual applications on Linux, it is (as you've correctly pointed out) to access the data. Of course, Linux applications must be able to at least read MS Office files. For sending documents to someone else, you can use standard formats like PDF. Obviously, this would require some user training, but I believe that it is possible for a company to run Linux on the desktop if they want.
The non-availability of MS Office on Linux certainly is a problem, but I believe custom-built applications are a larger problem, and anyway the problem cannot be solved by playing catch-up with the Windows API.
Re:WINE-Win95 (Score:2)
I found him to be talking in circles. He talks about not rewriting software from the ground up in the original interview, and then he mentions he always rewrites his code? Ok, so translated, he doesn't rewrite software from from the ground up--he rewrites software from the second floor up!
Re:What API changes? (Score:3, Informative)
IE5
Windows Media Player
Windows Installer
Active Directory
All of these modify, or extend the Win32 API under Win95 when installed.
Re:What API changes? (Score:2)
Re:What API changes? (Score:2)
I'm basing my statement solely on the fact that there's a ton of updates for Windows since 95. Often these updates affect core OS functions. Also, every time you install a new version of a Microsoft app, such as Office or Internet Explorer, you're in reality updating half of your operating system (Win98 w/ windowsupdates applied dilligently, Office2k and Explorer 5.5 is basically the same thing as WinME, for example). Then there's DirectX, that isn't a part of vanilla Win95. Without a recent version of it, your games won't run (mostly). Finally, though I admit I'm threading on developer territory here where maybe I shouldn't (flame away), I know MFCxx.DLL has seen a few updates, almost every Windows app depends on this DLL and recent ones (those that were made with VisualStudio 6, say) depend on the latest version of it being present. There's probably quite a few people here who can shed light on exactly how fundamental the latest changes in this API library are. As a Windows user, I can only attest to the fact that nearly every app you install will make sure 4.2 is present. Since this DLL provides a lot of the core functions of Windows, this alone means that the WINE developers can't just aim for Win95 compatibility and leave it at that.
My point is that there is no such thing as 'vanilla Windows 95' in use today (except on a, I imagine, very limited number of glorified typewriters that run nothing more recent than Office 95 or whatever it's called). I *seriously* doubt that what this guy says is true, about developers making sure their apps will run on 'vanilla Windows 95'. I, for one, can't think of a single app that does.
Re:WINE-Win95 (Score:2)
Re:WINE-Win95 (Score:2)
Re:WINE-Win95 (Score:2)
Re:I believe his point was that (Score:2)
Show us the Code (Score:4, Interesting)
Given that he worked for MS, not very likely (Score:2, Insightful)
The Tao of Programming (Score:4, Insightful)
A well-used door needs no oil on its hinges.
A swift-flowing stream does not grow stagnant.
Neither sound nor thoughts can travel through a vacuum.
Software rots if not used.
These are great mysteries.
Re:The Tao of Programming (Score:3, Insightful)
"Though a program be but three lines long, someday it will have to be maintained."
I guess most of you will know what happens to your room when you always move things around and add things, but never clean up...
Now there's the reason code rots. Old code tens to be changed and have things added, but hardly ever gets a clean-up. That way the design is lost, the code gets bigger and bigger and easily becomes buggy. This makes changing code harder over time. Most if the time this goes on until there is no one left that understands how it works and it has become to hard to find out, compared to a complete rewrite.
Joel states: "Half the time when I go into a function to fix a little bug, I figure out a cleaner way to rewrite the whole function, so over time it gets better and better."
And he makes a good point there, maintaining code should be more than just changing and adding things, it should involve clean-ups to prevent rotting of your codebase. But cleaning up is way easier if your the only one using the code, and in a company there is always the pressure of deadlines and marketing.
And of course it's just more fun to write somthing new...
Its teamwork (Score:2, Insightful)
Take any game like hockey or basketball, many teams have exceptional players but they don't win championships. Those that do play with teamwork on their minds that's why whey get to win.
Blaming marketing or second-rate programmers is not the way to go it should be a team effort wo win because not many games are played solo like tennis or golf. Even those games require seconds that provide valuable support to the player.
Bloatware does cost (Score:2, Insightful)
"Bloatware isn't actually costing you anything"!? How about more time to load your application and a significantly higher probability of it crashing as the code becomes more bloated and less maintainable?
There is a gigantic chasm of a difference between "bloatware" of information, and bloatware of software features.
Re:Bloatware does cost (Score:3, Insightful)
On Windows & Linux (I believe, not certain) pages are being faulted to memory, so if you've a part of the executable that you don't touch, then it's simply not being brought to memory.
If you've a 100MB exe, but you only use 1MB of code from it, then it will use only 1MB.
As for the other reason, any big enough project is being cut to pieces, on Windows, it's usually COM objects, meaning that it's fairly easy to dissect the parts that gives you trouble.
Beside, if you don't use something, it can't crash your program.
Re:Bloatware does cost (Score:2)
Re:Bloatware does cost (Score:2)
doesn't like "ground-up rewrites," but - (Score:5, Insightful)
This is easier to do when it's just his code, versus a large set that more than one person maintaining it over a decade (like the evaluated software that was foudn to 'decay').
Also, Joel stated that the problems with Outlook were with "1%" of the code, but that is not the point. The slashdot comment was not commenting on the quality of Outlook's code, but on the flaws inherent in the design of the application (such as executing untrusted software and not following mime type information when passing data to the OS). I think that the post was talking about a redesign, which would mean a rewrite, and Joel dodged that one (or just didn't understand it). Fixing bugs in good features is different from tossing bad features.
Re:doesn't like "ground-up rewrites," but - (Score:2, Insightful)
5000 parts per million (0.5%) of lead in your water is a lot.
It only takes one bad line of code to crash everything.
Who does this guy think he is kidding with this 1% figure?
Re:doesn't like "ground-up rewrites," but - (Score:2)
As for a redesign, it's a totally different thing than re-writing.
Re-design mean that you change the way that the product works, but you get to keep a lot of the old code, because you keep the code in a working order *all the time*.
Re-writing means that you start from zero, so you don't have a working product until you are done, see NS for the results of such a thing.
Re:doesn't like "ground-up rewrites," but - (Score:3, Informative)
Outlook has a problem with attachments to email, which is probably actually less than 1% of the codebase of the product. Therefore he is right, and saying that rewriting everything in the program is the only way to fix it is wrong. Sure, let's redo the spellchecker, the datetime picker for the calendar, the user interface components - ONLY by rewriting all of those things will Outlook be secure!
It only takes one bad line of code to crash everything.
Yes, thanks. So should the solution be to rewrite that one line or the whole app? Hmmmmmm
No. (Score:2)
A rewrite is not necessary, it's already fixed. However, there are still people believing that we're living in 1996 or something and that nothing has changed.
Re:No. (Score:2)
Re:doesn't like "ground-up rewrites," but - (Score:2)
Therefore his contention is that code does not erode if it is documented and well done the first time. Now this might be idealistic, but I think I agree with this overall assumption - good code should be good now and later, and should not necessitate a rewrite in most cases that might be advocated by someone who won't take the trouble to figure out its function.
Re:doesn't like "ground-up rewrites," but - (Score:3, Interesting)
They've already fixed the design issues by refactoring, it's time to get past that and start thinking about new things to whine about.
Re:doesn't like "ground-up rewrites," but - (Score:2, Insightful)
Joel (Score:2)
Slashdot and the art of Summarization (Score:2)
WHAT IS HIS POSITION?
I realize links are provided that can be scrutinized to determine this, but there is a reason a space for 'story summary' is provided...
Re:Slashdot and the art of Summarization (Score:2)
I never contradict myself ... well sometimes I do (Score:2, Flamebait)
"Half the time when I go into a function to fix a little bug, I figure out a cleaner way to rewrite the whole function, so over time it gets better and better. "
So it's not that his code rots with time
Sounds like he could save quite a bit of time and maintanence nightmare if he just invested the effort to write it well the first time. It may sound negative, but this guy is a constant wealth of contradictions. He doesn't advocate re-writes of the product, but 'half the time' re-writes functions? Doesn't he know that the function *is* a product?
Re:I never contradict myself ... well sometimes I (Score:2, Informative)
You people seem to be going out of your way to miss Joel's point on this.
Routine code maintenance (ie, refactoring code, adding small improvements, etc.) is a standard part of the development cycle that every good software team follows. Doing so does not mean that the product wasn't written well the first time. (You Linux people should know that better than any of us, but I digress...)
Code maintenance is not the same thing as a complete code rewrite, which is what Joel is arguing against. Incidentally, lack of proper code maintenance over time will likely result in the unwieldy mess that Stephen Eick describes.
So does code rust? Of course not. Does poorly-developed, unmaintained code rust? Maybe, but that still doesn't mean that everything should be rewritten from scratch.
Re:I never contradict myself ... well sometimes I (Score:3, Insightful)
Yes, software development would be a breeze if we could write perfect code the first time.
Re:I never contradict myself ... well sometimes I (Score:2)
This is counter to the XP get-it-out-the-door-with-the-minimum-amount-of-wo
Having minimally implemented functions also lets you have an almost-always exectuable codebase, which is important to XP.
When you see that the functionality NEEDS to be extended, you extend it. Not before. You can still make the design before you write in that code for the other 4 features, but holding off from coding and then refactoring them in later incrementally will make your testing and maintaining life a lot easier. Just keep in mind you are going to refactor if you want to make it easier to incorporate them in.
Re:I never contradict myself ... well sometimes I (Score:3, Interesting)
On Costs (Score:3, Insightful)
True, scrapping and re-creating Outlook is certainly not cost-effective for the Microsoft.
Unfortunately the current Outlook mess is not very cost effective for their customers, just hit by the worm-du-jour.
So I guess it just depends from whose perspective you define "cost-effectiveness".
Re:On Costs (Score:2)
Unfortunately the current Outlook mess is not very cost effective for their customers, just hit by the worm-du-jour.
So I guess it just depends from whose perspective you define "cost-effectiveness".
This is a lame argument, for two reasons.
(1) Microsoft released a patch that ultimately fixes 99.9% virus and worm problems in Outlook, by not allow Outlook to have access to any attachments that are executable. It's been available for well over a year now. The same technology is built in to Office XP.
(2) Now that you know the above, you can guess what problem number two is with your argument -- it doesn't matter if Microsoft 'fixes' the problem, either by releasing a patch as they've done, or rewriting Outlook from the ground up. It's still going to take a long time for most people to stop using the versions with huge, gaping security holes.
Linux causes marriage break-ups? (Score:4, Funny)
Non-technical Spouse: "No, honey, the reason I had an affair with the baby-sitter was because you installed Slackware."
Re:Linux causes marriage break-ups? (Score:2)
-russ
Narrow viewpoint (Score:5, Interesting)
For example, I tend to agree that "software doesn't rust". But that holds if your customer is Joe Q Public; it doesn't (usually) hold for enterprises. E.g. his Net Present Value calculation in the article doesn't take into account opportunity cost, i.e. the competitive advantage a company would gain if it upgraded their old F77 program into a faster one, with more mindshare (easier to lure/train IT staff) and more features that would increase productivity and lower costs.
Again, I do usually agree with Joel and read his essays religiously, but I wish he opened his worldview to the rest of the software industry.
Re:Narrow viewpoint (Score:3, Interesting)
Re:Actually it does - sort of. (Score:2)
bloatware (Score:4, Interesting)
One difference is I don't run the entire WWW on my computer.
It's an analogy (Score:2, Insightful)
I don't see how your argument can counter-attack his. Sure, you don't run the www on your computer. But still, you 'run' the www when you browse the internet. Doesn't matter where the features are located, the point is somewhere, somehow, someone might need.
Re:It's an analogy (Score:2)
A better analogy would be the classic Unix approach to software, where I can learn cat and ls without having to learn grep until I need it. Or the kind of stuff happening with Bonobo, etc. The user-interface issue is just as important as the storage issue you refer to, probably more important. Hard disks are getting huge, so for most people the only issues with a big footprint are backups and (for open-source stuff) download times.
Bloat isn't just an end-user issue, either. The MS Word file format is so complex that it makes it hard to work with. For open-source projects, bloat makes a barrier to entry for new programmers.
They Stole A Slashdot Interview! (Score:4, Interesting)
It feels weird unknowingly providing content for a for-profit site I don't (often) visit or care about, but I suppose my comments are public-domain once I've posted them here?
I know it doesn't fit in with the copyleft thing, but shouldn't they at least have to ask before using slashdot content for their own means?
Re:They Stole A Slashdot Interview! (Score:2)
So no, they shouldn't have to ask before using Slashdot content for their own means... if, as in this case, their purpose is to comment on what they quote.
Re:They Stole A Slashdot Interview! (Score:5, Insightful)
Legally, they don't have to do any such thing. What would be nice, however, is an oft-forgotten concept known as Professional Courtesy.
It went out of style sometime between when the entire corporate work-force was made up of white male WWII verterans who wore white shirts and black ties to work (at leats on TV); and the high-ranking executives of companies like LTV Steel in Cleveland taking 17 million dollars in bonuses three weeks before the company filed for bankruptcy, putting three thousand blue-collar steel guys in line for unemployment benefits with no pension of health coverage.
Sorry to be offtopic... yes, it would have been nice for them to ask, but now that professional courtesy is dead, I'd be more surprised if someone DID ask permisson than if they just did whatever the hell they wanted for an almight buck to make sure the CEO gets to buy the "big yacht" this summer.
(And FYI, "Flamebait" does not mean "I disagree with this person." Point down your modpoints for a minute and take the time to write a thoughtful argument. Also, I work for a corporation, and I am critical of corporations. It's not hypocracy, it's called "taking a stand for change from within.")
Re:They Stole A Slashdot Interview! (Score:2)
This gets bizarre when you think about it.
From their point of view, Slashdot is a page with a lot of comments, so quoting a tiny piece of that large page, is certainly fair use.
But "Comments are owned by the poster." From your point of view, they didn't take a tiny fraction of a page -- they took most of a whole comment. Not fair use?
Eww.. what a mess!
IMHO (IANAL, etc) they're right. When you send your stuff to a public viewable website, post it to usenet, etc. you know what you're getting into. And if you don't want a wide-as-possible audience for your words, why are you posting them in a public forum?
do you want to have to.... (Score:2)
I'd like to point out that they are not using slashdot content, they are using written speach.
Do you want to have to ask every time before saying, "So and so said, 'such and such'"?
I didn't think so...
At least I hope not, Gawd!!
Well... (Score:2, Informative)
You have what I would call a superiority complex. I would say that is completely normal for a technically inclined or computer competant person. One thing you dont have, which is quite evident in your last statement, is a simple respect for your peers.
Now, I may not directly consider you a peer, for the simple fact that we differ on a number of simple comparitive issues. You are stuck in the past. Since you will most definitely ask for some type of proof of this, allow me to explain.
In your responce to the question regarding the recode of a fortran program, you responded:
Do you hold on to an old 286, even though it could easily crash purely because of its old-hardware, just because it works? Do you hold on to a 1982 Toyota Corolla, just because it works? No. For the safety of you data, and for the safty of your family, you go and get new stuff.
Of course, your responce will be well, programs dont degrade with time. I say they do. Allow me to elaborate once again.
I've worked on a number of programming projects. One of which works perfectly, but we are still planning a complete rewrite of. For a matter of context, I'll involve the name. The Bahamut IRCd [dal.net] happens to be presently supporting over 130,000 simultanious connections between about 30 servers. It will probably be quite good until well over 200,000 connections. But we're rewriting it anyway. Because we've learned one thing the hard way. Dont wait for problems to come to you. Just because your software works fine with 10,000 users, doesnt mean its going to scale to 11,000 users.
Programming in *any* arena is not cut and dry. Programs are *never* "perfect", as you as a software developer should know. If you've worked on any project of any reasonable size, then you realize that there is a point where picking through old code to improve software isnt worth your time, and you can simply rewrite the whole damn thing to do what you want and accually have spent less time doing it.
Re:Well... (Score:4, Insightful)
However, I think everyone here is taking what Joel is saying GROSSLY out of proportion : There are two poles in software rewriting -> Those who approach every issue with a "we have to rewrite this piece of crap" (these programmers are common and have cost companies billions in cost overruns. "Hey Jim I noticed on that report that it's cutting off the interest rate at 5 characters : Do you think you could increase that to 6?". Then, six days later Jim replies "Oh man, I looked at that code and it's horrible! I'm going to develop a mega new reporting engine in C# that'll use an XML subsystem". Three years later the six character interest rate still isn't there. Again this is common because many programmers do not have checks and balances, and it's much more heroic and personal to rewrite the whole thing and lay a grand claim to fame than to just do a quick fix isn't it? On the other end of the pole are those who treat all code as sacrosanct : From what I've read Joel is not one of these people. Exactly as he stated (which many people jumped on as hypocrisy where there is none): He is an advocate of refactoring, which as a philosophy is entirely unlike rewriting.
Let me put it another way: Every now and then I watch one of those HGTV shows where they remodel a home, and sometime I am stunned because in the end they've replaced virtually the entire house, so naturally my question is "Well why didn't they just bulldoze the original house and start from scratch?", but obviously there were benefits to going on the existing infrastructure. This fundamental holds significantly more true in software engineering (hehe, I use that term just to bother the PEs out there) because as a discipline it is far more "artistic" and far less defined than home construction. Why, then, are so many people so willing to rebuild from scratch with no proof of improvement? I can't make comments on your specific project, but in the grand tradition of program rewrites, you'll complete it and find that now you can handle 210,000 connections, so you'll just have to rewrite it again...
He replied to the wrong argument (Score:3, Insightful)
Joel's reply (paraphrased) consisted of, "Well, perhaps for *that* study. But *my* code doesn't rot. I'm constantly refactoring it!" So he claims the study doesn't apply to his software, because he's constantly refactoring his code.
He needs either to read the questions before answering them, or get struck repeatedly with a Very Large Cluestick.
Re:Well... (Score:2)
This is merely a clash of values. Safety is the key value in your example. In the more general case, most Slashdotters are .. uh .. romantic fools and just want maximum quality. ;-)
This dude just has one value: maximum profit. He's not talking about how to make the best programs; he's talking about how to manage a business. He's a computer industry Darwinist, and when you look at Microsoft vs WordPerfect et al, profit really is the metric for selection.
Note that I said computer industry, not the overall bigger picture or the (to steal from Knuth) The Art of Computer Programming. He sees a piece. You see a piece. Maybe everyone's got a blind spot.
WINE will save Linux for the desktop? (Score:5, Insightful)
I spot a flaw in my analogy, which is that OS/2 was a commercial competitor, while Linux is "free" and therefore more attractive.
hyacinthus.
Re:WINE will save Linux for the desktop? (Score:3, Insightful)
This, along with several other foul-ups, resulted in OS/2 being the inferior platform.
Re:WINE will save Linux for the desktop? (Score:3, Interesting)
These apps vary widely in both quality and support for current technology. We still have vendors successfully selling Btreive and NetBIOS based apps to our business units, for Pete's sake! I know of at least one case where we're still running Win 3.1 on about 100 desktops to support one of these ancient apps.
Why do the vendors get away with it? Frequently, the vendor is the only one, or one of two or three vendors, in a very small niche market. In other cases, the business unit failed to do a proper search of the market for choices, and/or they also failed to ask for help from the tech guys early in the product evaluation process. We too often find out about these problem apps AFTER the business unit has already signed a contract. Fortunately, that's very slowly changing for the better.
So, where does that leave us? Well, if we want to quit paying the Microsoft tax on the desktop, we absolutely need WINE. Otherwise, we're stuck. A good portion of the business world is in the same boat.
Home desktops, by contrast, could probably be cut over to Linux fairly painlessly if; a) people could sync their PDA of choice to the mail and calendar package of choice and b) the bulk of their favorite Windows games would install and play painlessly.
I have no clue whether anyone has addressed the PDA question fully, because it's not an area I personally care about. Some tweaked variant of WINE like WINEX, or compiled WINE with OpenGL hooks, is necessary to make the latter happen. Even then, I can't call the game install process painless yet.
So yes, while I disagree with a lot that Joel had to say in this interview, I have to reluctantly conclude that he's right on the money concerning his views about Linux on the desktop.
Re:WINE will save Linux for the desktop? (Score:2, Interesting)
Moreover people fail to realized that software isn't the only thing linux needs to be compatible with. Windows is compatible with damn near every piece of hardware produced (though there is usually a lag time for drivers when a new Windows is released). No other OS can really claim this. Wine isn't going to help here, hardware companies need to start caring about other OSes (and either produce their own drivers and release documentation so others can make drivers).
Wrong end of the horse.... (Score:2)
MS does not have a monopoly because of Windows, they have a monopoly in spite of it.
Re:Wrong end of the horse.... (Score:2)
This is an interesting point, and it's one of the reasons that I'm very happy for the progress of products like StarOffice and Mozilla. My dad is a high school teacher, and this year he's updating some technology courses with simple stuff like assignments to create a webpage, write a document, use a spreadsheet. Nothing fancy, but he is finding that OpenOffice (even a 6.0 beta build I think) is working quite acceptably for him. Yes, still more work to do on the import filters, stability and features, but for his needs it works. OpenOffice is also attractive because Sun donated a nice server and a bunch of thin clients to his school this year, but that alone wouldn't be enough to convince him to use it in his classes.
If he can get more than just a few entry-level classes using OpenOffice, then more people can switch seamlessly between the Windows PCs and the unix thin-client lab. Of course, they don't have the expertise or motivation to put linux on PCs, but this definitely lowers the barrier to entry if somebody wants to advocate it down the road.
Now my church is looking for a database package to track members of the congregation, their areas of involvement or interest, elderly people who want to be visited at home or in the hospital etc. Our membership is getting too large for one or even a few people to keep track of everything in their heads. They're looking at custom database software targetted at churches. I'd love to recommend a free (libre) database to them, but I don't know anything that will allow them MS Access-like ability to design the front end to make it usable by volunteers or the church secretary. I certainly don't have the time to provide tech support myself - I'm already very involved in other areas. If the free software community can begin to fill niches like that with cross-platform software, it's going to be a whole lot easier for people like me to evangelize free OS's.
Necessary vs. Sufficient (Score:2)
Check out this page [www.sfu.ca] for more information about necessary and sufficient conditions.
For the record, I take no position about whether running Windows apps is either a necessary or a sufficient condition for the success of Linux on the desktop.
Linux & Marriage (Score:2)
My S.O. is not a computer geek, but is fairly good with computers. She likes working at home on Linux, and complains regularly about MS-Win2k at work. She says, "It won't let me do anything."
Installing Linux hasn't destroyed my marriage. In fact, since I've installed Linux, she's agreed to marry me.
He is correct about WINE (Score:2)
Joel on bloatware (Score:2, Insightful)
> think a product like Microsoft Word would benefit by having every feature that is
> used by 1% or less of the installed base removed from the product?
>
> Joel:
> much stuff out there. Think how much hard drive space is wasted on all kinds of web
> pages that only
> people only go to Yahoo, Ebay, and MSN, wouldn't the WWW be better if it only had
> Yahoo, Ebay, and MSN? It would be much more "optimized."
With Joel from Microsoft at the helm the entire contents of the Internet would reside on a single loooooong web page.
The oposite of MS-Bloatware (TM) is not lack of features. The opposite is UN*X's lean tool approach. Use tools for one function or a small set of tightly related functions. Create a screwdriver to screw screws, a hammer to nail nails. You do not create a Rube Goldberg machine with a flight simulator.
___
Anonymity is freedom!
Typical "elite" programmer hypocrisy (Score:4, Interesting)
Joel thinks that rewriting things is a bad idea because it loses information embedded in the old code (original anti-rewrite essay [joelonsoftware.com], search for "Nancy" to find a good example) and then says in the interview:
This is the same guy who wrote Yet Another Bug Tracking System while observing that such things were a dime a dozen, and then went on to write Yet Another Content Management System without defining its target market, even as he criticized others for such undirected development. Apparently, Joel's quite comfortable stating commandments for others while living by different rules himself. His articles are unfailingly interesting, but should by no means be accepted as authoritative (as is true for anyone who spends more time on the pundit circuit than actually programming)
Lack of attributions? (Score:2)
Yes, Slashdot is a public forum, but posters still retain copyright on their comments, and if they're excerpted and posted in another public publication, attribution, or at least a hyperlink to the original comment in context strikes me as the proper (and legal) thing to do.
Perhaps it was felt that a single link to the thread holding all the comments was sufficient, but I tend to disagree.
Thank you, Joel (Score:5, Insightful)
Instead, I would like to say thank you. Thanks, Joel, for writing about your opinions and experiences, the lessons you learned, what you did wrong. Thanks for taking the time to tell us. It doesn't matter if we agree with you or not. Thanks for trying to help, you centainly help me a lot.
Re:Thank you, Joel (Score:2)
In fact, I don't care. It seems not many people realize how right Joel is in most of what he says. That's because it's difficult to understand some grim realities of software development, particularly about project management, without real experience in a similar setting. I run my own software company, so I fight daily the problems Joel talks about. My clients are corporations, and my software is custom, so my context is not the same as his. Nevertheless, I've failed less often thanks to his advice. I want to give credit when credit is due.
I see that many posts try to point out what Joel does not get right. I know that he is spectacularly right about at least one thing. Why not read about it in his own words [joelonsoftware.com]?
Wow... (Score:2)
He has no clue and just likes to hear himself talk... another name for me to add to my wanna-be from microsoft list.
Please Joel, you make yourself sound less credible with the way you talk.. and please stop interjecting things you make up for shock value, this isn't morning radio.. sane people don't leave their spouse over linux, so stop the shock-jock act.. it just makes more of the community write you off as hack.
Funny stuff here... (Score:3, Insightful)
In other words, his code decays MUCH faster than anyone elses. Glad he doesn't work for me. At "half the time", that means he's costing any project 50% more in his time/dollar worth. Ouch!
Don't even talk to me about spending money replacing something that works.
No, he doesn't replace an application at one time, it does it over a period of time, one function at a time. LOL!
Well, most people with encyclopedias only look up 0.01% of the topics in the encyclopedia. But would you rather have the Encyclopedia Britannica or would you rather have a lightweight brochure containing the top 100 topics?
What? I thought they were asking about optimization and maintaining code that no one used?!?! Perhaps he answered a different question for Reader's Digest and was confused.
The good news is that a lot of stuff I write about UI is starting to have an impact on the Gnome and KDE people. There's a lot more appreciation for the value of good UI than there used to be in the Linux community. Once every open-sourcer has seen their marriage break up by installing Linux on their non-technical spouse's computer, they'll finally understand that, no, most people don't prefer command lines.
Hmmm....and I thought this was a process of evolution simply because neither KDE or GNOME can snap their fingers and have everything under the sky that makes everyone happy. Gosh, it's taken MS how many years and they still don't have it right. Suddenly this is all about you Joe? Ya, I'm sure the face of UI is changed because you're the only one that can understand how computers are used. Oh ya...I forgot...you're the only one with parents that use computers...
Well, I write code every day, and have done so for most of the last 20 years. I think this is pretty self evident if you read what I write on my site, but slashdotters are not exactly famous for reading the things they are commenting on!
Seems I read what you said and I must say, aside from your high opinion of your self, you don't seem to understand much else.
Plan to throw one away, you will anyway. (Score:3, Interesting)
InnoDB doesn't store a count of rows, so select count( * ) from table now takes far, far longer to return a result. Most RDBMs' operate this way, but to a developer who hasn't experienced that before (since MyISAM/Gemini store a count in the table) it would be confusing and not entirely intuitive why this happens. Not only that, but since text/blob/etc. information is stored on the row (instead of off-row like, again, other RDBMs') users of textual data now may find the hard row-size limit of InnoDB a problem when working with large amounts of text data (like it used to be in PostGRES).
Gemini has their own sets of problems, some of which are due to MySQL's horrendous lock-manager (if such a thing exists). When you perform a table scan on a Gemini table, it appears that it will not escalate the table scan to a full table lock but instead dutifully lock each and every row (and it appears that it does not release the lock after it 'passes' the row either, only when the entire result set is dumped). In these sorts of cases, a table lock is far more efficient since you'll save the lock manager of maintaining count( * ) locks for your table. Also, since it is difficult to manage (if at all) the transaction log, deletions or modifications of many rows can cause it to choke on the massive amount of data in order to roll-back the transaction.
Now, I don't want to make this a "I Hate MySQL" post, but I think it illustrates the "Well we can just make these little incremental changes here or there, or maybe make it modular so that we can simply 'hack in' new features whenever we think them up!" fallacy that Joel seems to love to stick by. It hasn't worked for MySQL, and for sufficiently complex applications I don't think it would work there either. There comes a time in which you must say "Well shit, we did it wrong. And all our core functions are locked in the old, broken way of thinking. If we re-do the core functionality, then we can be more competitive, have a better product, etc." Are we asking them to start over from scratch? In most cases I think that would be a bad idea. Obviously the MySQL parsing engine (which determines if SQL statements are valid) is 'good enough'; there's no reason to reinvent the wheel. However their lock manger could use a good overhaul.
Or as Brooks said in The Mythical Man-Month "Plan to throw one away, you will anyway."
Anarchy? (Score:2)
"Our interview was reported on at www.slashdot.org, a lively location on the web dedicated to expounding the joys of Open Source programming, Linux, UNIX, and anarchy (among other things)."
Open Source, Linux and Anarchy? Oh come on! I think we should "kill -9" anyone who believes that. Please share this post with all of your friends.
Not a moving target? (Score:4, Interesting)
Correct me if I'm wrong, but when I install, say, Office 2000 on my Win95 machine, doesn't it update many dll's that were part of the original OS installation? That being the case, is it really true to say that new software runs on Win95, or is it more accurate to say that each new app provides an incremental OS upgrade?
Excellent point (Score:5, Insightful)
Interestingly, Microsoft does NOT allow ISVs to distribute RichEdit 3, nor do they make it available as a simple download from MS.
This creates two classes of application vendor. First class vendors are those named "Microsoft", and they are allowed to target the entire installed base for maximum revenue, upgrading any OS version to *make* it meet minimum requirements.
Second class vendors are all others, and if they need the same thing Office needs, RichEdit 3 for example, they are advised to get their customers to go buy an OS upgrade from MS.
Whether this is "fair" or not isn't my point. MS owns the whole platform. You can have any scraps that they don't want.
If you clone the Win98 API, apps from second-class vendors, everyone other than MS, will probably run fine. The apps from the first-class vendor, Microsoft, probably won't.
I say "Win98" instead of "Win95" because of the large number of vendors who have ceased to support Win95. If they can't upgrade the OS themselves, they either have to give up older OSes or give up some functionality that people are used to having in MS's own apps. Most have chosen to compromise, giving up some market, the Win95 platform for now, as well as the most recent nifty(Win2K+) features. In a couple of years, these vendors will be giving up Win98, too, so WINE *does* have to keep moving.
That's the nature of the platform. There are two "installed bases", a big one for MS and a smaller one for everyone else.
MS has made "3rd party horizontal app" an oxymoron on their platform. If WINE wants to run the most popular (a.k.a. "horizontal") apps, it has to keep up with the latest OS versions. Lotsa luck.
Re:Not a moving target? (Score:2)
Woa, alotta woa.. (Score:2, Insightful)
An I must say, it baffels me anybody want to argue with that guy. He one big contradiction,but i wont even comment on this since i saw a few comments on that subject
already and this really talk for it self:
that once a piece of a program has been debugged and various workarounds added, it represents a repository of stored knowledge and should be left alone
a bit furter down the text we see(as a counter to a argument from a slashdotter):
It's not true for the software that I've written, because I tend to refactor and clean things up regularly.
But why not argue his point with him?Conversation/discussion is a be good, and people tend to learn from it.
Because hes a pain-in-the-***. You ever met one of thiese programmers who made a obvious mistake. But you need to argue 28 minutes with them, begging them to fix it. And they throw alsorts of wierd examples at you, just prolonging getting the job done. Thiese guys dont want constructive input, they just want to be right.
Joel needs to chill out. And stop talking about people that doenst share his views as interlectual inferiors("But not everybody writes code well" , "younger slashdotters" etc).
Learn to have a discussion without creating lame examples to "protect" your own argument. Im thinking about the Encyclopedia example.. Thats the worst B******* ive ever read.
If you buy a encyclopedia, its probertly to access to information about stuff you want to learn more about. Hence the "applications" job is to provide information, having only 100 words would be an incomplete application. The entire purpose of an encyclopedia is to provide you with information you didnt know you needed when you bougth the books.
A wordprocessor application which doensnt feature the newest 20meg office assistent, text taperingtool, access integration etc. couldnt be defined as an incomplete application, just a application with is less rich on features. Bacially the applications can do the same thing, create documents. A 100 word encyclopedia wont do the same job as a full one, so, they cant be compared.
And for the WWW example, again same thing. Information gaterhing. And even the younger of us slashdotters know that what is great about the WWW is that if you are one one the
Simply put, so even the older-softwaremarketsolutions.com-article-authors
A WWW without webpages, or a encyclopedia with 100 words is not comparable to a wordprocessor/emailclient/what-ever-app with out office assistents , 3D logo generater, HTML wizards, Office exporter.
Its more comparable to a wordprocessor with out keyboard support.
Victor Stone comments on Joel Spolsky (Score:4, Funny)
The Baggage Factor [fourstones.net].
- former Microsoft programmer
Extremes are a load of garbage... (Score:2)
However, I live everyday with a badly thought out program married to absolutely bizzare methods for socket and thread support. If the very core of the program is rotten and maintenance costs more than a re-write then by the above author's own admission the project needs re-writing.
I have seen both sides and extremists drive me nuts in all things.
Don't throw out something that works and works well.
Fix the program that works but does not work well.
Re-write the program that does not work, breaks all the time and costs too much to keep in its current state.
This is not freakin' rocket science!
_______________________________________________
He designed KDE?!?! (Score:2)
Umm, since when do the KDE/Gnome people base their UI design on the writings/ramblings of Spolsky? News to me.
Refactoring equivalent in the automotive world... (Score:2)
www.riceboypage.com [riceboypage.com]
Re:I can tell he's a former MS programer (Score:2)
Re:I can tell he's a former MS programer (Score:2)
Well, I guess I'd tell the programmers that I do have that they won't get their next paycheck until they learn FORTRAN and fix the program. It's a pretty straightforward language. With this extra bit of motivation, I'd bet it would be fixed by the next pay period :-).
Re:I can tell he's a former MS programer (Score:2)