Fog Creek Software
g
Discussion Board




How to make opensource better

To cut down on your false assumtions, I
must say upfront that (1) I use
opensource and (2) I think it's crap. I
don't argue about those two points. I
want to hear your opinions on how to
make opensource better.

My problem is that yeah, you can fix it,
but well, it costs several hours per
line of code. I have to spend several
hours making sure that it is not my own
fault, then hours wading through
somebody else's ugly code, then hours
proving to maintainer that there really
is a bug (the guy is clueless, but he
has Cvs write access), and only then my
three line patch is committed. That's my
experience with libraries, but similar
waste of time can be observed on part of
users submitting bugs to application
maintainers.

Now you know from Joel's articles and
from your experience that there are ways
to reduce such waste of time. Code
ownership (but not hiding nor
distribution control nor parasite
attaching), tight interfaces and
completeness, upfront thorough testing,
non-zero rewrite rate, resolving hard
goals in design, or just using right
tools. All that can keep debugging
effort much lower than effort invested
into new features and rewrites. Plus it
allows producing better software.

That's all nice and cool, but you know
what does opensource development look
like now. There are one to five main
developers who contribute a lot of code,
but they are goal oriented and they are
not willing to maintain their code once
the goal is reached. Instead, they ask
for bugreports or even patches. Then
there is 10-100 contributors who invest an
hour or so weekly. They don't care about
original design and twist it
considerably, turning the code into
rat's nest if contributions are
frequent. Then there is me and other
users who sometimes submit a patch but
more often just create local workarounds
being frustrated with patching torture.

So what can I do, being lowly user of
most software and part-time contributor
to two or three programs? Once the
organization is big, it's hard to
change, but starting from scratch will
not give results in foreseeable future.

Robert Vazan
Thursday, November 13, 2003

"My problem is that yeah, you can fix it,
but well, it costs several hours per
line of code. I have to spend several
hours making sure that it is not my own
fault, then hours wading through
somebody else's ugly code, then hours
proving to maintainer that there really
is a bug (the guy is clueless, but he
has Cvs write access), and only then my
three line patch is committed. "

It doesn't sound like you are cut out for the process.

/.
Thursday, November 13, 2003

"I have to spend several hours making sure that it is not  my own fault, then hours wading through somebody else's ugly code, then hours proving to maintainer that there really is a bug (the guy is clueless, but he has Cvs write access), and only then my three line patch is committed. "

unless you can post straight to production, I also assume you have a process for getting code there and someone else who runs it.  A QA team the validates it, and if your organization has any spine, someone doing code reviews. 

Unless you are doing "from scratch" development this is how 80%(99%?) of the software is worked.  You are changing someone else's code.  Open-source differs only in that it allows total strangers to change code.  To do that requires a gate keeper, who if they are doing their job,  takes your changes and validates the issue and solution. 

I find it amusing to hear the "crap" comment.  What exactly makes it "crap?"  That the code is not formatted?  That it is difficult to read?  That it is wanting in documentation?  So...is your copy of Office-XP source formatted, easy to read, and well documented?  Your copy of Quicken?  The code you wrote last year?

Or is it that the product does not work well and is serious need of help?  If it is the product itself, consider the faith you would have in a carpenter who was measuring with a string.  Yes, a tape measure would be great, but this piece of string was free.  -- It is the poor carpenter who blames his tools.

MSHack
Thursday, November 13, 2003

I think this is just a troll. 

You can't say all open source projects are crap any more than you can say all shrinkwrap products are crap.

There's a world of difference between Apache on the one end and some poorly run sourceforge project on the other. 

Other than that, open source projects have the exact same issues as closed source ones.  Same rules apply.


Thursday, November 13, 2003

No, I think he's for real. It just indicates how incredibly stupid some (most?) open source programmers are. Look at the assumption that we must be interested in working to improve open source.

See. No brains. Doesn't ask whether it's good to improve it.

Sign. Does programming have a future?

.
Thursday, November 13, 2003

I agree with Robert. Good programmers on open source projects are few and far between. Good programmers trying to fix simple bugs have to wade hrough a political process that puts the happenings in the courts of the Ming dynasty to shame.

