Myths About Open Source Development
jpkunst writes "A thought-provoking article by chromatic on oreillynet, listing eight "myths" that Open Source developers tell themselves. For example: Myth: Publicly releasing open source code will attract flurries of patches and new contributors. Reality: You'll be lucky to hear from people merely using your code, much less those interested in modifying it."
Nearly all of the article's "myths" are relevant for all software development, not just FOSS. As for the first myth, and the one cited in the posting, that's just a troll. I don't think anyone believes that just releasing code makes it useful or desirable. In other words, this article should have titled: 7 Myths about Software Development. As such, it's not bad, although I didn't find any deep insights in it.
----------------
Mythical Man Month Methodology
http://fourm.info/
most of the work (mine included) is done on highly visible projects (Linux).
This is a problem. Many OS projects out there require you to install to many things. I can't count the number of times I have stumbled over installing something like ImageMagick on a new version of Redhat.
writing open source software will get me laid!
This may be true for a minority of widely used projects, but for most applications, I've never bought this argument. Bug swatting, and especially code inspection, is and always will be a tedious process, not well-suited for a volunteer-only development community. The only advantage I see for open source in this area is that bugs can be fixed as they are encountered -- but this only works where the end user has the required skills to do the fixing in the first place.
Roving Web-Teleoperated Robot
My limited experience with open source is summed up with this article sentence:
~~~
Not all open-source projects are alike, however. A small number of open-source projects have become well known, but the vast majority never get off the ground, according to Scacchi.
~~~
Open source is obviously faster/better/cheaper when 1000's of people donate their time to a single project. The only open source project I've been involved in was a collaboration among several corporations, all of which wanted to leverage each other's resources, but none of which could really contribute their own.
There's nothing like money to motivate people to work on a project for which people aren't willing to donate their time.
Personally, I'm not convinced speed is related to developer quantity. There's too big a variation in productivity between experienced and amateur developers.
I'm also not convinced open-source is right for all types of software. How many open-source developers you know that conduct large-scale usability tests? How many open-source developers go around interviewing end users? When the developer and product consumer is the same, open-source makes much more sense to me.
The linux hacker
Myth: The GPL is the only open source license
Truth: Although it's the most popular, it's not the only license.
Sadly, I think this is what most people think of when they think of open source.
Fortress of Insanity
If (and it's a pretty big if) open source got more widespread notice and acknowledgment, don't you think there would be more people interested in the code developed via that process? Also, if the program "mimics" other programs, or is just plain shoddy, people obviously aren't going to be attracted to it.
That said, he does make some obvious points about good software development. Well documented and well designed software will always attract more developers then that software which is undocumented, poorly implemented and/or poorly designed.
I cant tel you how many times I've herd this. That's crap. It's more like copyrights are an overbearing government regulation that locks out the little guy than a true free market property right. When you them for what it is, then the facts of why Linux is going to take over the marketplace becomes obvious.
Myth: Publicly releasing open source code will attract flurries of patches and new contributors.
Reality: You'll be lucky to hear from people merely using your code, much less those interested in modifying it.
In my experience, this is not the case. I wrote a little rip-encode-and-tag script called choad and listed it on Freshmeat for the hell of it. This was two years ago, and I've received over 20 patches -- for a crappy little perl script!
I wrote it to solve my problem, and I continue to be pleasantly surprised when I get emails with feature enhancements, bug fixes, or just plain thanks and encouragement from people who had the same problem as me.
Cretin - a powerful and flexible CD reencoder
I mean, does anyone really think that how they package their product won't effect how many people start using it? Are there really a lot of people out there who assume that they'll have an instant dedicated following of skilled developers spring from nowhere the moment they publish their source?
I really doubt it, somehow. Charitably, I'd file the advice in this article under the "Obvious but sometimes in need of restating" catagory in that sometimes people will lose the forest for the trees. Still, no real revelations here.
Every year during my review, I just pray the words "slashdot.org" aren't mentioned.
One of the points brought up is about CVS... Personally, I'll have to agree with that. I know how to program, but CVS is just a concept I've never understood. I just never understood how to use it.
Regarding the other myths, I'd have to say that they are very good points. Some of them I'd agree with to a certain extent.
[sig]www.masterslate.org[/sig]
They bring up an important point about warnings-- that if you don't fix warnings, even if the thing you're being warned about is fine, you'll miss important warnings later.
Their solution is, always fix warnings.
My solution is, GCC needs some way to suppress warnings!
Yes, GCC can already suppress *classes* of warnings. But I want to be able to suppress warnings on a per-line basis. What if in function x, there is a variable that I have defined but do not use for some specific reason-- but I still want to be warned if I do the same by accident in function y?
In Codewarrior, we had something called #pragma unused which worked like this. But that was just for that one case. Something generalized would be cool, something like "#pragma gcc.sw typecast" that would suppress typecast warnings for the next block, for example...
Oh my God, this sounds exactly like my last job. 10,000 lines of Tcl, with not a shred of documentation in sight. Running a financial system that processed millions of dollars a day. And I know to this day, my old boss is still trying to figure out why she keeps losing employees left and right, and why it takes so long for new people to come up to speed.
I Am My Own Worst Enemy
See my almost identical comment, which was unfortunately submitted too slow.
20 mil and I will! Learn Esperanto with 20M others.
It's not worth writing good design documents because everyone will read the code.
Read Epic the first RPG novel.
getting +5, Funny mods on slashdot will get me laid faster
OSS or not, i report ALL bugs i find. At least the first times. If i keep reporting them or not depends on the attitude of the developers.
...)
I've had good experiences with smoothwall, emule mods, azureus, and believe it or not Windows. (i am a MS beta tester
"I am sure that everyone will want to install Apache/mod_perl/mod_ssl and mysql and perl 5.8.3 and 17 non standard perl modules (8 of which are not available on CPAN), ImageMagick, python, zlib, libpng and glib2.1 and zend and php) to be able to use my practically useless and very buggy digital picture management system."
If you write something that is usefull and/or fun. People are going to use it. For example I use the Spreadsheet::WriteExcel module at work. Yes perl writing excel documents. I used because there was a need. I fixed a bug in one of the optional modules because that was a feature we use and need to work correctly. Would I ever picked up and use that module on my own. Maybe if I came across it and wanted to create an spreadsheet for some silly reason but I highly doubt it. But I had a need to create an excel spreadsheet on a unix server so I filled that need.
Get Movie Posters
Regardless of the general case, what the article claims (specifically, that you won't receive patches or even comments) hasn't been true for me. If you write software that actually does something people want, it will get used.
I had bugs reports within a day of announcing my software. I received a patch to port my software to another OS within a week of it showing up on SourceForge (it's only in the 70-80 percentile range for activity too). I had feature requests shortly afterward too.
I've also written a library or two that never gets feedback simply because it's something only I would use (at least at the levels of completion they're at). But, I expected as much.
It's a myth. And here's a proof: /usr/src/linux/Documentation/networking/arcnet.txt :
A few words from a desperate open source coder...
Since no one seems to listen to me otherwise, perhaps a poem will get your
attention:
This driver's getting fat and beefy,
But my cat is still named Fifi.
Hmm, I think I'm allowed to call that a poem, even though it's only two
lines. Hey, I'm in Computer Science, not English. Give me a break.
The point is: I REALLY REALLY REALLY REALLY REALLY want to hear from you if
you test this and get it working. Or if you don't. Or anything.
ARCnet 0.32 ALPHA first made it into the Linux kernel 1.1.80 - this was
nice, but after that even FEWER people started writing to me because they
didn't even have to install the patch.
Come on, be a sport! Send me a success report!
(hey, that was even better than my original poem... this is getting bad!)
WARNING:
--------
If you don't e-mail me about your success/failure soon, I may be forced to
start SINGING. And we don't want that, do we?
(You know, it might be argued that I'm pushing this point a little too much.
If you think so, why not flame me in a quick little e-mail? Please also
include the type of card(s) you're using, software, size of network, and
whether it's working or not.)
My e-mail address is: apenwarr@worldvisions.ca
45 5F E1 04 22 CA 29 C4 93 3F 95 05 2B 79 2A B2
What most developers don't think is "Hey, I didn't contribute anything. Nobody I know has contributed anything. Why will my project be any different?"
Myth 3: Reading code
I've tried to read large bodies of code before. It's damn hard, even if it is documented. And when it isn't documented, your beginning developers don't have a chance.
Myth 4: Packaging
Um...duh? Of course it needs to be properly packaged. And dependency lists? If someone can't get it to compile, they definitely won't use it.
Myth 5: Start from scratch
Don't start from scratch if the code isn't clean. Make new code clean, and go back to clean up existing code. Make sure you have those regression tests ready.
Myth 7: Perfection
Developers are humans. Humans are fallible. I'll make a perfect program - when Bullwinkle pulls a rabbit out of his hat.
Myth 8: Ignore warnings
If the warnings were ignorable, they wouldn't be there. My profs would take marks off if you got warnings in compilation, unless your documentation explained exactly why you let the warning stand (and it had better be a good reason).
Myth 9: Tracking CVS
Users don't track CVS. Developers track CVS. Users want quick-and-easy, working code.
Either I miscounted, or there's more than 8 entries on the site (they aren't numbered)
I can't say that I don't give a fuck. I've just run out of fuck to give.
This isn't a myth because it never happens. It's a myth because it doesn't happen as often as we'd like.
Now, According to m-w.com:
Main Entry: myth
Pronunciation: 'mith
Function: noun
Etymology: Greek mythos
Date: 1830
1(a): a usually traditional story of ostensibly historical events that serves to unfold part of the world view of a people or explain a practice, belief, or natural phenomenon
2(a): a popular belief or tradition that has grown up around something or someone; especially one embodying the ideals and institutions of a society or segment of society
(b): an unfounded or false notion
3 : a person or thing having only an imaginary or unverifiable existence
This is not a myth. It is something which is true for a variety of reasons, and false under some circumstances. If it doesn't happen as often as some people would like, it is not necessarily a myth. Begone, ye article of the trolls!
Congrats to chromatic for offering several points about ease of use, especially regarding installation, which are often missed. In particular:
- "Packaging Doesn't Matter"
- "Programs Suck; Frameworks Rule!"
- "Warnings Are OK"
- "End Users Love Tracking CVS"
I appreciate the difficulties involved for open-source developers in making their programs easy to download and play. At the end of the day, it's their choice whether they make it accessible to the masses. Many of them just want to give something to the world that they would have otherwise kept for themselves.
But it is clear from the number of ambitious projects that many developers to aspire to hit prime time. In those cases, I hope they will take the advice in Chromatic's article, and think very carefully about the experience of an end-user who just wants to have a look.
For one thing, provide some screenshots so they don't even have to download the thing to see it. Next, read your installation instructions and consider whether they might not be better represented as an actual installation script. And finally, have an automated test facility to make sure the installation procedure works correctly.
An example of a problematic open-source package is subversion, the "sequel" to CVS. Because of the decision to bootstrap version control, you have to go through some painful procedure (last time I looked), just to see if it's worth bothering about yet. I have better things to do than jump hoops to try out a bit of fresh meat. I'm sure it will be great when it hits 1.0, but I'll save my energy until then.
Remember: the risk of a crap product is high when it comes to picking one of the thousands of packages on SF. Therefore, the pain threshold for most people is very low: if it doesn't work after a few minutes, most people will give up and try one of the dozen alternatives.
Myth: Publicly releasing open source code will attract flurries of patches and new contributors.
;D
Myth: Stopping new development for weeks or months to fix bugs is the best way to produce stable, polished software.
Myth: New developers interested in the project will best learn the project by fixing bugs and reading the source code.
Myth: Installation and configuration aren't as important as making the source available.
Myth: Bad or unappealing code or projects should be thrown away completely.
Myth: It's better to provide a framework for lots of people to solve lots of problems than to solve only one problem well.
Myth: Even though your previous code was buggy, undocumented, hard to maintain, or slow, your next attempt will be perfect.
Myth: Warnings are just warnings. They're not errors and no one really cares about them.
Myth: Users don't mind upgrading to the latest version from CVS for a bugfix or a long-awaited feature.
For explanations of each RTFA
it is a "myth" to say the OpenSource development model is not working. Linux, KDE, GNOME, and thousands of applications prove otherwise, much to Microsoft's dismay.
Running with Linux for over 20 years!
When was the last time you told a developer how her work solved your problem?
Umm... how about never? Well I sure don't know any female developers anyway.
The specific myths don't apply to every project, but it points out what I've been saying for years. The only way to write good code is to study and practice. Associate with talented people, learn everything you can from them, keep up with industry best practices, and constantly evaluate everything you do in terms of its quality.
This is a nice summary -- like any myths, YMMV for each project. "All models are wrong, some are useful." - I don't remember who said it, so I guess it was me!
Come back in 5 or 6 years when you have a real job in IT and have actually used OSS projects in the workplace. Tell me that all those W2K server licenses were worth it when, after the 9 billionth time they'd crashed, you switched to Debian and Apache for free, and never looked back. Tell me this.
IAALS.
Granted, I don't think all of those are myths. But one really irks me as being false for any software developers:
Myth: New developers interested in the project will best learn the project by fixing bugs and reading the source code. Reality: Reading code is difficult. Fixing bugs is difficult and probably something you don't want to do anyway. While giving someone unglamorous work is a good way to test his dedication, it relies on unstructured learning by osmosis.
I work for a very niche market/profitable software company and thats exactly how the developers get their feet wet, by fixing minor bugs.
Seems like the only way to "learn a project" is to fix bugs and therefore read the code.
Since you can't spell "communist", it's not surprising that you don't know what it means, either.
Fine, so I rushed it and accidently hit the submit button rather than the preview button. Sue me. Sheesh, I guess it's easier to rant about spelling than the facts.
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.
That's not a warning - that's more akin to an error. If the oil light comes on, and you don't stop immediately, you will stop in a very expensive way seconds later.
That's and well and good. But what does it have to do with the article in question?
Boobies never hurt anyone. - Sherry Glaser.
The problem may be the definition of success. If your goal is to become famous, open source development probably isn't for you. If your goal is to become influential, open source development probably isn't for you.
No fame, no influence, no dollar bills - what motivates people to do it? This is not a troll, looking for answers from RealPeople(tm).
"If you think you have things under control, you're not going fast enough." --Mario Andretti
I find that open source is not so valueable in that people inspect my code and provide feedback. Instead I find the following realizable benifits:
A) I can build apon other people's code.. It's effectively stealing their ideas, BUT since I'm GPLing my code as well, there is no net loss, and they are free to resteal my ideas back (if they are so inclined). I do often refer original authors to my new code.
B) I recognize that people MIGHT secretly build apon my code, so I get a warm fuzzy.
C) I can fix problems with open source drivers (postgres jdbc driver, GNU file-utils, etc. are some of my examples). Moreover, my debugger can jump straight to the line of maliscious code.
D) When I am about to release code publicly, I feel self conscious, and thus I put a TREMENDOUS amount of effort into cleaning up the code.. Making sure various platforms work, making sure there is no embarrasing spagetti-code, etc. Thus the mere possibility of people reading my code causes me to exert effort that I wouldn't otherwise. The end positive is a lower propensity for bugs, AND more modular/reusable code (especially with anything in perl).
The end-end result is therefore that Open source facilitates greater code reuse; less re-inventing of the wheel.. And more importantly code extensibility.
Now this begs a question of the distinction between modules and out-right applications. Open source is great for producing millions of reusable modules, but we often get chastized about the availibility of abundant QUALITY applications. Well, in my view, the merging of these two is two fold:
A) Open source applications tend to be more "plugagable"
B) Commercial sites will often pay developers to use open source modules and customize them to the particular needs of the corporation.. In doing so, serious feedback is provided to the various open source projects (because it is in their mutual interest to refine the modules). I as part of such a corp, have contributed (in various small ways) to several open source projects on the corp's dime, and with full authorization. This is of course, a completely unreliable source of income for a project, of course, but it is definitely a facilitator.
-Michael
I wonder what you'll have to say the next time a "Windows is ass" vs "But you can install stuff on it" flame war breaks out.
AFAIK almost NOBODY uses the Linux ARCnet component, it's a very obscure protocol for what Linux is put to use for. I absolutely understand why this guy doesn't get any help. The protocol works though, and it's complete, so nobody's gonna make a stink about it until something breaks it.
"Sometimes, I think Trent just needs a cup of hot chocolate and a blankie." -Tori Amos on Nine Inch Nails
regardless of whether the project is an open source (or not).
We (popular IT community) are re-learning the lessons of IBM in the 60s which Fred Brooks distilled in his famous The Mythical Man-Month.
I think the bigger misunderstanding is that new developers/IT types/CS academics thinks that everything is new. Most computer security issues were first discussed based in the 1960s or 1970s. Much of Distributed Computing is now being "re-discovered" as Grid Computing.
Being a Karma whore will leave you with Open Sores.
Hi
I have made a eigenpoll for Best Practices for Software Development
You use it by ranking the Practices you have expriense with, the it does some data minning
and find the best.
Right now the list looks like:
100% Test Coverage
Onsite Customer
Continuous Integration
Layering
Scrum Project Backlog
Test Driven Development
The Planing Game
TDD & CI with Aegis
Pair Programming
Current Worst Problem
Big Visible Chart
Simple Design
Codeing Standards
Refactoring
Collectiv Code Ownership
CRC Cards
feel free to add missing options.
ps.) Eigenpoll is open source too.
I've found a few other misconceptions in open source development that have irked me over the years.
1. Using autoconf/automake will make my code portable.
TRUTH: You need to know what system calls are portable, which ones arent, and the nuances in using each on different platforms. The auto* tools will only make detecting and utilizing the correct versions easy. It's up to you to identify and code for them in the first place. (Ditto for compiler flags, shared libraries, linker options, etc)
2. Network programming is easy.
TRUTH: I've seen a lot of projects that implement their own network communication using TCP sockets and sprintf text messages. A number of others transmit little endian integers around. And others still use a blocking style request->response form of communication.
Good network programming is really hard, and unless you take the effort to design and implement something robust from the start, this kind of ad-hoc, inflexible networking will become embedded into the application and require significantly more rework later down the road.
And PLEASE reuse something that might fit before even attempting to write your own layer. The gnutella protocol is a great example of this problem.
3. Threading is as simple as using pthreads and mutexes.
TRUTH: Good threading code is difficult to develop and difficult to debug. It is always preferable to use an event based model where possible, and rely on threads only when you need scalability on SMP, work arounds for blocking system calls (gethostbyname_r), or background tasks that you dont want delaying interaction with a user or network app (there are many other reasons, but these give you the general idea of where threading is appropriate).
Synchronizing access to shared resources between threads is also very tricky. The level of granularity of locking, and the structure of your data structures themselves, will have a significant impact on performance. Too much granularity and you end up with extremely complex locking hierarchies that are difficult to debug, more prone to dead lock. Too little granularity and you get lots of contention for these shared resources.
Finding the sweet spot is tricky, and often requires lots of experience or tuning to get right. The lack of tools to provide visibility to lock contention and latency also make this difficult.
I'm sure there are others, but these are the big ones that come to mind.
I think you mean copyright abuse and special interest controlled overbearing government regulation. Copyrights and government regulations are a very important check and balance in the modern "free" market economy.
According to my Oxford Desk Dictionary
communism n. 1 political theory advocating public ownership of property.
I'd say that is not to far off of what SOME open source licences are about (GPL). The problem with calling something communist in the USA is that there is decades of hatred associated with that single concept. So even if it is a comparsion based in fact, biases against communism prevent an unbiased view of the analogy.
The "Myth" that all open source is communist is very similar to the "Myth" that the only open source licence is the GPL.
I am living proof of the Peter Principle
Myth: It's better to provide a framework for lots of people to solve lots of problems than to solve only one problem well.
::mono:: respectively already ...
I won't mention Microsoft's is the only widely distributed development 'Framework' there is. Then again if it's really as nebulous and unuseable as the slashbots think, why has it already been ported to BSD and Linux in it's original form and
"It's not your information. It's information about you" - John Ford, Vice President, Equifax
Sadly, I think this is what most people think of when they think of open source.
Why is that sad?
I think its appropriate that people look to the best of breed among Open Source, Free, and even proprietary software licenses.
then please make it easier to contribute.
Show us your roadmap for development,
where you want us to contribute time,
and how we can get started helping you.
Make it easy to understand your software,
maybe by creating help files, diagrams,
real examples of how to use your software,
even comparisons to related software.
Source code comments are good;
technical overviews are even better.
Above all, get FEEDBACK from developers
on your source code and your documentation.
Is it clear? easy? How could it be easier?
The more your improve your documentation,
and your process for contributing code,
the more we can help you. Thanks!
Cheers, Joel
Stop rushing. If /.ers stopped for a minute instead of trying to be high on the comments list, there would be more insight and less underthought trash for me to mod down.
List a cool new MP3/Warez/Kazaa-like app on Freshmeat and get people to contribute tons of code. But the trick is - it never was a MP3/Warez/Kazaa-like app in the first place - it was actually a B2B e-business CRM/procurement application! So now all that is left to do is sell it and collect your millions. Hmmm... wait a sec - Ariba already did this.
It would seem to me that he is pointing out programming in general and that he's trying to give everybody some of his programming habits and opinions, not mythes.
Bug fixes, CVS and other things are just some benefits that you may experience by using FOSS, but all the benefits are more likely to happen on a larger, more popular project, but any experienced Open Sourcer should know that you can't expect all the benefits all the time, we're none-union.
"All tyranny needs to gain a foothold is for people of good conscience to remain silent." [Thomas Jefferson]
... as I was quoting you. The rest of my comment was to be:
Where in the GPL does it give public ownership to the code? The code's ownership, per copyright, is retained by it's author. GPL simply puts limitations on its modification and redistribution.
Trouble making decisions? Just flip for it.
I've made two little patches, one for the kernel and one for a user space application. Both were't really that significant at all, but I got feedback for both of them with suggestions...
If a train station is a place where a train stops, what's a workstation?
When was the last time you reported a bug?
About a week ago. The fix was so trivial and suggested itself easily, so I didn't have to tell the author how to fix it.
When was the last time you tried to fix a bug?
A couple of weeks ago, if you don't count the above question. And not only did I try, I succeeded!
When was the last time you produced a patch?
Same as the last question.
When was the last time you told a developer how her work solved your problem?
Again, within the last week or two (I generally compliment the program whose bugs I'm fixing, because I obviously like it enough to go digging through the source). I also have, on a number of occassions, let authors know how much I like software they've written. It's the least I can do.
Aw, come on. That was FUNNY!
-- The reason it's called the right wing? Irony.
"Myth 3: Reading code
I've tried to read large bodies of code before. It's damn hard, even if it is documented. And when it isn't documented, your beginning developers don't have a chance."
Does tools like UML help with this?
"Myth 5: Start from scratch
Don't start from scratch if the code isn't clean. Make new code clean, and go back to clean up existing code. Make sure you have those regression tests ready."
What tools does Linux have for creating regression tests?
"Myth 4: Packaging
Um...duh? Of course it needs to be properly packaged. And dependency lists? If someone can't get it to compile, they definitely won't use it."
Debian and Gentoo does this well. I'm not certain how the others compare.
Maillists (at least the ones I know) suck for general support and/or sporadic suggestions and feedback. The ones at sourceforge are about unuseable unless you subscribe (I always wanted an eighty-meg mailbox), others get you a bunch of negative answers and a month-long OT-discussion for remarks like "please CC me since I'm not on the list" (debian-user, that's for you!). We live in a time where any bozo can set up a reasonable free forum for the folks who don't really want to get "involved", so use that possibility!
Fight hunger. Filet a politician and send him to a 3rd world country of your choice.
RTFGPL
Nevermind, I'll quote from it for you:Top of the page:
GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
From the Preamble:
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
Please practice zealotry for some other product. There are enough Linux zealots in the world who DO understand that copyrights in and of themselves are not 'wrong.' In point of fact the archtypical FOSS licenese not only is copyrighted, but indicates within the preamble that the copyright process is invaluable to protecting both the user and author's rights to the code.
Zealotry is a big enough problem in our community without its being accompanied by ignorance and bombast. Please either take the two seconds required to verify the facts behind the slogans you want to shout, or become a zealot for some other cause.
Yeah, it's a troll, mod me down, my karma can take it.
"Talk minus action equals nothing" - Joey Shithead, D.O.A.
"Talk minus action equals
...is that there are no open source repositories for other platforms. There are many others.
The old/non-agile industry is upset because they can squeeze more profit from product sales (especially with zero replication cost), than they can from services. This is, of course, a close parallel to the issues behind RIAA, et al. The difference is that the driver here is that OSS software has been freed by the authors, while the music has been "liberated" by the consumers.
Having worked in the service-oriented software development world all my professional life (Contract R&D), this coming status quo doesn't bother me at all.
The intent of the GPL is to provide "access" not ownership, yes.
The knee jerk reaction to the analogy that the GPL is like a communist licence, however, is absurd. It is very obvious that the GPL can not be equated to communism, as communism is a economic/political theory and the GPL is a software licence, but the intent in both is the benefit to all by the sharing of all.
If someone were to compare the GPL to Capitalism, Feudilism, Socialism, or an other economic/social "ism", the reaction of GPLites would not be so quick and forceful. The comparision would also not be very accurate.
Forget for a second your preconceptions about communism and try and accept the GPL / Communism analogy. Its not a perfect analogy, but it is a pretty good one. And not worthy of its own myth
I am living proof of the Peter Principle
"For explanations of each RTFA ;D"
Myth: Slashdotters will read the article.
I wish I could think of my home as my project. Then maybe I could reach the kitchen without mountaineering equipment.
MS Press does print them. And where not talking about a small manual, we are talking about a HUGE collection of books. Granted, they damn sure won't be giving away 7000+ pages of text with a every single user license. If they would have printed complete manuals for every copy of Office they have shipped over the years there wouldn't be many trees left standing in Washington state.
In reality, 95% of the people wouldn't read the manuals if they did ship them with the software. In many cases the help files built into Office are more than enough for most, and get better with every version. There might be an office suite somewhere with better built in documentation, but it's not on this planet.
If the oil light comes on, and you don't stop immediately, you will stop in a very expensive way seconds later.
False.
The oil light in my 1990 trooper used to come on regularly because of low oil pressure. After I while, I quit topping it off, always thinking "I'll take care of it tomorrow." The situation went on for weeks before the engine finally siezed.
Of course, the above is strong evidence that I am an idiot.
Don't worry, we'll get him in meta.
Redundant should rarely be used and only in reference to something in the article or post.
Food not Bombs is a nice platitude but it breaks down when you notice that the Bombees are usually well fed
stick your fucking troll up your arse. Your cozy little os is probably the one consisting of 90% open source. And you faulty like to call unix.
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users.....
Now why does it say most licences are designed to take away your freedom? If copyrights are truely free market, that shouldn't be the case!
Now why does it say it's referring to freedom and not price. What freedoms were the other licenses taking away? If they are true to free market principals, that shouldn't be the case either.
To me that implies that copyrights can deny rights? Doesn't it to you?
Look, I've even discussed copyrights with RMS personally. Maybe I misunderstood him?, but I doubt it.
Alan Cox has a Ph.D in Computing Science
Linus also has a degree of some sort, I believe.
(strangely, can't seem to google up a reference to it)
I pointed this out months ago. The scriptable, pluggable, modular nature of OSS makes it easier for people to jump into OSS.
There is rarely a "3: Profit!"
While I'm agreed that the best way to write good software is to not introduce bugs in the first place, I don't believe that this is an entirely avoidable problem.
There are certain types of necessary changes that inherently destabilize a codebase no matter how careful you've been. It's inevitable. Oftentimes, things like this are checked in to amortize the cost of producing, fixing, and improving said code. There are the unforseen interactions that your new subsystem has, that none of the regression or unit tests have picked up. I know - "write more/better tests" is a better solution. But omnipotence is an impossible goal.
To continue the author's "home" anology, relasing software is like preparing a meal. The pots and spoons simply must get dirty when you're cooking. Many try to "clean as you go," but at the end, you're still left with your dirty casserole dish. You can either choose to clean things up before your guests get there (feature freeze), or you can leave the dirty dishes lying on the counter for all to see.
I might be inclined to say that the shorter the feature freeze, the better. But I don't have any evidence to back this up - nor does Chromatic cite any evidence (except antecdoctal) to support or detract this claim. Maybe people by nature are better at fixing a slew of bugs at once. Maybe not.
Freezes, milestones (alpha, beta) and the like are inevitable parts of producing quality software fit for public consumption, short of "papal infallibility." We're only human.
Dom
>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?
This is so untrue its not funny, what would be the point of praticing and learning if the next time around you were sure to do things as badly.
I've worked on a payment system previously written by someone else and the mistakes that were made by the core developper of this project as well as my mistakes are not repeated in this new payment system for this other company Im working for.
Its called evolution!!!
also there's that misundertanding that coders are supposed to be good at expressing themselves, for instance to document their code.
The skillset needed to be a good coder is very different from the skillset to be a good documenter.
if that wasnt the case, coders wouldnt have a hard time picking up chicks no?
also on a more general view of this article, one has to understand that we dont all work for oreilly's and contributors of opensource project dont have 100 hours a week to give to their project.
I work 50 hours for money, the amount of time I give to OSS dev. is much less. So for me to get involved to the point where I can actually contribute meanfully to a project is longer.
This article is de-motivating and elitist, I say to chromatic: "Give me your salary and time and I'll code for OSS only"
As Linux and Other Open Source software get used more and more by less tech savvy users, eg non-programmer types, as a percentage of the community contributions will seem to decline.
,or not. appreciate the work that has gone into the free software that they use from day to day. When was the last time you took stock of just how incredible that linux box with its flashy gui you are using is when you consider that it has been bought to you by the hard work of the OS community.
I think most people, tech savvy
I think people need to find their niche, as to what they can and can't do in order to contribute. Many people think because they are not a hard-core coder they cant do anything to help. I've only contributed to a couple of things since I've been using Open Source stuff.(the past 4yrs) But when I do fix a bug or create something a project might find useful I usually send any files or useful info over to the project maintainers. It is the least I can do when I owe my redmond-free world to so many dedicated geeks!
I wonder just how many regular Open Source users feel that if they could, they would help, but maybe dont know how.
I would say project maintainers should encourage people to help out in other ways, There are loads of things people can do. Artwork, Documentation, Website maintennance heck , even give free support to people if they are nice enough.
I've been helping a few newbies through their first forays into linux, as indeed friends helped me when I got started. If you plant the right seeds in those newbie minds, they most certainly will grow a giving and generous attitude.
There is one more way people can support Open Source.. Lets introduce a "Send your favorite project A Beer Day" send em some beer money!
Nick !
Electronic Music Made Using Linux http://soundcloud.com/polyp
Comment removed based on user account deletion
You know, I think RedHat made a big mistake in calling the tool that installs RPM packages rpm. Because everyone thinks that the only tool that is capable of interfacing with the RPM packaged database is rpm. All it is supposed to do is install/update/remove/verify packages, and tell you about dependancies or package contents. It's a glorified front-end to the DB.
If you want apt-get like behavior, you should be using up2date. And then there's yum which has apt-get like syntax. Both of these meta tools use rpm(1) to do the actual work of installing and verifying the packages, but they do the work of automatically resolving dependancies and downloading packages you need.
They split rpmbuild out of rpm... so they should go full hog and rename up2date as rpmget (text mode only unless $ARGV[0] == up2date-gnome) or something like that. Then maybe everyone will wisen up, and Debian users will shut up.
THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
Whether including header files constitutes copying isnt a cut and dry issue ... assuming it doesnt then yes the GPL is irrelevant EXCEPT if you distribute the library together with the application (if you do that the application has to be GPL too).
If you want to use the GPL, and if you can live with the inability for non GPL apps to ship your library together with the app, you should probably dual license the header files to remove ambiguity (under GPL and under a disclaimer only type license such as BSD).
APT
It's not like they can cheaply do something with their results either. So what's the motivation for an open source programmer (aside from pure thrill working on something very complicated).
THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
Here's another common myth... "You can't sell open-source software". Not true! In fact, the FSF encourages people who distribute free software to charge as much as they want.
Throwing away code blindly is a mistake, especially if it is working code. Then again, keeping crufty, bad code around is an equally large mistake. The larger point that Chromatic misses is that making uninformed code decisions is playing Russian Roulette. Throwing away code (or keeping code around) is only a mistake when one has no concrete rationale for doing so.
The important part is to have a good understanding of the problem scope, previous attempts (if any) at solving the problem, and what their advantages and drawbacks are.
You have to remember that code doesn't exist for code's sake alone. We write code to solve problems. Code is a window into how someone solved a problem. And not all solutions are created equal.
What is important is to understand the "whys" and "hows" of these previous attempts, and then chart the best course you see toward success. It may well be that the best solution is to scrap another's design. It may be the best solution to build off of another's success. However, it's probably a bad decision to build off of another's failures.
Dom
x; // it's "used" (referenced), but not to do anything
Sorry, not with gcc. For the first line, you get "warning: variable unused" warning either way; for the second, you get "warning: statement with no effect".
Assign a 0 (or NULL) to the variable. Or pass it to a null function. Both are hacks, and a pragma would be nice. (It sometimes happens when you comment out a section of code while debugging, gcc prints an annoying "unused variable" warning.)
Unlimited growth == Cancer.
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.
Really-Real-World Reality: Frameworks that are developed in conjunction with one specific project are likely to produce lousy results when used in a different project.
I've seen a number of "generalized" frameworks that came out of one large project, only to wreak havoc when they were forced upon the developers of another project. When people are writing support code for a project, a lot of project-specific design decisions get mistaken for generic architecture because the developers are only looking at it from an insider's perspective.
Mod down -1: cutnpaste.
the man with the plan is a new, different person every day, with a new, limited perspective that gets a +5: informative for ambiguity due to being factually unverifiable.
THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
I think that's called a couplet.
You were very lucky, the oil light came on in my car but I decided to drive the remaining 500 feet or so to my house. I didn't make it. Now I call it the "change engine" light. Light comes on ,time to change the engine.
There are 2 types of developers who like the GPL, those who agree with RMS ... and those who simply like reciprocity.
... that is to say people who arent making money from my code :) If someone wants to use my code he can give me his under the same terms ... if that isnt to his liking he can buy a license off me.
Personally I like reciprocity, my goal in releasing anything is to share it with people. Not with as many people as possible though, but people like myself
Never.
Please cite examples. They don't get publicized, that's for sure.
Maybe it's because I don't hang around in IRC channels so I wouldn't hear about these lame proposals anyway.
THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
How many applications are actually used in linux if you exclude all of the ones specifically written to recreate the functionality of existing Solaris/Aix/Ultrix/Sco/SystemV unix functionality?
No one has yet contributed to trek7 on sourceforge, its been there for months.
So yes, the myth is true, just making something open source does NOT mean people will flock to it, no matter how good an idea or concept it might be.
I'm still waiting...
... and using closed-source software will get you shafted.
Ass.
THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
The answer to the (rhetorical) question is simple:
BECAUSE I LEARN FROM MY MISTAKES.
Imagine an art critic saying to a painter: "Your first work is sloppy, so therefore everything you do will be sloppy, and there's no way you can improve."
Generally, the more you do, the better you get.
Any program that requires Gnome or KDE will not be installed on my system.
Just use the GTK/QT lib, not a million other libs that no one has ever heard of.
And one of the advantages of that (unlike some gcc extensions) is that you can fairly easily make the code still portable:Of course, this way you'll still get the warnings on non-gcc compilers, but so what? Nothing's perfect.
GCC is littered with HUNDREDS of very cool extensions. Just make sure it's worth giving up portability...
Even if you do use non-portable gcc extensions, you're not giving up that much portability. Unless you're still working with 16-bit (or smaller) platforms, you're going to have a hard time finding systems that don't support gcc!
Compiler-independence is much less important when your target compiler is nearly as portable as the language it provides.
(Note: I generally avoid gcc extensions myself, unless there's a good reason to use them -- I'm just saying, it's not necessarily a big deal if you do use 'em.)
From your other writings, I take it you are a libertarian. The problem with the GPL is it forces you to make source available (by way of copyright). This is limiting, just like not being able to copy is limiting.
-Libertarian secular transhumanist
Wouldn't it just be better if the whole thing was rewritten from scratch, or if you could adapt a program already available into what you need? I don't know how f***ed up your system is, but 10,000 lines isn't that much, especially if you take some preexisting code from sourceforge or somewhere and adapt it.
The truth is you were a terrible programmer.
I'm surprised that you don't name our clients either. Moron.
This was ontopic.
See also: Kitchen Sink Syndrome, Second System Syndrome.
I usually mark some warnings as errors so that compilations stops when it founds one.
It also runs all regression tests as part of the compilation process. It is not a separate step.
Yes the whole thing takes a minute. But then I am more careful when coding.
We are Turing O-Machines. The Oracle is out there.
Solve your real problem first. Generalize after you have working code. Repeat. This kind of reuse is opportunistic...
This is sheer idiocy. If anyone disputes this, I've got some code I'd like to show you...
(Trying not to flame) This guy doesn't know what he's talking about. The proverbial "reinvention of the wheel" is not really reinvention. The problem is that programmers do just what he suggests - rather than think through the problem, and how they can create reusable code, they proceed to cobble together some garbage which solves only the specific problem at hand. Which leads to other programmers having to "reinvent the wheel" because the first programmer didn't make his code reusable!
You can't have it both ways. Either you reinvent the wheel every time, or you write reusable code. It's a discipline, folks - sometimes you have to put forth the extra effort up front to make gains in the long run.
The first three years as a programmer, I must have written at least half a dozen linked list implementations. It wasn't until I had worked on some large projects that I learned that writing reusable code is well worth the extra effort. I was the guy who "just coded the solution". It took me a long time to learn that the more time I spent thinking about the problem, the less time I spent on coding and debugging.
The society for a thought-free internet welcomes you.
Is this correct?
:-)
Code reuse = maturity + experience
I gotta offer that beginning programmers simply don't have a ton of code to reuse unless they avail themselves of open source.
"Obviously, I'm not an IBM computer any more than I'm an ashtray" (Bob Dylan)
I like the thought process for open source discussed here:
o ry id=20
http://www.tyma.com/modules/news/article.php?st
Myth: Installation and configuration aren't as important as making the source available.
Reality: If it takes too much work just to get the software working, many people will silently quit.
No, they will quit and then bitch about it on slashdot. :)> Oh the perils!
IMO a nice alternative for doing the unused trick is to do it the other way round, i.e., to have a define that explicitly says UNREF:
and then use UNREF instead of GCC's attributes. This has the nice property that you can do warning suppressions for other compilers and tools (Lint for example).
The same approach naturally works for a variety of different attributes and keywords such as always_inline (e.g., with MSVC you would want __forceinline for this) and __restrict__. Of course none of this matters if you only use GCC, but many times there really is a need to compile code using many different compilers, each having their own set of exotic attributes used for controlling compilation.
I agree with the parent who mentioned that GCC should have some way of suppressing warnings locally. Unused variables is only one example of these warnings (and easy to avoid with proper defines). There are many others, some of which seem to be nearly impossible to suppress without resorting to globally disabling them from the command line. Some of these can be coded around, but then there is the problem of conflicting warnings across compilers, i.e., compiler A gives you warning A' and compiler B doesn't. If you modify the code so that compiler A does not issue a warning, it might make compiler B issue warning B'. Which is kinda annoying.
I often submit patches to random projects. It's nice when the authors thank you and give you credit.
:)
;)
;)
Some people may take your patch or bug report as a personal attack. The project is probably their baby after all. So make sure when you report a bug, or patch that you are humble about it.
Thank people for their bug reports. They are doing you a favour. If you are nice to them they will probably help you out in the future.
If you can, try and make a patch for the problem rather than make a bug report. Allthough bug reports are still quite useful
Some groups don't apply a patch. If this happens ask them why. Common problems are they can't test your patch, they don't know how to apply it, or there are 500 other patches and they just don't care. Perhaps they don't understand your patch. Maybe they are hiking in Nepal
If you respond to user problems quickly, and fix them your work will decrease. If lots of people ask the same questions on a mailing list, instead of making a FAQ try and answer their questions when they use the software. Then you don't have to get angry and tell people to rtfm.
Credit people for their work. Some projects get lots of patches yet basically claim all of the work as their own. I have make bug fixes, added features and made optimizations to projects that didn't even recognise me as doing those. Made me think twice before spending weeks working on their software.
Some bug fixes, or features take weeks to make. So try and give a little time to help people get their changes into your code base.
Have a Features list on your site. Also have a Problems list. Having the problems list/limitations list can save a lot of disapointment, and time for people. Listing that a function is buggy on such and such a platform, or is slow, etc can be really helpful for people.
One nasty person in an irc channel, or on your mailing list can ruin the reputation of your project, and send away lots of users. Try and persuade that person not to be uncool and heavy
Any other things you can do for a better open source project?
Have fun!
Open Source projects should start using a system of "feature bounties", where a person can post a feature that they want implemented on the site, put down their money, and when enough other people chip in for that feature, some hacker works full time to get the feature working and earns the bounty. KDX, a closed-source BBS-like program for Mac and Windows, used a system like this when it was still freeware, the one programmer working on it suggested people should pay him bounties for features, and apparently some people did it. Now it's paid software, $30 for the client, but oh well, it was a good idea. The only issue is, will it destroy the community to have these "mercenary hackers" running around implementing features for cash and then moving on? Or will it make free software more robust?
Free Speech, Free Software, Free Culture
It came up when I was trying User-Mode linux on 2.6.0-test3. The user-mode-linux process keeps crashing when an IPv4 packet is received. I gdb'd around a little (I didn't know much about linux's network stack, but it is not too hard to find the usual code paths), and found (after two hours) that the crash happens upon returning from ip_vs_in(). This function is usually not compiled in, especially on user-mode-linux systems, so maybe that's why other people haven't found that. Every subroutine in ip_vs_in() runs normally, so I traced instructions and found that the return address is wrong. It is probably stack corruption, I thought, so I put a watchpoint on the original return address on the stack upon entering ip_vs_in(), but it was never hit. Then it happens that the stack pointer is not the same when exiting from it! Looks like a GCC bug, and disassembly confirmed it (it was a large routine, but in this particular case only a small part is executed).
I don't know much about GCC, so I can't fix it, but making a testcase is relatively easy because it is a reproducible bug. I just sent a bug report to redhat's bugzilla (because it is the gcc in redhat 9), which contains the exact gcc versions, the options used, the preprocessed file, and the corresponding incorrect assembly output (with some explanation about where the error is). As for simplification, I think gcc developers can do it better than me (after all, the bug is obvious even in the unsimplified test case), so I didn't do it. The bug got fixed in a matter of days.
Go on. Send it to him, I dare you. And I think he'll laugh.
RPMs are available now, with detailed instructions, on the project site. It is just four RPMs without too much dependencies if you don't want to run the Apache-based server (which is harder to install, but most people won't need that at first). It worked well for me.
That guy doesn't know what he's talking about.
I got news for you Mr."chromatic":
There is no such thing as "OSS-developement". Therefor there cannot be any myths about "it".
There are all kinds of flavours of OSS-projects, little toy projects by bored students, beasts like mozilla or OOo, projects that are partially (or fully) backed up by a company and many other constellations you might not even be able to imagine.
So some of the "myths" you claim (most of them sound as if you made them up while taking a break from digging your nose) might apply to some individual OSS-projects.
But as someone who publishes articles you should know how the really-old saying goes: Broad generalizations never work well.
And in case you feel like you are the prototype of an OSS-developer and therefor qualify to define "myths we tell ourselves" I've got even more news for ya: you're not.
We must work on other people projects, not create our own. We must be able to locate that project if it exists.
I think that the comment about not throwing away code might be misconstrued somewhat. The text appears to be more about not working on a similar project and fixing that. The text talks about "yet another" IRC, text editor etc.
The biggest problem I see is being able to locate that project or even part of a project that you want. Take a look at perl CPAN for an idea of how it should work. I though SourceForge would help however this is only part of the FOSS base and it is very difficult to search. For example I am doing a perl course and I searched for notes, I could not locate spork project for searching, I found it by looking at a paper copy.
Take you ideas talk to those working on similar projects, see if your ideas meet and start working with a project. Fork if you have to, reference the original project in your documentation, track the original project. Above all be prepared to merge and become a single project with another, be humble shut yours down in favour of another egoless programming.
The fact that you find them obvious just means that you actually work in software development, and have real experience. Neither of those two can be said for 98% of Slashdot's OSS 'supporters'.
I can add another myth: most people who claim to love the fact that they have access to OSS source code dont really program anything, or even know how to. The term 'script kiddie' comes to mind.
Manipulate the moderator system! Mod someone as "overrated" today.
What kind of car??
But they can steal your users, your developers, your testers, your mindshare. To take an extreme example, what if M$ released a 'new, improved' version of your app? Wouldn't it take but a short time before most people used their version, complete with incompatible extensions and lock-ins? After that point, they could close the code, and it wouldn't matter that you still had your original code; it wouldn't do you much good.
In practice, of course, it's not likely to be as bad as that. Few companies have the clout to take over a project like that completely. But many companies and groups of people could do serious damage to a smallish project on those lines.
It's that loss of mindshare that licences like the GPL were designed to avoid. For some types of project, that sort of top-level mindshare isn't important, either because they have their own captive audience, or don't need anyone else. And some care more about getting the code out there and getting it used. But for others, mindshare may be important, and so, rightly or wrongly, licences like the GPL are there for them.
Ceterum censeo subscriptionem esse delendam.
The surest way to gaurantee involvement in a project is to create a community around it. Forums, user/contributor publishing, blogs. Anything that will let your contributors express themselves regarding the project.
Let people get involved, encourage them, provide a forum.... hopefully provide the tools (sourceforge) but also provide a unique community experience. Create a brand (read a book on marketing) and you will reap the rewards for years... think about Aibo for instance...
A fool throws a stone into a well and a thousand sages can not remove it.
I guess I did a quick google, and the first few links came up with an Alan Cox who was a Professor of Computing Science, and I just jumped to conclusions.
The original point still stands... these people do have degrees.
+ She likes to romp about the house,
;-)
+ and chase my USB Intellimouse.
Your patch creates a tight coupling between two disparate modules. The arcnet documentation should not know about the USB HID internals.
I'll just have to be quicker next time. (-;
20 mil and I will! Learn Esperanto with 20M others.
I've found this myself ... not a single person has contacted me and offered to help develop or debug the code.
It all depends on who your users are. I have put two small projects out as open source - The first never attracted any code fixes, but the second, a coding utility, (ie the users are also coders) atracts a small but steady stream of patches.
My Karma: ran over your Dogma
StrawberryFrog
This isn't going to be as cool as the car analogy in Neal Stephenson's "In the beginning, there was the command line" essay. Sorry about that.
My car is an 86 Lincoln Town Car. I can take it to pretty much any dealer -- or even just a good friend -- any motorhead at all -- and they can service it, or even mod it. Some modern cars won't even let you get a spare key without going straight to the dealer and spending $50-100.
Open source is like my car. If you find a bug and no one wants to fix it for free, you can hire someone to fix it. Need a new feature, and the community's a little sluggish? Hire someone to do it for you. Then release the improvements to the community -- if not because it's the righ thing to do, you'd do it that way so that the next version would already have your feature, without a lot of work from another hired coder.
The best example I can give is Counter-Strike. Valve made Half-Life, which was cool enough itself, but they let people mod it. I know it's not open-source, but modding still has a community. In fact, several very good, entirely new games came out of that community -- Counter-Strike and Natural Selection, for example.
Now, as an end-user, I don't make half-life mods myself. But the fact that others can make such mods definitely benifits me.
Don't thank God, thank a doctor!
Was it coming on intermittently? If so, it probably means that the oil was too low, leaking perhaps, and sloshing about. Of course, very old and worn engines might have the oil light come on at idle no matter what you do, but by then they're well overdue for a set of bearings and rings.
Now after publishing his email address, he will get lot's of SPAM. I'm sure he'll aprecciate the email though....
--
For great deals on electronics and computer equipment visit Retail Retreat