Spolsky Stands Firm on Linux on the Desktop
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."
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.
I found this quote (from a Slashdotter) quite funny:
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.
slashdotters are not exactly famous for reading the things they are commenting on
Oh well...
free the mallocs!
I doubt that it will be enough for WINE developers to catch up with Win95. No one uses the out-of-the-box version of Win95 anymore, do they? There's all sorts of updates you need to get your software running and, yes, those updates include additions/changes to the API.
News and bla for computer musicians: http://lomechanik.net/
Joel says he's been programming for 20 years. Is any of his code available for public review? I looked at his web page briefly but nothing jumped out at me.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
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.
free the mallocs!
Joel seems to admire himself for doing just that, as when he talks about why his own code doesn't decay (he keeps freshening it up, you see. In other words, rewriting it over time).
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.
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".
ich bin der musikant
mit taschenrechner in der hand
kraftwerk
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.
Non-technical Spouse: "No, honey, the reason I had an affair with the baby-sitter was because you installed Slackware."
Joel Spolsky makes good points and his articles are usually excellent reading, regardless if you agree with him or not --I usually do. However, I think he over-generalizes his conclusions based on his own experience --selling consumer-oriented, "shrink-wrap" software. He leaves the entire enterprise software world out of his viewpoint and some of his conclusions don't make sense in that sphere.
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.
Or, here's an argument that even the youngest slashdotters will understand. The WWW is bloatware. Finding things is impossible because there's so much stuff out there. Think how much hard drive space is wasted on all kinds of web pages that only .00000000001% of the world ever reads. Since the vast majority of 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."
One difference is I don't run the entire WWW on my computer.
"And like that
Hmm...There's nothing preventing any company out there using slashdot comments as interview material for the entire content of their site, right?
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?
Spolsky asserts that Linux won't be a player in the desktop market until it can run Windows applications. I find this a very puzzling assertion--one I've seen elsewhere. Certainly the case of OS/2 clearly refutes this notion: OS/2 could run Windows applications, could even run them better than Windows itself, but then, why run OS/2 when you could just run Windows, and (more importantly) why _develop_ for OS/2 when by developing for Windows you could cover both bases.
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.
You're preaching just as much as Joel ever does, so I don't really understand why you're accusing him of a superiority complex. If you are bothered that Joel has a platform, realize that it is the result of many brilliantly insightful articles that he has written (that's my opinion, anyways. Especially concering UI matters where it is eye opening and humbling).
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...
Not really.
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.
--
Two witches watched two watches.
Which witch watched which watch?
Joel thinks that rewriting things is a bad idea because it loses information embedded in the old code (original anti-rewrite essay, 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)
Slashdot - News for Herds. Stuff that Splatters.
DirectX
IE5
Windows Media Player
Windows Installer
Active Directory
All of these modify, or extend the Win32 API under Win95 when installed.
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.
Yes, software development would be a breeze if we could write perfect code the first time.
Joel was commenting about a study that indicates that software does "decay." In one old project, a lot files had to be touched for a simple change; then, after what amounts to a "refactoring," changes were more localized. after time, the old situation recurred, in which a lot of files had to be modified for a change.
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.
Microsoft is to software what Budweiser is to beer.
I could rant a bit about how wrong (or right) Joel is about lots of topics, but that would be a little redundant.
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.
What he's saying is 'If I'm working on Foo.bar, and it's got 10 functions, if I'm in function 1, I might notice a better way to do what function 1 does, so I implement it. Better program.' What he's railing against is the huge mass of programmers who would say 'Because function 1 is broken, lets rewrite ALL 10 FUNCTIONS because we can.'
Vintage computer games and RPG books available. Email me if you're interested.
It's not true for the software that I've written, because I tend to refactor and clean things up regularly. 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.
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.
I liken the 'never rewrite' issue to MySQL. Yeah yeah, MySQL is cool and all and we all like it for interesting tasks and whatnot, but there are several glaring, fundamental problems with the database engine (filesystem buffered writes, inability to use more than one index on a query, no clustered indexes, crappy query optimizer etc.). In the spirit of object-oriented design, they said, "Well heck, we'll just allow different table types to be complied in and then we can avoid doing the hard work". In theory, this is interesting, but in practice, it is far less than they had hoped.
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."
Thanks,
--
Matt
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?
Nope, no sig
No one uses the out-of-the-box version of Win95 anymore, do they?
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.
----- rL
The Baggage Factor.
- former Microsoft programmer
Office now requires RichEdit 3.0, version 3 of the *system control* RichEdit. Since Win95 only has RichEdit 1.0 by default, an Office installation has to upgrade the OS -- and it does.
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.
"Those who have never entered upon scientific pursuits know not a tithe of the poetry by which they are surrounded."