My experience with open source matches his. There's lots of bugs and problems and given the time it takes to fix them and then to convince others that the fixes are Ok and I am worthy to breath in their holy presense, I could have reimplemented the whole of what I need from scratch. Then, the next time I try to synchronize to the open source library I spent weeks fixing basic bugs in (proving that no one actually uses the library in question), some other geeks have gotten their fingers in there, introduced slews of new bugs and broken functionality, and arbitrarily refactored the whole friggin API.

Dennis Atkins
Thursday, November 13, 2003

Care to name projects, people?

I've contributed patches to FLTK, and a few other projects. Not all of my patches were accepted, but the answers were always polite. This has also been the experience of every other contributor I know.

There are a few "hollier-than-thou" projects - XFree86 is famous for that.

I really would like to know what projects not to waste my time on.

Ori Berger
Thursday, November 13, 2003

XFree86 is a pile.

/.
Thursday, November 13, 2003

What's cool is the
way he structured
his initial post it's
almost like a poem
at least one of them
prose poems you know
the kind I mean e.e.
cummings or someone
who doesn't capitalize a
lot and leaves words hang
ing in mid air and loves lots
of run on sentences.
Shakespeare it ain't.

Portabella
Thursday, November 13, 2003

Dennis,

I have a hard time believing you've ever even seen open source code!

In fact, I'd venture most people here haven't seen any.  I use a few open source tools that I don't even look at the source code for: Linux, Apache, and PHP.  Most of the time, these products just work.  If they don't, I fire off a bug report and let their PAID developers fix them.

I am however looking at porting the sqlite library to a non-Posix, non-Windows platform.  I grabbed the source code, looked at the documentation, and joined the mailing list.  I managed to get a proof-of-concept version working failurely easily -- OS-specific code was well isolated and it's overall well designed.  The principle author of sqlite gives out his phone number regularily to developers so they can talk to him directly about issues.  All in all, it's a pretty good experience. 

I do think most open source C code looks like hell...  but then that's the code I don't work on.  I don't get why  people are so down on open source...  if you don't like it, don't use it.  Nobody is holding a gun to your head.

Almost Anonymous
Thursday, November 13, 2003

While i must say I have seen some crap open source software, and I use open source 100% of the time, some of the points are crap.

Political process? Take openbsd for example, very good, high quality operating system. There is NO politics, you give a diff, they say, yeh this isn't stupid, or if you're not a great coder, they take your point and do their own diff and apply that.

As regards crap open source coders, sure there are some, there always will be, in fact open source makes good coders concious about anybody in the world seeing their code, so they don't put in hacks, or silly workarounds, they do it right.

Anyway, probably a troll.

fw
Thursday, November 13, 2003

For what he had to say, he should have choosen an haiku.

Giovanni Corriga
Thursday, November 13, 2003

It totally depends on the project.  I've worked on one small/medium (20K LOC) open source project, and most of the issues you mentioned didn't occur.  At all.  I got quite a bit of code from people though that was *horrible*.  Sure it implemented features we needed, but it was not anything I'd put my name anywhere near.  I was nice to the people and let them know.  Most open source projects in which I've interacted with the maintainer have been that way as well.

Open source isn't a panacea.  There are just as many jerks and prima donna programmers writing open source code as writing closed source.

Go to sourceforge and you'll see tens of thousands of projects.  How many on sourceforge are worth your time?  probably less than 100.

Go to Fry's electronics and you'll see thousands of software titles.  How many are worth your time?  Probably less than 100.

The barrier for COTS software is higher, so it might raise the bar a bit.  But there is still the same people writing the code.

If we could look at a random sample of commercial codebases, and compare them to projects of similar size, I bet the code wouldn't be that different.

Andrew Hurst
Thursday, November 13, 2003

> Go to sourceforge and you'll see tens of thousands of projects.  How many on sourceforge are worth your time?  probably less than 100.

I have no problem with your post there -- 99% of opensource is a waste of time and the 1% that's good is well known. Stick with the brand name.

Apache? Got it.
Perl? It just works.
Python? You know it.
Flex? Bison? Emacs? tcsh? check check check check.

The stuff that's good is well known and is generally complete applications and tools. The rest of the stuff -- including almost all of the libraries (like wxWindows for example which is absolute shit right now and you'd know it if you tried to support an app that made the mistake of using it) and just about everything with a GUI is absolute crap.

