Open-Source Development 'Faster, Better, Cheaper'
David Hart writes "Faster, Better, Cheaper: Open-Source Practices May Help Improve Software Engineering --
Walt Scacchi of the University of California, Irvine, and his colleagues are conducting formal studies of the informal world of open-source software development, in which a distributed community of developers produces software source code that is freely available to share, study, modify and redistribute. They're finding that, in many ways, open-source development can be faster, better and cheaper than the 'textbook' software engineering often used in corporate settings."
Textbook soft.eng is about making money and how to prevent from being sued [e.g. you do what you agreed todo].
While OSS development [well freelance stuff anyways] tends to be more about actually getting work out the door. Don't like this particular OSS, fix it or find other stuff. E.g. no pandoring to stupid demands of market droids.
Tom
Someday, I'll have a real sig.
In the context of development, "faster" and "cheaper" are somewhat well-defined, but "better" is simply too fuzzy. There are many qualities which contribute to "better", and some of them are in conflict (e.g. "more profitable for the marketer" vs. "easier to get bugs fixed"), depending on the value system of the speaker.
We need to be more precise in our terms when defending or advocating open source, else we'll appear as silly as the suits that think that programmers that expend more lines of code to produce a solution are thereby more productive (or geeks-who-should-know-better who think that execution wall clock time is the only measure of "efficiency").
When big companies use Open Source, the pointy-haired boss is the real winnner.
Manipulate the moderator system! Mod someone as "overrated" today.
Open source projects attract people who have an interest, and often a talent, for the project. The same can't be said for many corporate projects, where you may be shoveling shit, but you're being paid to shovel shit.
Mea navis aericumbens anguillis abundat
~~~
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.
At one of the major corps(5000+ employees) that I consult
for, we wanted to integrate the shareware version of Linux into our
server pool.
There is no shareware version of Linux it's open source.
I took it upon myself to configure the
system from scratch
And herein probably lies your problem. Buy a boxed set, don't fuck about with it and you'll probably find your problems go away. I doubt whether a Forune 500 company would object to paying $90 for a package they can install on an unlimited number of servers.
Hmmmmmm..... Deep fried and look like Squirrel.
This setting wouldn't work most of the time, IMHO.
For open source to work there needs to be a certain public interest in the software, and there need to be developers in the group of interested people. Opening up software that nobody wants to look at or develop further is totally pointless.
A lot of software out there (I dare to argue it's the majority of the software out there.) is simply too boring or to business-specific to benefit at all from open source.
+++ATH0
Maybe a little old but hindsight is better sight.
From my own Web page
PROBLEMS IMPORTANT TO SOLVE
Attention Getting Points
------ FROM ------
COMDEX SPRING and WINDOWS WORLD 95
Power Panel - "What's Wrong with Software Development"
** In The U.S. Only **
$81 Billion = 31% of software development gets cancelled before complete
$59 Billion = 53% of software development has cost over-runs of 189%
16% success - project success and failure ratio
61% customer requested features and functions make it in
Maintenance and repair is where most of the U.S. dollars are going,
instead of new, better, easier to use software.
---- Overall ----
Problems - all-around lack of complete documentation and weak training, faulty user input and feed back - self contradictory user request, lack of project leadership between developers and users, management created problems and low quality control standards, feature creep and software size increase, advancing technology rate of change and lack of general standards, solutions around the corner but never arrive and our tools are better than theirs attitude, lack of a value chain structure for value added abilities, failure to produce a functional model before coding and constant remodeling, etc.
Solution directions - code re-use, object oriented programming, component-based programming, distributed components, better tools, better programming methodologies, leaner software, a splitting of code writer types into two catagories - architects and assemblers, better effort to establish a working vocabulary between developers and users so users can in some way lead development, etc.
---- A Few Comments from Panel Members ----
A culture needs to evolve that respect software engineers as crafts-people. Writing code is not just writing code but like the field of writing where you have technical, creative, documentary, etc., there are different types of code writing. (Authors' note: I agree with this but also realize end users are even more specialized in what they need and do. Respect for the end user needs and abilities is needed even more so. Without respect given to the end user, the software engineer will not be given respect in return.)
A fundamental change in the programming environment needs to happen that allows the tools to work together more. (Authors' note: the panel member making this comment, did not specify what tools or who the tools would be used by. It was a very general comment pointing to a fundamental programming environment change. A lead in to the concept of componet programming. But, there was no recognition given to the concept of componet software or componet applications. At least not in the sense of being outside of "plugins". Read on!)
Jokingly - one of the best ways to copy protect software is to put it in a dll, give it an obscure name and put it in the windows system directory. Because you'd never find it. (Authors' note: This does not make it any easier for the end user in keeping their system organized, clean and optimized. This attitude of constraints, though humorous, cost end users alot.)
The meaning of "intellectual property" became questioned. Did it mean you take the best ideas or something owned? (Authors' note: it was the panel supporting "best ideas" but wouldn't the correct term for this use be "intellectual value" rather than "intellectual property"? What would happen, regarding this, in a court room? The audience member whom brought this up, was a bit angry about the distortion. Her question was: Is it the developers whom are creating the problems? And what are the developers going to do about it? The responce was "that's not the problem!")
Users shouldn't develope software but know, better than the developers, what they want and need. (Authors' note: users don't have the time to write code, it's not their job or duties!!! I can cut the lawn, I know h
if you are a developer, you don't get paid. As open source places no commercial value on your time, energy and creativity. You are advised to work in a the service industry, in addition to developing a product. Some business model. You need 2 jobs to get one salary.
The only people who got money from open source basically got "lucky" (cough) with stock and uninformed investors during the boom.
I don't deny that some of the software is excellent. It just takes value from the industry that I and many of you work in. (while adding value to other industries, but hey, what do I care about economics).
Mod me as a troll, I dare you.
A big problem with this whole idea of OSS, and then measuring it against traditional metrics, is the issue of motiviation/demand.
In a corporate setting, programmers are coding because "That's my job". People say "I am a programmer". They get paid for it, money, career, fullfillment, retirement, are the goals.
In the OSS world, the motivations are vast. For some its fun. I like to program. Why not give away a piece of my hobby to others? I don't need it. For some its profit. If I write this program maybe a corporate sponsor will back me, or maybe individuals will donate to me. For yet others its anti-someone-else-ism. If I write this it'll be the gutter for Microsoft.
This is all well and good. The problem is that in the first setting it is much easier to get someone to do something hard and unrewarding. Write a device driver for a crappy USB chip? Yessir. Write and update a comprehensive design document? No problem-o.
In the OSS world, there is a glut of people working on fun projects - or projects that are rewarding. You have dozens of people working on chat programs. You have a strong number of people working on projects that will thumb MS in the eye- OpenOffice for one.
But in the OSS world, there isn't a lot of work going into unfun projects - and the work that is being done mostly by corporate sponsors (who can say, again, 'do this' to a programmer for hire).
Examples come to mind: in the closed source world there is plenty of really good desktop publishing software. In the open source world, it's not a fun project. It's hard. It requires lots of industry knowledge. It's a small market and therefore a small pool of programmers. It's unrewarding - you won't have a cult of personality like Linus. Another example already mentioned is device drivers. Even when documentation exisits getting a really nice high-quality device driver is somewhat rare. It is easy to cut corners and implement only what is needed for a specific job.
This is an important thing. A lot of small companies I've seen have been turned off about using OSS as a development model because expectations are high. Just because a product is released as OSS doesn't mean developers will flock to aid the project.
This disparity in motivation can lead to a hard time quantifying results. A project that is fun, high profile, or highly profitable will have excellent results compared to a typical corporate project. A project that is non-fun, not likely to go anywhere, but somewhat more "down and dirty" is likely to fall far far behind commerical development standards.
They'd get further researching a new community model, as Open Source is likely the only fully-functional meritocracy ever. In other fields, a meritocracy is virtually impossible, but software has no re-production cost.
Learning how to make a meritocracy work can be extremely useful. All companies try to, at least a bit, by giving employees stock options so they benefit from doing well, trying to give promotions to those who are successful, trying lotsa crap ellipsis.
However, that is very hard. If a company could get itself to be a working meritocracy, it would benefit greatly. Just look at how good open source works.
GOD, WHAT IS WRONG WITH SLASHDOT MODERATORS!?!?!?!
I have mod points myself right now, but how do you mod a post as completely clueless? I could have wasted a mod point on "overrated" but somebody would have just modded it up again.
The parent post was a JOKE!!!!! How could anyone but a PHB read it and not realize it was a joke?
---------------------------------------------
SERENITY NOW!!!!!!!!!!!!!!!!
That's debateable. What you need to debate is what else is doing what they are doing.
Mozilla: It's making a standards-compliant browser. It is clearly done faster, as it's the only one out there. Fairly self-evident.
Wine: It's reimplementing an OS without access to the internals. What are you comparing that to for purposes of determining its speed? I personally think it is occuring extremely fast, all things considered.
Linux: Seems to be developing fairly on-par with other kernels. Yes, it took a while to get to where it is now, and had some comparitive slumps, but where was everything else when Linux started? Unix was ahead. Windows was DOS, right? MacOS was an early classic one? I really don't know, but it seems fairly close.
Consider this: It's ahead of Windows on most high-end stuff, now, and has been on-and-off for a while.
MacOS had a speedy jump in progress with OS-10, but that was also open-source development (BSD base, partially open still) so that's just an agreeing argument.
As for commercial Unixes, I haven't a clue, so I won't talk about them.
gcc: I haven't a clue. I really don't. Just noting it because you did.
For my own example, MPlayer: MPlayer started about the same time that media players got big on other systems. Without having any source information for codecs and so-such, it's stayed just as far along technically. Ever since it's been around, I've been able to watch things about equally well under any OS, except DVDs.
The main area I see OSS lacking is in interfaces, which is why MPlayer is such a good example. Good God, is that a bad interface. Not the worst, no, but it tries. I'd say that is a part of the 'better' thing.
OSS is good at doing most of stuff, just not at getting EVERYTHING together. For a lot of things they do the technical end while the interface lags, or they do the interface and it's got a buggy back-end, or they make something really good but it is so messy inside it needs a total re-write to add anything.
I don't know how that compares with the problems of closed source, as I've never worked on it, but those are just the way I see the issues.
You forgot one reason to do open source.
I'm a good programmer, I can write an OS, windowing system, Word Processer, etc all by my self. Well in theory, doing all that alone to even the quality of Windows 3.0 and WordPerfect for Windows (which sucked in those days) is close to byond the time I will live, and in the meantime I don't have programs to use.
When I work in open source I can take advantage of other's work. So I write [part of] the VM for the kernel, while others write everything else to make the kernel work, more others right the libraries and utilties, and still others write my windowing system and word processer. Put it all togather and I have free programs to use, and the ability to change anything. So last year I re-wrote the VM that everyone is now using, this year I can direct my attention to nethack making it even better.
In other words: don't overlook the value of working with others.
No offense to anyone but I would like to see this study done by people who actually 'do' rather than people who just study. There is a big difference in the understanding of large project development deployment by someone like IBM (who does open source) vs someone at some university somewhere who does not have the full grasp of real world project/product development under their belt.
First of all, to be able to compare faster, better, and cheaper, you have to assign a value to the amount of engergy spent on a given project such that the resources expended (i.e. brainpower, electricity, etc) are equal on a per programmer basis. Then you have to create a project that requires multi-discipline engineering so that you are removing the quickie one/two man projects from the equation. Then you have to measure the output of the project on a non-commercial penetration, i.e. not how much revenue is generated but how many copies are in use and how is it beneficial. Additionally you should add the amount of energy from the project(s) that result in failures. Having multiple, parallel projects (commercial or otherwise) with similar goals and having one fail should result in that energy being added to the sum total of the type of engineering being performed, i.e. if three open source projects fail (or merge, or whatever) in order to create 1 that succeeds then the total energy expended has to be taken into consideration. For the closed source, closed project development team the amount of overhead involved has to be accounted for (including meetings, project managers, product managers, etc).
To just use one aspect of project development as an example, like the testing regiment implemented in a strictly closed source, closed development, commercial venture against that of the open source, open project venture you might find that the resources spent on testing are much higher (or not) for the open source project. Having 1000s of free testers (in an OSS project) is all well and good but that does not guarantee accuracy, depth, and efficiency of testing.
(anecdote ahead). I worked for a company that created java applets (put away your flame throwers and read) which manipulated large data sets and high resolution imagery in a browser environment. In order to test these applets we routinely ran them and the back end fullfillment servlets through 40-50 thousand test permutations every time we did a build, we did this with two people running more than 30 workstations. Where are you going to find the discipline to not only set up the tests but run them and generate all the proper reports in the open project community. We are talking about subtle cross browser, cross platform, cross version, even cross language bugs.
Anyhow, its one thing to create an open source project which can be driven by one or two visionaries and requires the input of very few others and another thing altogether to create a large, not so fun project that relies on the input of a large group of disciplined people.
The bottom line is that there is a lot of GRUNT, UGLY, W-O-R-K that has to be done in any large, multi-discipline project and I don't see a lot of that (yes there are a very few) in the OSS/OSP non-commercial community.
I'll pay you $1K if you can demonstrate how the Linux kernel can panic from Bind or Apache crashing.
You never worked with Linux or Apache or Bind. All names you have gathered randomly. Every sentence in your troll is false, like this:
Not to mention the fact that the Linux kernel itself lacks any support for any type of journaled filesystem, memory protection, SMP support,
You don't know what you are talking about. And it's so obvious that I am sure you won't pass any intervew to any consulting company.
I don't know why you are doing this troll. May I guess that you work for marketing department of Microsoft?
Less is more !