Myths Open Source Developers Tell Ourselves
Pages: 1, 2
It's Better to Start from Scratch
Myth: Bad or unappealing code or projects should be thrown away completely.
Reality: Solving the same simple problems again and again wastes time that could be applied to solving new, larger problems.
Writing maintainable code is important. Perhaps it's the most important practice of software development. It's secondary, though, to solving a problem. While you should strive for clean, well-tested, and well-designed code that's reasonably easy to modify as you add features, it's even more important that your code actually works.
Throwing away working code is usually a mistake. This applies to functions and libraries as well as entire programs. Sometimes it seems as if most of the effort in writing open source software goes to creating simple text editors, weblogs, and IRC clients that will never attract more than a handful of users.
Many codebases are hard to read. It's hard to justify throwing away the things the code does well, though. Software isn't physical — it's relatively easy to change, even at the design level. It's not a building, where deciding to build four stories instead of two means digging up the entire foundation and starting over. Chances are, you've already solved several problems that you'd need to rediscover, reconsider, re-code, and re-debug if you threw everything away.
Every new line of code you write has potential bugs. You will spend time debugging them. Though discipline (such as test-driven development, continual code review, and working in small steps) mitigates the effects, they don't compare in effectiveness to working on already-debugged, already-tested, and already-reviewed code.
Too much effort is spent rewriting the simple things and not enough effort is spent reusing existing code. That doesn't mean you have to put up with bad (or simply different) ideas in the existing code. Clean them up as you go along. It's usually faster to refine code into something great than to wait for it to spring fully formed and perfect from your mind.
This isn't a myth because rewriting bad code is wrong. It's a myth because it can be much easier to reuse and to refactor code than to replace it wholesale.
Programs Suck; Frameworks Rule!
Myth: It's better to provide a framework for lots of people to solve lots of problems than to solve only one problem well.
Reality: It's really hard to write a good framework unless you're already using it to solve at least one real problem.
Which is better, writing a library for one specific project or writing a library that lots of projects can use?
Software developers have long pursued abstraction and reuse. These twin goals have driven the adoption of structured programming, object orientation, and modern aspects and traits, though not exactly to roaring successes. Whether proprietary code, patent encumbrances, or not-invented-here stubbornness, there may be more people producing "reusable" code than actually reusing code.
Part of the problem is that it's more glamorous (in the delusive sense of the word) to solve a huge problem. Compare "Wouldn't it be nice if people had a fast, cross-platform engine that could handle any kind of 3D game, from shooter to multiplayer RPG to adventure?" to "Wouldn't it be nice to have a simple but fun open source shooter?"
Big ambitions, while laudable, have at least two drawbacks. First, big goals make for big projects — projects that need more resources than you may have. Can you draw in enough people to spend dozens of man-years on a project, especially as that project only makes it possible to spend more time making the actual game? Can you keep the whole project in your head?
Second, it's exceedingly difficult to know what is useful and good in a framework unless you're actually using it. Is one particular function call awkward? Does it take more setup work than you need? Have you optimized for the wrong ideas?
Curiously, some of the most portable and flexible open source projects today started out deliberately small. The Linux kernel originally ran only on x86 processors. It's now impressively portable, from embedded processors to mainframes and super-computer clusters. The architecture-dependent portions of the code tend to be small. Code reuse in the kernel grew out of refining the design over time.
Solve your real problem first. Generalize after you have working code. Repeat. This kind of reuse is opportunistic.
This isn't a myth because frameworks are bad. This is a myth because it's amazingly difficult to know what every project of a type will need until you have at least one working project of that type.
I'll Do it Right *This* Time
Myth: Even though your previous code was buggy, undocumented, hard to maintain, or slow, your next attempt will be perfect.
Reality: If you weren't disciplined then, why would you be disciplined now?
Widespread Internet connectivity and adoption of Free and Open programming languages and tools make it easy to distribute code. On one hand, this lowers the barriers for people to contribute to open source software. On the other hand, the ease of distribution makes finding errors less crucial. This article has been copyedited, but not to the same degree as a print book; it's very easy to make corrections on the Web.
It's very easy to put out code that works, though it's buggy, undocumented, slow, or hard to maintain. Of course, imperfect code that solves a problem is much better than perfect code that doesn't exist. It's OK (and even commendable) to release code with limitations, as long as you're honest about its limitations — though you should remove the ones that don't make sense.
The problem is putting out bad code knowingly, expecting that you'll fix it later. You probably won't. Don't keep bad code around. Fix it or throw it away.
This may seem to contradict the idea of not rewriting code from scratch. In conjunction, though, both ideas summarize to the rule of "Know what's worth keeping." It's OK to write quick and dirty code to figure out a problem. Just don't distribute it. Clean it up first.
Develop good coding habits. Training yourself to write clean, sensible, and well-tested code takes time. Practice on all code you write. Getting out of the habit is, unfortunately, very easy.
If you find yourself needing to rewrite code before you publish it, take notes on what you improve. If a maintainer rejects a patch over cleanliness issues, ask the project for suggestions to improve your next attempt. (If you're the maintainer, set some guidelines and spend some time coaching people along as an investment. If it doesn't immediately pay off to your project, it may help along other projects.) The opportunity for code review is a prime benefit of participating in open source development. Take advantage of it.
This isn't a myth because it's impossible to improve your coding habits. This is a myth because too few developers actually have concrete, sensible plans to improve.
Warnings Are OK
Myth: Warnings are just warnings. They're not errors and no one really cares about them.
Reality: Warnings can hide real problems, especially if you get used to them.
It's difficult to design a truly generic language, compiler, or library partially because it's impossible to imagine all of its potential uses. The same rule applies to reporting warnings. While you can detect some dangerous or nonsensical conditions, it's possible that users who really know what they are doing should be able to bypass those warnings. In effect, it's sometimes very useful to be able to say, "I realize this is a nasty hack, but I'm willing to put up with the consequences in this one situation."
Other times, what you consider a warnable or exceptional condition may not
be worth mentioning in another context. Of course, the developer using the tool
could just ignore the warnings, especially if they're nonfatal and are easily
shunted off elsewhere (even if it is /dev/null). This is a
problem.
When the "low oil pressure" or "low battery" light comes on in a car, the proper response is to make sure that everything is running well. It's possible that the light or a sensor is malfunctioning, but ignoring the real problem — whether bad light or oil leak — may exacerbate further problems. If you assume that the light has malfunctioned but never replace it, how will you know if you're really out of oil?
Similarly, an error log filled with trivial, fixable warnings may hide serious problems. Any well-designed tool generates warnings for a good reason: you're doing something suspicious.
When possible, purge all warnings from your code. If you expect a warning to occur — and if you have a good reason for it — disable it in the narrowest possible scope. If it's generated by something the user does and if the user is privy to the warning, make it clear how to avoid that condition.
Running a program that spews crazy font configuration questions and null widget access messages to the console is noisy and incredibly useless to anyone who'd rather run your software than fix your mess. Besides that, it's much easier to dig through error logs that only track real bugs and failures. Anything that makes it easier to find and fix bugs is nice.
This isn't a myth because people really ignore warnings. It's a myth because too few people take the effort to clean them up.
End Users Love Tracking CVS
Myth: Users don't mind upgrading to the latest version from CVS for a bugfix or a long-awaited feature.
Reality: If it's difficult for you to provide important bugfixes for previous releases, your CVS tree probably isn't very stable.
It's tricky to stay abreast of a project's latest development sources. Not only do you have to keep track of the latest check-ins, you may have to guess when things are likely to spend more time working than crashing and build binaries right then. You can waste a lot of time watching compiles fail. That's not much fun for a developer. It's even less exciting for someone who just wants to use the software.
Building software from CVS also likely means bypassing your distribution's usual package manager. That can get tangled very quickly. Try to keep required libraries up-to-date for only two applications you compiled on your own for awhile. You'll gain a new appreciation for people who make and test packages.
There are two main solutions to this trouble.
First, keep your main development sources stable and releasable. It should be possible for a dedicated user (or, at least, a package maintainer for a distribution) to check out the current development sources and build a working program with reasonable effort. This is also in your best interests as a developer: the easier the build and the fewer compile, build, and installation errors you allow to persist, the easier it is for existing developers to continue their work and for new developers to start their work.
Second, release your code regularly. Backport fixes if you have to fix really important bugs between releases; that's why tags and branches exist in CVS. This is much easier if you keep your code stable and releasable. Though there's no guarantee users will update every release, working on a couple of features per release tends to be easier anyway.
This isn't a myth because developers believe that development moves too fast for snapshots. It's a myth because developers aren't putting out smaller, more stable, more frequent releases.
Common Sense Conclusions
Again, these aren't myths because they're never true. There are good reasons to have a feature freeze. There are good reasons to invite new developers to get to know a project by looking through small or simple bug reports. Sometimes, it does make sense to write a framework. They're just not always true.
It's always worth examining why you do what you do. What prevents you from releasing a new stable version every month or two? Can you solve that problem? Solve it. Would building up a good test suite help you cut your bug rates? Build it. Can you refactor a scary piece of code into something saner in a series of small steps? Refactor it.
Making your source code available to the world doesn't make all of the problems of software development go away. You still need discipline, intelligence, and sometimes, creative solutions to weird problems. Fortunately, open source developers have more options. Not only can we work with smart people from all over the world, we have the opportunity to watch other projects solve problems well (and, occasionally, poorly).
Learn from their examples, not just their code.
chromatic promotes free and open source software for O'Reilly's Open Technology Exchange.
Return to ONLamp.com.
You must be logged in to the O'Reilly Network to post a talkback.
Showing messages 1 through 67 of 67.
-
plz dont stain opensource.
2004-01-14 03:55:53 anonymous2 [Reply | View]
im a student & i luv open source. Its like god to me. coz the idealogy of the open source is that gr8, share wat ever u have etc... I think the author is a MS supporter, coz he always tries to criticize the open source s/w & tries to point out the miniature drawbacks. Wat he says mite b partially true, but infact the hacker community & other gurus r born out of the open source development. If something's difficult it doesnt mean u run frm doin it.
The author considers a very less domain of developers from the vast open source development population.
& i dont understand wat harm does it do to give the code as part of the s/w. Its afterall jus a fraction of the total size of the s/w.
The source code is for the ppl who can take pains to get the gains they want, if ur talkin abt the desktop scenario then frgt it. I jus cannot understand how ppl jump to conclusions so easily, u need to consider a broader range of the development community for such kinda discussion.
Plz dont stain Open Source.
A revolution cannot survive without much support & open source has enuf of it.
Im bent at serving the opensource community & wud do my part. But the kinda attitude the author displays is not at all recomended. Its like u loose all the time so y try again!!!
The author has a good way of presenting his point thou, he lacks the punch that cud satisfy the pro's. & also he's backed by his frail argument.
sorry for such stringent remarks mr.author but i had to putforth my point too. -
plz dont stain opensource.
2005-10-06 14:34:36 ivetter [Reply | View]
O'Reilly really needs some kind of comment moderation system.
The above comment is the first comment seen. I feel like an idiot for reading O'Reilly blogs.
-
plz dont stain opensource.
2004-01-20 14:40:41 anonymous2 [Reply | View]
Anuther stirling manafesto... :-)
Seriously, someone pointed out recently a difference between the Linux and Microsoft cultures which seems applicable here. Linux programmers write code to make writing programs easier. Microsoft programmers write code to make using applications easier. Programmer oriented. User oriented. Fortunately, purists are a self-editing meme pool.
-
plz dont stain opensource.
2004-01-14 09:41:46 chromatic |
[Reply | View]
Actually, I categorize myself as a Free Software developer who's made most of the mistakes in the article.
My goal isn't to discourage people from writing and distributing open source software -- far from it. I'd just like to counter some of the less realistic claims that a few overzealous (though well-intentioned) folks have spread over the years.
You're right about not running from difficult things. Hopefully it will be easier for people interested in contributing to know when they face something difficult.
-
Design explanation and installation conditions
2003-12-15 09:23:25 anonymous2 [Reply | View]
This is very important during and after development of any project.
For instance, I once tried to be useful in the development of a GTK application in the area of accounting, because I was having difficulty to find an appropriate open source accounting application.
I did not have much time and had no experience in open source actual development. The project leader gave me a few hints over email, probably assuming that I knew what I was trying to do. I was then caught by other priorities and never went back to that project.
If there was some documentation stating the design goals and general structure, the history so far, and a little skeleton package of what was working, then I might have joined the project and made time for it.
As a consequence, I am now working on a LAMP accounting package project for which I have a test user, who has helped indicate design flaws and implementation bugs. In the near future I will release it for open source development, but first I firstly have to learn how to make all these components downloadable from my web site, fix the existing bugs, add a better safety structure, and write explanations on how to install, start using, and the requirements on my server and client. This will enable somebody out there to use his/her current knowledge to introduce improvements.
It is a small system right now, but may grow a lot as we add features and improve the model.
But I know that my elementary documentation and history is the only way to make it understandable for the people who will make it evolve. Otherwise, it will die from starvation. -
Design explanation and installation conditions
2003-12-22 12:36:50 anonymous2 [Reply | View]
I wrote about something related a couple of weeks back.
Its "How to choose an Open Source Library". http://www.manageability.org/blog/stuff/how-to-evaluate-open-source-library
It'll be interesting to contrast that piece with this piece. Stay tuned!
Regards,
Carlos
-
Perhaps I'm biassed by my project size...
2003-12-14 02:44:09 anonymous2 [Reply | View]
...since most of the stuff I kick out into the world is pretty bite-sized, but most of my contributors do actually go ahead and read the code to get started.
I did the same when I kicked in the initial PostgreSQL compatibility for TWIG (does this thing do HTML? Let's find out: http://twig.screwdriver.net/) I read the code (not all of it, just the core stuff, main includes and the few modules I needed to deal with) in order to pick up enough context to do what I needed, which was make the PostgreSQL interface actually work so I didn't have to run two SQL databases on one already-busy server.
Most of the other contributing I do to other projects is "surface" enough to not need much reading, since these days I'm usually too busy being a technician to have time to program (dammit!). -
The other thing is +++ redo from start +++
2003-12-14 02:53:48 anonymous2 [Reply | View]
The decision to scrap and rewrite is a case-by-case call. Sometimes the design is so flawed, outdated or shortsighted that scrap-and-rewrite is clearly the best option. Sometimes scrapping just one or a few layers or modules will achieve the desired effect.
I've seen two extremes in one project (Macavl, he says as he waves to Bruce Cook, Major and the ghost of Dean Elsner), one where the boss refused to rewrite the original program until the overlay tree became so banyan that it broke STB ("Slow Task Breaker", although the official DEC acronym was different) completely and left him with no choice, followed a little later by a period in which the wheel was repeatedly reinvented in slightly different ways because it wasn't quite right.
Implying as Chromatic does here that rewrites are always superfluous is wrong, as would be the person who constantly rewrote the program, striving for perfection Zeno's-tortoise style until all of their followers make the Achilles decision. Let common sense prevail!
-
Myths Open Source Developers ...
2003-12-13 23:32:44 anonymous2 [Reply | View]
As a non-programer I enjoyed the article immensely. I can't begin to count the number of times that I have deleted the source to projects that I couldn't compile. I can look at the comments in the code, but to glean any info. from the code itself is beyond my unschooled ability. I have no opinion as to how developers should conduct themselves, but I wanted to let you know how much I enjoyed your article. M.B.Henderson -
Sounds like you need...
2003-12-14 03:21:10 anonymous2 [Reply | View]
Easy URPMI and RPMdrake. (-:
-
Yes, toss that code!
2003-12-13 11:15:30 anonymous2 [Reply | View]
I agree with all of these myths except for two: Throwing away code and next attempts usually are better.
In my more than two decades of programming, I have found over and over that the actual source code in a project is usually the least valuable asset. The knowledge gleaned from writing that code is what is valuable. Most code doesn't need to be thrown out wholesale, but often that's the best approach. There is no fixed formula for determining when to toss the baby with the bathwater, but most code that needs tossing is so far into the rotten corpse category that it's plain to see.
As for follow up attempts being better, well, if you were a BAD programmer to start with, you may have gotten better. If you didn't know how to solve the problem the first time, you've either learned how or at least how not to solve the problem. Being an undisciplined programmer is probably in the minority. Of course, if you are an undisciplined programmer, you will probably continue to be so, but you've still probably learned something.
Anything worth doing once is worth doing again.
Tad
tad @ tadland dot net -
No, keep that code!
2003-12-17 04:23:11 ianfairman [Reply | View]
Joel says keep it:
http://www.joelonsoftware.com/articles/fog0000000069.html
His central argument is that old code has been tested and fixed and throwing it away throws away useful knowledge.
I think that when rewrites get done developers remember the big lessons but forget the small ones that lead to bugs.
Every fibre of my being says "toss the code" every time, but I tend to agree with Joel that a lot of the time that's wrong.
Ian
-
Definitely true for SW projects in general
2003-12-13 08:04:29 anonymous2 [Reply | View]
Having worked on a closed source, million+ line (C++) code for nine years with > 10 developers at any one time, I can say with experience most of these "myths" are true of large SW projects in general. That's also partly because a code that size, with a life that long and a team that big, probably resembles an open source project quite closely in some ways. Anyway, good article, though the title could probably be made more broad.
-
Myths We Tell Ourselves?
2003-12-13 02:43:26 yaseppochi [Reply | View]
I don't think so. Somebody mentioned "slashdot"; that's where to find people telling themselves myths. But the myths chromatic describes are myths like Brooks's man-month: people don't think about them, or verbalize them. If they did, they'd know they aren't true. Instead, they live the myths.
One of the things I find really exciting about open source right now is that people are catching on. They're sharing best practices with each other.
Sure, much of it is worth what any free advice is worth: what you pay for it. But there are a lot of gold nuggets, and what's more, I'm starting to see people mentoring each other systematically. (Probably it's been happening all along, but either I've become more perceptive, or---I hope---it's becoming more common and visible.)
-
Mostly true but hard to avoid
2003-12-13 01:46:00 wyo [Reply | View]
IMO these myths are mostly true and are a major fact why OpenSource doesn't work as it could/should. From my own experience it's difficult to avoid running into the same traps. Usually it's much easier to fix something in building a workaround instead of fixing the problem at the right place. Sometimes it's not even possible to do it right because of political reasons but mostly it's because we are just too lazy or "don't" have the time.
Fortunately since in OpenSource problems _can_ be solved at the right place it will be done sooner or later. Therefore OpenSource is still superiour to ClosedSource but the process is much slower than it could/should be.
O. Wyss
--
See "http://wxguide.sourceforge.net/" for ideas how to design your app.
-
Bad title
2003-12-12 20:29:10 anonymous2 [Reply | View]
Obviously most of these are general principles.
This title could easily be mis-interpreted as anti- Open Source.
Again, for the FUDDIES and the average "tech journalist" out there, these "myths" obviously don't apply exclusively to Open Source, but to the practice of software development in general.
-
The line between truth and fiction...
2003-12-12 18:20:11 anonymous2 [Reply | View]
is very thin :)
Whilst I don't disagree with the majority of the article I do think that deciding to classify a 'stereotype' as a 'myth' is incorrect.
All of these points are true in some circumstances, or can become true at any point in a projects lifespan. Sure, in many many cases none of the above will happen, and a small one-man project will be doomed to obscurity.
But the other extreme can happen just as often.
(Oh, I do disagree with 'End users love tracking CVS' being a myth. Out of the 4 OSS projects I administer, all of our dedicated userbase tracks CVS :)
-
by any chance...
2003-12-12 17:05:39 da [Reply | View]
...have you thought about turning this into a book? Sure, it's a rough core-topic for a book. So make the book about XP or software design. I'd buy it.
I'm not 100% in accord with every single assertion you made, but then, I didn't agree 100% with Fred Brooks either.
-
by any chance...
2003-12-18 15:47:29 anonymous2 [Reply | View]
There's already a book about it, albeit by a different author: "Facts and Fallacies of Software Engineering", Robert Glass, 2003 (Addison-Wesley). Might also check out "The Pragmatic Programmer", Andrew Hunt & David Thomas, 2000 (Addison-Wesley).
-
OMFG
2003-12-12 16:27:29 anonymous2 [Reply | View]
I can't belive O'reilly would post this BS.
Firstly whoever wrote this article has never visited sourceforge.There you will find even the most insignificant project that has a forums with loads of posts and user/dev/ bug reports and feature requests.. YES some projects get very little help from the movement compared to big projects gnome/kde etc but alot of projects are just that small and don't need a huge dev team.I think looking at the great success of some of the bigger projects really shows how great the open source movement is and how big any project could get.
When was the last time you submitted a bug report/fix? . Actually i think you'll find that most open source supporters contribute in anyway they can for those who don't code have you ever visited IRC specificially channels like #linux #debian etc. There are heaps of people that are constantly helping... on the coding side just last week i gave a PHP based CMS a go, liked it soo much i continued to use it and submited a fix for a upload problem...
What makes open source great is the movement and it's there in bundels if you honestly can not see it then you must be simple or blind.
-
OMFG
2003-12-12 17:32:58 anonymous2 [Reply | View]
Actually, this article is dead-bloody-on and your a) reading skills; and b) knowledge of running your own project, are lacking. This person knows exactly what (s)he's talking about.
First of all, shut up about "the movement". If you discount the obnoxious Linux zealots (who don't actually write much code anyway) there is no movement. Writing code is not a religious crusade unless you're a spotty 15-year-old with a chip on your shoulder (i.e. much of the Slashdot readership). Code shouldn't be political. Just ask people who've done a lot of it. Guys like Linus.
Second, I am the owner of 2 sourceforge projects, one of which is quite popular and is translated to 10 languages, and is used all over the world including universities such as Harvard, and has been around since 1998 or so. Want to know how many code contributions I've had? Maybe 5 or thereabouts. The other is a HUGE, 7-year, OS project which nobody cares about, frankly. My experience is, if it's not Linux, who cares? If the same attitudes had prevailed 10 years ago, Linux wouldn't exist today.
The author of this article is explicitly *not* talking about Linux, PHP, apache, Gnome, KDE, etc., because they are exceptions. They are big famous projects. Lots of little dudes want to try and ride on the coattails of big famous projects. Take a real look at the other 10,000 or so on sourceforge for pete's sake. The vast majority are described by this article, to a T. Bundles is not spelt "bundels"; there are probably lots of open source spellcheckers the "movement" should investigate. -
OMFG
2003-12-14 16:56:13 anonymous2 [Reply | View]
<blockquote>
My experience is, if it's not Linux, who cares? If the same attitudes had prevailed 10 years ago, Linux wouldn't exist today.
</blockquote>
How many people contributed to GCC "back in the day", how many to emacs ... how about gawk or gtar. This isn't something you can "blame on those Linux 15 year olds", it's just plain old normal behaviour.
And FYI, recently I've seen a lot more 30 odd year old ex-windows company IT people using Linux than 15 year olds ... and the 15 year olds are more likely to want to help, for one reason or another. But hey, don't let facts get in the way of a "back in the good ol' days, when we all ran NET2 and liked it" rant.
-
OMFG
2003-12-15 02:42:22 anonymous2 [Reply | View]
Sigh. Your reading skills aren't very good either. This wasn't a BITGOD rant at all.
The bit you quote above refers to the fact that no one cares about new O(perating)S(ystem) projects that aren't Linux (or *BSD obviously).
People say "why bother when we've got Linux?" or "you should be spending your energy helping Linux instead" -- two stupid sentiments for fairly obvious reasons. If those attitudes had prevailed 10 years ago, there would be no Linux. See? -
OMFG
2003-12-13 01:32:54 anonymous2 [Reply | View]
I couldnt agree with this person more....
I too am a "very" new owner of an sf.net project, and probably the main reason why my project has progressed in bits and pieces is because i was expecting "feedback" and "support" from the so called "millions of open source supporters" around the world...
The project that i own is ofcourse still on, but the article and this note posted (at 2003-12-12 17:32:58) above has been of quite good help in bringing me to some stark realities...
Hats off, and thanx to both once again.
The project will surely stay on.
... just with less expectation and more self-contribution.
rbs
-
Partly bullshit
2003-12-12 15:19:15 anonymous2 [Reply | View]
The first page of the article is just plain bullshit. Your piece of software *will* attract a community if
- it is good quality
- it is something the market needs
- it can easily be found through the internet
Of course you will never find anybody to maintain crappy flawed undocumented VBScript code that does stuff only half right...
Dont make bugs in the first place, huh? Yeah sure... When feature development is freezed on a beta branch, development can still continue on the trunk of the code. Have you never used CVS? Proper testing and fixing before releasing is essential. Otherwise there will be dozends of follow up bugfix releases that confuse your users. Bad examples are out there: How many versions of Windows are there? How many versions of the Java platform?
Did you write this artice just to get slashdotted eh? -
Partly bullshit
2003-12-13 02:04:41 anonymous2 [Reply | View]
He didn't say there should be no freeze period for testing and bug fixing, just that it could be much shorter by concentrating on bugs and code quality more during normal development. -
Partly bullshit
2003-12-12 22:06:56 anonymous2 [Reply | View]
Building a community is just as difficult as building a customer base. This foolishness is the reason why excellent software developers toil away in obscurity. Just because you have something great doesn't mean that other people will think its great, understand it, use it, be able to support it.
Having a good product doesn't mean you '*will*' attract a community - it just means you have a good product. Many many good products die on the vine each year while SPENDING MONEY MARKETING the product. -
Partly bullshit
2003-12-13 21:06:55 anonymous2 [Reply | View]
"Just because you have something great doesn't mean that other people will think its great, understand it, use it, be able to support it."
---
Dont you mean "Just because you have something great doesn't mean that other people will need it or want it" ? To get someone dedicated enough to your project to do beta testing and submit patches would mean that they would first need and/or want to use it.
-
Open Source myths?
2003-12-12 14:57:08 adrianh [Reply | View]
While I've found all the myths chromatic listed during my time, only "Publishing your Code Will Attract Many Skilled and Frequent Contributors" and "End Users Love Tracking CVS" seem to be mainly open source myths. All the others seem to be general software development myths - many of which I have grown to love over the years :-)
Indeed "Programs Suck; Frameworks Rule!" seems to be more of a problem in the closed source world in my experience.
Actually, I have come across "End Users Love Tracking CVS" in the closed source sector too. Although in that case it was "End Users Love Tracking A Closed Source Control System That They Have To Pay For And Doesn't Run On Their Main Platform" :-/
I suppose there is a variation on the "It's Better to Start from Scratch" myth that applies more to open source projects - which is why we have *so* many templating systems, text editors, etc. All of which sit there at version 0.01 doing roughly the same sort of thing. The problem with scratching itches is that so many people itch in the same place, and nobody wants to scratch somebody else's itches (eww!)
-
the joys of paranoid cynicism
2003-12-12 14:14:09 anonymous2 [Reply | View]
These myths never really permeated my psyche, since I tend to expect the worst.
For example, the significance of warnings. Warnings always freak me out, even when they seem to be minor.
But if there weren't some active dreamers out there, oblivious to peril, laughing in the face of Dependency Hell, a lot of today's software probably wouldn't exist.
-
the joys of paranoid cynicism
2003-12-13 02:11:22 anonymous2 [Reply | View]
I agree with the author on just about everything but the warnings. Warnings do tend to freak me and my (financial industries) users out, and neither of us will be satisfied until they don't appear anymore. Perhaps a better approach than eliminating warnings is to alwas provide an ability to evaluate each instance and disable the warning.
-
on the mark
2003-12-12 13:01:10 anonymous2 [Reply | View]
<-- btw, anon b/c i don't feel like registering right now.
i found the author's comments mostly on the mark. while not everybody is dogmatic about these myths, large portions of the (especially inexperienced) o-s community typically preach/practice these myths.
-- and a comment about documentation/reading code. i'd be interested if somebody sampled projects on sourceforge to see how many had poor/adequate/good levels of project documentation. often without project doc, you have no alternative to dive in and read code. and when, in reality, alot of code doesn't get the cleanup it deserves, nor is the code itself well-commented, someone new to the project can spend hours trying to gain a 'larger view' of the project, hours wasted when 15 minutes of project-documentation could've told the story about how large pieces of the project go together.
yes, reading code is good practice, and is inevitably needed to learn the details of a project, but when reading code is your only source of info, then something is terribly wrong.
how long might you spend trying to create spec for apache (or some library) if all you had was the source code???
-
nice article, carefully written
2003-12-12 12:53:11 anonymous2 [Reply | View]
I appreciate the article and the care you obviously took in writing it. I can't imagine how anyone who read it fully with an open mind could call it a rant or a troll. You carefully explained yourself in more detail than most addressing 'myths' of thinking and you explained why you thought each was a myth.
While I'm not a full-time coder, I'm helping on one open source project leading a small team. What you've written has given me some good areas for thought and improvement. Thanks, jeff wilkinson
-
As per usual, there are grammar mistakes...
2003-12-12 12:28:14 anonymous2 [Reply | View]
"This is much also easier if you keep your code stable and releasable."
Also much easier?
-
Thank God someone said it!
2003-12-12 11:46:23 anonymous2 [Reply | View]
I've spent a lot of time with open source projects. I use them, I write them, I almost love them. They serve various uses within software development. However there are open source zealots who go around saying that open source is the magic key to solving the worlds software development problems - and quite franky it isn't. I would have thrown in one more thing for the authors list:
* documentation/support is generally terrible and noone seems interested in writing or maintaining it. If open source wants to have an impact in corporate circles, it almost always ends up being commercialized (RedHat, Ximian, etc) before people really end up using it. There is nothing wrong with this, and open sourcers need to accept that people will commercialize their efforts and they will serve a market who needs more than just 'free software'.
-
Thank God someone said it!
2003-12-12 13:50:13 anonymous2 [Reply | View]
When they start an open source or shareware project, most developers are oblivious to the effort required to support users, and it is often the reason the developer later abandons it. It's one thing to stay up all night cranking out code, quite another to respond to desperate emails from users who don't know where the "any key" is...
-
Misleading
2003-12-12 11:45:36 anonymous2 [Reply | View]
These "myths" don't seem to have much in particular to do with open source. Excepting the reference to CVS, they apply equally to all forms of software development.
I'd have to call this article a troll. That is, it's not merely lacking in insight, it's positively misleading. I'm a bit surprised at seeing such a lax standard of journalism. -
Misleading
2003-12-13 11:24:21 anonymous2 [Reply | View]
_You_ are the troll, A**h***. Go back to /. and leave the real coders to their work. Distributed development is the myth that (s)he points out that resonates best. We keep hearing about it and everyone knows it is bullocks - but thanks to the zealots we never stop hearing it. -
Misleading
2003-12-12 12:11:20 anonymous2 [Reply | View]
I totally agree. This article is a hoax. Also, check the following comment by the author: "The best way to write good software is not to write bugs in the first place."
Why, thank you so much, Captain Obvious! -
Misleading
2003-12-13 11:39:59 anonymous2 [Reply | View]
You skills are the hoax in this discussion. Most bugs are purely the result of poor logical thinking applied to the problem at hand. Given that you can't read without interjecting your own thoughts onto the author I'd say your code is FULL of logical problems (ie BUGS). -
Misleading
2003-12-12 15:09:45 adrianh [Reply | View]
I only wish it was obvious.
I've lost count of the projects that I've worked on that invest a lot more time tracking and removing bugs than they do in instigating processes like good unit and customer tests that would have prevented those bugs propagating in the first place.
-
on code reading
2003-12-12 11:43:40 anonymous2 [Reply | View]
your article is interesting but i do not agree on the code reading part and i honestly believe that it's bullshit. i made huge jumps in coding practice once i started reading other's people code and reading sources and tweaking them if a fast way to learn. i seriously doubt you've ever been involved in programming to say that reading code doesn't help you improve, it's nonsense and shit coming out. the word 'stupid' was the first one that came to mind once i read your part about reading source code. you should also consider a book like "code reading" by spinellis or leave programming matters to programmers with experience. -
on code reading
2003-12-12 13:07:20 anonymous2 [Reply | View]
a distinction:
reading code to learn 'how to code'
vs.
reading code to learn htf a project is structured. -
on code reading
2003-12-12 13:00:20 anonymous2 [Reply | View]
Code only shows you the what, not the why. It's been shown numerous times that one of the biggest contributors to developer productivty is domain knowledge. E.g understanding the problem that's being solved and for what customer.
If the code perfectly solved the right problem for the right person, you'd never need to read it as it'd never need updating. The fact is, code isn't perfect and so you need to understand how it's lacking and to do that, you must understand more than the code.
-
on code reading
2003-12-12 18:08:59 anonymous2 [Reply | View]
Nice point: a program is a solution to a problem. The better you understand the problem ("domain knowledge"), the better the solution will be. This is why it is easier to write a great solution to a very specific and concrete problem, instead of to a general one.
Once you have solved 2 or 3 similar problems, you may understand the general problem sufficiently well to be able to write a general solution to that class of problem.
Linus said something to this effect in an article, about the Linux filesystem (IIRC). He said that instead of trying to invent a whole new clever approach, he just studied the 3 main approaches, and made sure that his was compatible with all of them (so that Linux could be ported to such platforms). I think I've misremembered some details there, but the point was that thinking in terms of concrete and specific problems is an effective way to write great code (where great code is a great solution to a problem). -
on code reading
2003-12-12 11:54:06 chromatic |
[Reply | View]
I'm not sure where you picked up the idea that I don't recommend reading code. One of the persistent problems in software development today is that far too few people DO read code.
That said, the myth is that pointing at a huge pile of code and telling new developers "just read it" is effective. I think that's possibly the least effective way to learn a project.
There's no substitute for reading code. I certainly don't intend to give that impression. At some point, new developers absolutely must read the code.
I don't think that's the best, first place to start though. Show them a glossary, an overview, completed story cards, or maybe UML. Explain how the pieces fit together. Then (and only then) let them examine the individual pieces. -
on code reading
2003-12-16 13:00:49 theoldmoose [Reply | View]
Heh. The quickest I've learned code is to port it to another platform. That will force you to become aquainted with the entire code base in fairly short order. 8-)
And while I was at it, I 'ANSI-fied' a piece of C code (a 400+ function machine vision library) that produced hundreds of warnings when fed to a modern compiler. The original code had virtually no prototypes, except those that were thought to be required for functions whose Miranda prototypes might not match.
Of course, I uncovered several bad assumptions in that code along the way, including unused and incorrect parameter passing. Some of these were causing latent and/or re-occurring mysterious errors that applications programmers had long ago given up finding, and had coded work-arounds to in their code.
That was the initial payoff. Having a much more maintainable piece of code continued to pay off over the 10+ year lifespan of the code as a library. It is still in use in hi-speed wirebonding machines on the Intel Pentium line.
The library was not Open Source in the sense that we use it today, but it was shipped in source form to our machine vision OEM customers, for use by their application programmers. So, it had to be buildable on various embedded 32-bit Unix-like platforms, and useable both within realtime OS environments (like VxWorks) or running on a bare-metal C runtime library.
It was all done with the GNU cross-compiler toolset and CVS, on SunOS workstations. Most fun I remember having in a long time. 8-) -
on code reading
2003-12-14 03:33:14 anonymous2 [Reply | View]
<blockquote>At some point, new developers absolutely must read the code.</blockquote>
Having just told you off above for panning code reading as a project intro: Graphic artists? Translators? Must read code? Hmmm... -
on code reading
2003-12-12 12:44:57 anonymous2 [Reply | View]
I totally agree with you.
If reading code is the starting point for learning, nothing guarantees that the code that one is reading is of high enough quality to emulate or incorporate into one's own repertoire of coding techniques.
There can be no objective evaluation of the techniques that one uncovers.
I've found that the "cookbook" approach to learning to code can be of extremely high value if one already has some solid experience, but one must know if the "recipe" is worth repeating in the first place. This doesn't just apply to bad code but inefficient code, as well.
Once someone has learned a poor technique, it's impossible to estimate what or how long it'll take to switch to a superior one, especially in an unstructured environment.
-
Great Article
2003-12-12 10:37:28 anonymous2 [Reply | View]
One of the better articles on opensource development that I've ever read.
I think the setting of expectations at the beginning was excellent.
-
What doe this project do?
2003-12-12 08:40:37 anonymous2 [Reply | View]
While not related to the actual software development, it is related to "things people do just because others are doing them". Please, PLEASE, TELL PEOPLE WHAT THE PROJECT'S GOALS ARE!
I have visited countless open source project web sites, only to find the main page is for News, and there are no other pages that say anything about "what this project is". Maybe I would have used it, but I had no idea what it was for.
All we need is 1 sentence at the top of the MAIN page, above the news saying, "This project aims to make a tool that does XYZ". -
Re: What does this project do?
2003-12-19 09:45:26 anonymous2 [Reply | View]
I've found this to be true of many web sites, as well, many of which I've visited because they are advertised in /. sigs.
Click on a link, and it takes you to a page that says, "Version 0.0.0.0.0.9 is now out! It fixes the memory corruption bug and allows you to save more of your configuration settings. Download it now!".
No description of what it does.
Not a clue.
And, of course, it has some totally incomprehensible name like "Mordraky" or "Big Sparrow" that also gives no clue as to what it does. -
+1 Insightful
2003-12-14 03:39:26 anonymous2 [Reply | View]
Oooh, what a giveaway! Where can I put my face?
-
Rather like a 'rant'
2003-12-12 02:18:25 anonymous2 [Reply | View]
I think that these 'myths' that you speak about aren't myths, because people don't believe or don't try to believe what you're saying. If your premise is correct then the open source development community is doomed because its filled with people who tried to "lie" to themselves. Seeing that this premise is not correct, in my opinion, the article is really takes the wrong approach to addressing the real problems of open source development that you allude to in your piece. That is, managing software projects so that their development is smooth and their acceptance by the public is wide.
If I also may be so bold, it seems like the author was probably involved in some difficult project that went nowhere. You can read it between the lines. Everybody in this business should get used to the simple facts of human life - on the user side, you can't get something for nothing. One the developer side, you will always meet with ungrateful people. -
Rather like a 'rant'
2003-12-12 11:20:40 anonymous2 [Reply | View]
I've found the article very well written, true and needed. Thank you. -
Rather like a 'rant'
2003-12-12 09:34:13 anonymous2 [Reply | View]
I think this was a very well written piece on the real-life issues facing a development team (be that open source or behind a corporate firewall). I also think that calling all of these points "myths" is worthwhile. The real problem with myths is not when people choose to believe them with their eyes open, understanding what the pros and cons are. The real problem is when people believe that the "myth" is absolute truth and give it no further thought.
The successful development teams out there have undoubtedly figured out the distinctions the author is trying to point out. This article is not for them... It is for the rest of the people who have not yet "skinned their knee" on one of these "myths" and learned how to avoid the problem in the future. -
Self-consciousness? not yet
2003-12-15 21:29:10 yaseppochi [Reply | View]
Hopefully said, but true?
It would be nice if that were true. However, as Watts Humphrey and the SEI people are at pains to point out, people rarely do know how they got to be successful. That's why Humphrey (and more generally folks like Peters and Waterhouse) sells well, and deservedly so.
I expect that a lot of "successful" teams would benefit from reading this article and saying to themselves, "now, we avoided that myth, but just how did we do it?" And even more so, less successful teams would benefit if they could articulate what they did as a "best practice" recommendation.
-
Rather like a 'rant'
2003-12-12 04:20:20 sanchonevesgraca [Reply | View]
The author of this article wrote a good piece about open source software development and its culture. Because there is such a culture, it makes sense to analyse it and publish such analyses. Many open source projects are successful because they are interesting to a community. This article is a voicing of a member of the community. The anonymous posting is, on the other hand, one of those ungrateful remarks.
-
Rather like a 'rant'
2003-12-12 11:08:50 chromatic |
[Reply | View]
I don't find the parent's remarks as ungrateful. I'd be surprised to find many active open source developers who said they believe these myths... but you can certainly see a lot of projects that act as if the developers believed these ideas.
There's a lot of great software out there. Imagine how much better it would be if we could improve our development skills!







I've been a developer for many years, and for the past 13 have been a Linux / FLOSS enthusiast... Well, really, a FLOSS enthusiast since the days of the DECsystem-10... but I digress.
Three things in your article particularly touched a sympathetic nerve with me:
So, many thanks for the article!