Dennis Atkins
Thursday, November 13, 2003

I'll also take the opportunity to name Mozilla as an unstable monstrosity with crap code written by weenies.

Dennis Atkins
Thursday, November 13, 2003

"(like wxWindows for example which is absolute shit right now and you'd know it if you tried to support an app that made the mistake of using it)"

wow, I have to totally disagree with that. Ive used wxWindows a fair bit for osx, classic macos and windows development and Ive found it be be bloody good.

is it the most recent version you are using?  or is it all older legacy stuff?
Maybe the original programmers of the app you are supporting weren't so hot?  or maybe the old wxWindows api was less well designed and you app is still using that...

dunno but in my experience wxWindows is very good.

FullNameRequired
Thursday, November 13, 2003

I have no doubt wxWindows is great, most of the programs I have used in Windows break because of common programmer errors, not because of the wxWindows api [bugginess].

Li-fan Chen
Thursday, November 13, 2003

FNR,

The latest version I worked with was 2.4.1. is that way out of date? The project was a niche business office support app that had an OS 9 and a Windows version. The Windows stuff seemed to work OK but the OS 9 wxWindows would not compile with any recent iterations of CW, also I had to download about a hundred megs of extra files to get it to work at all. After about 2 weeks of full time work, I finally got wx to compile a single demo app, but that was all. There were complaints from customers that were tracked down to bugs in wx. I tried to fix it all but it kept getting worse the farther in I got and in the end it was easier to toss it all out and re-port the entire app to a custom library, which is where it is now and solved all the existing problems.

Dennis Atkins
Thursday, November 13, 2003

hi dennis,

"2.4.1. is that way out of date?"

not majorly, the latest is 2.4.2 IIRC.

in terms of classic  macos support it is though, there has been a _lot_ of work done in that area which has improved it a lot since 2.4.1.

"The Windows stuff seemed to work OK but the OS 9 wxWindows would not compile with any recent iterations of CW"

hrrmph, thats pretty odd...I am _still_ using cw ide version 4.2.1 or somethign like that (just too cheap to upgrade) and it compiles and works without problems.
I started with wxWindows 2.4.0, and I never had that much of a problem getting things compiled and working.
hmm..If I was going to guess at the problem Id bet money that you were using the wrong set of universal headers...not a wxWindows problem but an 'apple changing the universal headers a lot during the release of osx' problem...is that possible?

" also I had to download about a hundred megs of extra files to get it to work at all. "

what files?  assuming you got the windows version working first I assume you were downloading the macos specific files?
<g> not much they can do about that I guess....

"After about 2 weeks of full time work, I finally got wx to compile a single demo app, but that was all. "

wow, you certainly had more problems than I did.  Mind you, I had been developing x-plat stuff for a while before I got into wxWindows, so maybe my experience on the mac classic side helped a bit.
Im still guessing that your main problems were with the universal headers and not wxWindows at all...is that possible?

"in the end it was easier to toss it all out and re-port the entire app to a custom library, "

_ouch_  <g> I do understand why your opinion of it is so bad now, that must have really hurt.

which versions of cw were you using?  maybe that was a part of the problem.

its interesting how experiences and opinions can vary so much between developers working with the same tools.
<g> explains the sheer number of libraries available I guess.

FullNameRequired
Thursday, November 13, 2003

I don't recall all the stuff I had to tweak, maybe some of it was bringing wx up to date with universal headers 3.4.2. Just recall it was a nightmare and it kept getting worse.

I tried it with both CW 7 and 8 over the period I worked on it. I'll take another look at the new release sometime if I have the time since you say they've done a lot to bring it up to date with the old mac stuff. For new projects that only need to be on OS X and on XP, I approach it by writing a completely different UI for each platform and avoid cross-platform libraries completely and having all the regular non-UI code completely factored away from the UI code.

Dennis Atkins
Thursday, November 13, 2003

"Just recall it was a nightmare and it kept getting worse."

;) I hear you.

"I tried it with both CW 7 and 8 over the period I worked on it"

hmm, interesting.  Ive always used cw 4....I forget now, what version of cw projects are the examples provided in?  another possibility if they are provided in an earlier version of cw is that the opening of them reset some vital flags somehow.

"I'll take another look at the new release sometime if I have the time"

could be worthwhile.  As I said, Im actually rather a fan of wxWindows because of how well things have gone since we adopted it.

"For new projects that only need to be on OS X and on XP, I approach it by writing a completely different UI for each platform and avoid cross-platform libraries completely and having all the regular non-UI code completely factored away from the UI code."

right, and thats a pretty good way of doing it as well.

I like having the one set of source code to look at, but if wxWindows hadn't gone so well that is what we would have been doing.

FullNameRequired
Thursday, November 13, 2003

The CodeWarrior 4.2.1 IDE shipped as part of CodeWarrior Professional V7 for Mac and Windows, IIRC. V8 had IDE 5.0, and the current V9 release has IDE 5.5.  If you're using an IDE 5.x-based product, you can find the real version number in the About box by clicking on the "Installed Products" button.

Ben Combee
Thursday, November 13, 2003

Ok, let me round up:

Only two names were raised so far: XFree86 and wxWindows. The latter wasn't actually agreed upon. This discussion _can't_ be meaningful without concrete examples of projects and incidents.

Other projects were commended, though: Perl, Python, Apache, FLTK.

Ori Berger
Friday, November 14, 2003

This thread got out of control. I didn't
want to discuss what's good and what's bad
in opensource. I don't care that much
whether something is high quality.

I wanted to say that if quality drops below
certain point, the software gets more
expensive for everybody involved, including
developers themselves.

The ultimate question is how can *I* make
*others* behave in a way that such waste of
time is eliminated. They are smart people,
but they work this way for ages and habits
are hard to change.

I heard some references to projects that do
it right, so maybe I should check them out,
but I doubt they make their style public
enough. No one mentioned good Gui project
yet. I think that Gui is the way to go and
it's most of what I am using now.

Robert Vazan
Friday, November 14, 2003

"It doesn't sound like you are cut out for the process."
I don't think that I am exception.

MSHack: Price for one bug is OK, but there are too many
unnecessary bugs that would be cheaper to prevent. I
said that opensource is crap, but it is not related to
anything else I have written. My point is waste of time.

"I think this is just a troll."
People think this whenever somebody mentions opensource,
because of numerous Windows/Linux flamewars, which are
unfortunately starting to appear here too. Ignore them
and concentrate on the process efficiency problem.

"There's a world of difference between Apache on the one
end and some poorly run sourceforge project on the
other."
What makes Apache different? (if it is really different)

Dennis: I don't think it is about good or bad
programmers. Most programmers that I have worked with
are very smart people. But the code is full of
unnecessary bugs anyway. And bugs aren't the only time
waster.

Ori: Again, I work with smart polite people, but the way
they do the work (and I extend it) is not efficient.

Portabella: There's a limited number of columns in the
edit box. Maybe it is because of my Lynx.

"Linux, Apache, and PHP"
It looks like the bigger the project the better it is.
On the other hand I think that Linux has too much
attention for the results it gives. Not a way to save
time. I don't know about Apache, but Mozilla is another
case of too much work on too few features. Thousands of
developers and millions of users, what a dream.

Andrew: So what does the projects, that you have worked
on, make better?

Dennis: Interesting, I am also tired of wxWindows.

Li-fan Chen: What do you thing does wxString::find('B')
on wxString("A\0B",3)?

Robert Vazan
Friday, November 14, 2003

"It looks like the bigger the project the better it is."

Or perhaps it's the other way around!

"On the other hand I think that Linux has too much
attention for the results it gives."

For the results it gives?  It's not a good desktop OS, but it's scalable from handheld computers to mainframes and everything in between.  We are very rapidly coming to a world where the only PC/sever operating systems are Linux, BSD, Mac OS X (BSD again), and Windows.

"I don't know about Apache, but Mozilla is another
case of too much work on too few features."

Mozilla Firebird is where the mozilla project is going.  It's small, faster than IE (except at startup), and has a huge number of features and capabilities.  It's also not even at it's first release.  In our logs, we're seeing a lot more Mozilla users.

Almost Anonymous
Friday, November 14, 2003

*  Recent Topics

*  Fog Creek Home