Open Source Project Management Lessons 296
cpfeifer writes "Paul Baranowski takes a moment to reflect on Open Source Project Management in his blog. His reflections are based on the first two years of the Peek-a-booty project." Interesting comments on media coverage, choice of programming language, when to release a project, and more.
Article text (Score:2, Informative)
Peekabooty - Lessons Learned
By Paul Baranowski (paul@paulbaranowski.org)
July 1st 2003
Here is a review of the first two years of the Peekabooty Project. Over that time I have had to re-evaluate many of the things I learned in university and in the working world - many of the engineering lessons that I had been taught turned out not to work so well. The project managem
Re:Article text (Score:5, Interesting)
Well, there is the STL and the Standard C++ library. These are not really hard to learn; it is just that they are both fairly new. The Standard C++ library and STL didn't become standard until around 1998 when the ISO C++ standard was formed. Because that is only 5 years ago, and C++ is much older than 5 years, there are still a lot of books and courses floating around that don't teach Standard C++. When you learn "Visual C++," or whatever, from an older book (or bad book) then it seems that the STL is hard because you are not use to templates and all that stuff (mostly because many older compilers are broken, ie VC++ 6.0, and don't support the standard).
If you learned STL and the Standard library when you first learned C++ then maybe they wouldn't seem so difficult. Also, many people who first learn programming in a language such as Pascal, like me! :), have difficulties learning generic programming because they are so used to thinking about what types your variables are. Templates and generic programming are very powerful, if you are willing to spend the time learning how to use them.
Re:Article text (Score:3, Interesting)
Who among us is soooo old that STL is new??
I hate these self-prophets roaming around the IT world. They are part of the fucking reason we had the dot-com crash. And they will continue to hamper the industry.
Fucking let everyone code in whatever they want man... Just stop trying to convince everyone that your own point of view is the best point of view.
I use C++ most of the time, but I don't cower at using fast throwaway stuff like the odd perl CGI script, or some ASP. Everything has its pla
Re: Documentation! (Score:3, Insightful)
"Document it and they will come."
A good project is nothing without it...
Re: Documentation! (Score:4, Insightful)
"Document it and they will come."
A good project is nothing without it...
Good point; somebody should document this.
Re:Article text (Score:5, Interesting)
Re:Article text (Score:3, Insightful)
The IM programs are certainly good candidates for higher level languages, since most of what they do is text parsing - and I know that at least myself would do some work on GAIM if I could.
Great, I would love to read all about it (Score:4, Insightful)
Just a suggestion.
Re:Great, I would love to read all about it (Score:3, Insightful)
Re:Great, I would love to read all about it (Score:2, Funny)
pr0xy av01dance
start something new. ummm, i guess something old.
Re:Great, I would love to read all about it (Score:2, Interesting)
Re:Great, I would love to read all about it (Score:2, Informative)
you might want to check that out...
I bet... (Score:5, Funny)
Project management Lessons (Score:5, Interesting)
This is a rule in "traditional" project management too.
and the other lessons read just like Project Management 101 too. I would have loved to have seen something insightful or interesting about how open source changes the development environment or the management environment from single location to distributed, but no such luck.
Re:Project management Lessons (Score:4, Informative)
If you're interested in Open Source project management you might find some of these Mozilla lessons learned [www.iol.ie] interesting.
Re:Project management Lessons (Score:2)
I guess the combined mantra would become
"Realease as soon as it does something useful, release again as soon as it does somthing better/more than it did before". But that just dosn't have the same ring to it.
Re:Project management Lessons (Score:2)
I think the answer is "yes", because you have a much different set of motivations (paycheck vs. fun and fame) and resources available (volunteers vs. "professional" sales/marketing). There are some things which are similar, of course. Maybe there's something to be learned by studying project management at other volunteer organizations.
Re:Project management Lessons (Score:2)
I was in the same boat. It was a decent read, but it had the feeling of "Doctor it hurts when I do this" all over it.
Still makes me wonder how many people will be influenced by it. If so, then great. Maybe Freshmeat will stop getti
Don't care, he got me an "A" (Score:2, Offtopic)
Anyways, this project has made me think that there's still hope for everyone to be able to have freedom one way or another.
I think the only thing about peek-a-booty was that people were afraid it would o
pedophiles are people too (Score:2)
I don't understand why this would "piss you off." Any sort of p2p anonymizing software is bound to be exploited not only by political dissidents but by pedophiles and anyone else with an agenda that is reviled in the mainstream. Is there any specific mention
Re:Don't care, he got me an "A" (Score:3, Interesting)
How many political dissidents are in US prisons? I mean besides the people who are there because they ingested drugs or because they don't have the huge sum of money to pay bail even 'tho it's a good chance they are innocent. I mean actual dissidents - like someone who goes online at a widely read journal and calls the president a parasite.
Russia's only non-government control
Re:Don't care, he got me an "A" (Score:2)
I could have made the same comparisons to germany 8 years ago, under a completely different administration - in fact, many people were. Remember "V-chip" and Clipper [epic.org]? Remember all those PC rants about "those liberals in the whitehouse?"
Re:Don't care, he got me an "A" (Score:2)
Re:Don't care, he got me an "A" (Score:2)
Try actually reading the post before you reply to it and you'll be able to keep up.
"C/C++ is no longer a viable development language" (Score:2, Insightful)
Personally, I dig Common Lisp [alu.org].
Re:"C/C++ is no longer a viable development langua (Score:2, Informative)
Not mentioned is the final langauge they used. Is the code in C/C++?
I do agree with the binary protocols vs. text protocols, but I'm not sure that is a r
Re:"C/C++ is no longer a viable development langua (Score:2)
There is, indeed, a standard library for C++, one which is widely supported - STL. Is there a learning curve? Sure. And you're going to tell me that there isn't a learning curve for any other language, library, or whatever? Please.
I started at my current job a bit over 15 months ago. I knew only the basics of C++, and nothing at all about the STL (or even templates). It took me about a week to be comfortable using the STL, and I
Re:"C/C++ is no longer a viable development langua (Score:5, Interesting)
I don't think that's what he meant by a "standard library". He's thinking along the lines of Java's standard library -- a standard library that gives you graphics classes, networking classes, XML parser classes, GUI classes, etc. You know, the kind of stuff that would be convenient to have bundled with a language. STL is a standard library full of basic data types like linked lists and hash tables. Big whoop.
convienient (Score:3, Insightful)
Right now there are well established libraries in C++ for anything you get from standard libraries that are tightly integrated... just with multiple competing established libraries. A wealth of choices.
There is no standard GUI library that ships with all compilers. That will come, but not before it's time. Java gives such a
Re:convienient (Score:2)
Re:"C/C++ is no longer a viable development langua (Score:5, Insightful)
Use the right language for the job. If all you're doing is interfacing to a database, then a scripting language may be the most appropriate. But if you're writing system software, then by all means stick with C and C++ with some shell glue.
Compiled languages are damned convenient to the user. "Here's an executable, just run it", versus, "here's a script, go download compile and install the interpreter first, making sure it's the correct version, set up your environment variables correctly, then run the script."
Re:"C/C++ is no longer a viable development langua (Score:3, Insightful)
Amen. When I'm trying to solve a problem, I like using high-level languages like Perl or Python. But when I need to write an application that I want ordinary users to be able to download and _just use_, I don't have a choice - I hav
Re:"C/C++ is no longer a viable development langua (Score:3, Funny)
For example: Oops, sorry. Mozilla on Linux is now being compiled with gcc3.2 so you'll have to get the source and recompile to run on that older (gcc2) system... Also, your old plugins will need to be recompiled before you can use them with Mozilla on the new system - if you can find the source.
Compare and contrast:
Java - install the compatibility VM; use the same binary on all platforms
C - no VM; compile and distribute di
Re:"C/C++ is no longer a viable development langua (Score:4, Interesting)
I'm laughing so hard Dr. Pepper is spewing out my nose! Let me wipe off my screen...
Trying to get Java applications to work on my Solaris workstation is a nightmare. I can't understand it because the company that makes Java makes Solaris. I try to figure out what the problem is, and hidden way deep in the README is this thing that says I need to install a different version than what Sun provided with Solaris. I fix that and it still doesn't work. Looking deeper into the problem, I see that I need a couple of other components that didn't come with the application. After about two hours of searching for the "myleetclasses.jar" and "ubercoolstuff.jar" files, I put them in a directory, fiddle with the CLASSPATH variable, and finally get the program up and running. And then it crashes five seconds later.
you either have to manage binary chaos or you have to start distributing your code as source.
Binary chaos is a pain. A royal pain. So I distribute my code as source instead. Easy. Painless. Users that don't want to compile can grab a prebuilt package from their distro or another repository.
Of course, I'm writing Open Source, and not cheesy shareware. Perhaps that's the true niche for Java and
Re:"C/C++ is no longer a viable development langua (Score:2)
He disparages both C++ and Java as open source development languages, and I agree with his comments on those.
But, besides the compile time issue, straight C seems to me like a good bet. It's such a basic programming language, that it'd be hard to find anyone who programs that doesn't understand the C language. The basic libraries are very standardized. Good debuggers exist. Etc. Etc. Etc.
Any thoughts?
Re:"C/C++ is no longer a viable development langua (Score:2)
It IS hard to write a large slab of C code that works, is relatively bug-free, easy to maintain, easy to add features to, and easy to 'understand'.
This is why starting a large-scale program in something like Python, and just rewriting the bits you need in C (for speed), is a GOOD idea. Thankfully, languages like Python make this easy.
Re:"C/C++ is no longer a viable development langua (Score:3, Insightful)
Wouldn't python suffer from roughly the same problem as Java with the JRE? I mean, unless it's compiled (and I'll admit right now, I don't follow python closely enough to know if it has a "compiler" yet), users are going to need to find and download a Python runtime environment of some sort. The latest I've found at python's web site [python.org] is around 9M. While that's still about 1/3 what a JRE is, it's still either going to be a separate ins
Re:"C/C++ is no longer a viable development langua (Score:2)
Re:"C/C++ is no longer a viable development langua (Score:2)
When I'm going through another person's code, it is very irritating to me when that person is a member of your (space|tab)-hating philosophy. Indentation does help with readability.
Re:"C/C++ is no longer a viable development langua (Score:2)
Uhm, yeah. Isn't that what I said? And "looking the fool" is neither new to me nor anathema.
Sorry, but I really dislike languages where what you do with your whitespace is part of the syntax. It's a gimp requirement.
Re:"C/C++ is no longer a viable development langua (Score:5, Funny)
dont't
have to
like using whitespace
so
others can actually
read your code, but
I like the
way
Python lets me
do the
right
thing.
Re:"C/C++ is no longer a viable development langua (Score:2)
point taken
Re:"C/C++ is no longer a viable development langua (Score:2)
Re:"C/C++ is no longer a viable development langua (Score:2, Informative)
A "mixed" C/C++ approach is probably worthwhile using when the program has extensive GUI requirements and performance is still top requirement. Use C++ for the GUI (qt, wxWindows or whatever gui library you like) but for the performance critical parts and the algorithms that are i
Re:"C/C++ is no longer a viable dev. language" (Score:2, Informative)
He disparages both C++ and Java as open source development languages, and I agree with his comments on those.
I don't -- at least not his comments concerning Java.
At one time (before they were bundled) people had to download a web browser if they wanted to view a website. I don't recall any webmasters who felt that they shouldn't work in HTML because people had to go and download a browser in order to view it.
Every software project has prerequisites. Some projects require external libraries, others re
Re:"C/C++ is no longer a viable development langua (Score:2)
Well, not only this, but also he says in the FAQ for the project: [peek-a-booty.org]
Contradictory ? Yes. To make it even funnier, his proje
Re:"C/C++ is no longer a viable development langua (Score:2)
Re:"C/C++ is no longer a viable development langua (Score:2)
It does no good to make a statement like that
Yes, it does some good.
The first step in finding or creating a better alternative is to clearly define exactly how the current language is bad.
Having suffered for years under C and C++, I've lately becomed enamored with Python. I believe it solves a lot of the problems he describes.
Re:"C/C++ is no longer a viable development langua (Score:5, Interesting)
So it's either C, or Java (lately). Anything else is considered as scripting (Perl, Shell, SQL).
Re:"C/C++ is no longer a viable development langua (Score:2)
Re:"C/C++ is no longer a viable development langua (Score:2)
Out of curiosity, on what platform without a C++ compiler does Oracle software run?
Re:"C/C++ is no longer a viable development langua (Score:3, Interesting)
<dis
dynamic languages on the rise (Score:2)
Personally, I prefer Ruby [ruby-lang.org], but Python is almost as good of a choice. (
It's also quite easy to do mixed-language development with Ruby were you write the bits that need to be fast in C/C++ and you write the rest in Ruby (Swig can also help out here). This way you get the best of both worlds. The nice thing about doing this with Ruby is that classes and modules are always open, so a class originally defined in C++ can be exte
Re:dynamic languages on the rise (Score:2)
Ditto. This [ultralog.net] is all driven by Ruby scripts.
It's really convenient to be able to loop thru a file with something as readable as:
Great stuff, Ruby.
Re:dynamic languages on the rise (Score:3, Interesting)
OK, enough language advocacy ;-
fascinating (Score:4, Interesting)
I first heard about this project from a BBC Article [bbc.co.uk] where they describe it as a "browser free from censorship or outmoded intellectual property laws," which is something I think we can all get behind! However, they made the point that the project could have been better named.
It seems the author has picked up on that now, too. I think most telling is this passage from the author's blog (weblog) [peek-a-booty.org]:
Hopefully, he'll take these insights to heart!
I think not (Score:4, Insightful)
It requires compilation - as your code grows larger, the wait time to see if your code works increases. This delay directly affects how fast your code is developed.
It's really, really, really hard for people to learn it, and this directly impacts the number of developers you will have on an open-source project.
It uses static binding (Isn't that supposed to be a good thing?)
There are no standard libraries for C++, so there's a lot of reinventing the wheel. (Yeah, there's the STL and others, but each one has a huge learning curve associated with it).
So, basically, it has to be compiled (duh). It's hard to learn (no, it's hard to use correctly) and it has no libraries... eh?
I'm sorry, but this guy is not a software developer. The usual comments about "X is the One True Language" notwithstanding, I can't follow that because he thinks it's "too hard" and he thinks it's "not viable" and decides that it simply isn't a good fit for his project, then LanguageX must be dead. Perhaps he'd like to share with us which language his OS is written in. Maybe it's Forth or Scheme. Use the right language/runtime/lib/technology for the job and refrain from saying "X sucks because I don't like it".
Other than the dubious "this is how you do open source" slant I can't see how this article is even worthy of news.
Re:I think not (Score:2)
Re:I think not (Score:2, Insightful)
Oh, and har, har.
Re:I think not (Score:2)
And on top of this, if your are using most modern compilers, when you make a code change, you only need to recompile the changed parts. Now if you change a header file that everything touches, that could mean a lot more time, but if you are only working on one file, then it will only recompile that file.
I think this arguement of compilation time is garbage.
Re:I think not (Score:2)
Re:I think not (Score:5, Insightful)
One mistake that many people make is to dismiss older languages when a new one appears with all the old features and then some. The old language does not become any less viable the day a new one comes out than the day before. That is, if a project will take you 6 months in C, it'll still take 6 months even after Java (which might cut it down to 5) comes out. The question is whether the unique costs of using Java instead justifies the 1 month saved, not whether C is still "viable".
Interface is Everything (Score:4, Insightful)
He wants Visual Basic? (Score:2)
And I really wonder what language he suggests. If not C/C++/Java, then what? VB?
I wish he had spent a little longer on this. I realize it's just a blog, but it would be nice to see some insight into OSS management vs. the alternatives.
Re:He wants Visual Basic? (Score:3, Interesting)
Think about it - an open-source project of any large size requires more than a handful of developers. There are only a finite number of developers on the planet, and only a subset of those are willing to work on open-source projects. Now, of those, how many do you think have a) free time to devote to an open source project (which also may mean that they aren't contributing to other projects), and b) can work in the language being used, or pick it up quickly?
I can guarantee you that subset is rath
Compilation time bounds productivity? (Score:5, Funny)
Everyone knows that once your code compiles, it will work!
Re:Compilation time bounds productivity? (Score:2)
Re:Compilation time bounds productivity? (Score:2)
Hint: "Weak" is not the same as "dynamic".
Re:Compilation time bounds productivity? (Score:3, Insightful)
PS> I have a feeling most of the "wealky t
Repeating the same old misinformation (Score:5, Insightful)
This is a huge error that casts doubt on the author's credibility. What is commonly known as the STL is the C++ standard library, and it has been since C++ became an ISO standard in 1998. Doubters may consult books like the clearly-named "The C++ Standard Library" (Josuttis, 1999) to get themselves up-to-date.
Maybe that's just another drawback of C++... a lot of people don't know what the hell they are talking about and thus repeat misinformation?
Re:Repeating the same old misinformation (Score:2)
Re:Repeating the same old misinformation (Score:4, Interesting)
Re:Repeating the same old misinformation (Score:2)
Another doubt casting problem is that he never mentions what a suitable substitution to C and C++ is... He says java is good for the server side, but you can't replace all C++ apps with server side Java. So if "C/C++" isn't viable, what is?
And he seems to consider C and C++ almost the same language which they
C++ is actually wonderful (Score:2, Insightful)
Modern C++ is a wonderful language, at least I think so. But it is much different than the "old" C++, almost to the point of being a different language. So if you've had bad experiences with C++ in the past, perhaps you should give it another look. And C++ is not dead, there are a lot of interesting advancements in the language, and more properly how to use it. There are a whole lot of generic programming and template patterns which are comming out which show that C++ has a lot more power than people ev
irony (Score:2, Insightful)
The complaints about C++ are the kind of complaints users make about linux when comparing it to Windows. "It's much easier to click on a big E than to learn another icon..."
And clearly he's talking about GUI libraries... instead of multiple good C++ and C based multi-platform GUI libraries, he prefers another model, more like javas, where you get one crappy library and save yourself a lot of
An excerpt (Score:5, Funny)
Dear diary,
I have decided to record my thoughts on managing the project "peek-a-booty". The most important lesson I've learned is not to use booty in a project name!
Sure, it was funny two years ago after a few beers, but I swear the next person that makes a "booty" joke will die. I'm serious. "Dude, is it for peeking up skirts?" "Hey, if you integrate telephony you can call it 'peek-a-booty-call'"
In other news, I'm starting a new project to manipulate network traffic, this time using Java. I'm thinking of calling it 'jAck Off'. I like the sound of that. It will be good to get that whole 'booty' thing behind me...
Duh (Score:5, Interesting)
Sure, in the scope of this particular project and in the context of their skillset and development practices.
Don't Use Binary Protocols for Application Development
Bah, I'm speachless. Yeah, right. Better yet convert data to PNG images and pass those along - it will allow you to debug networking layer with a web browser
With all due respect, it looks like Mr.Baranowski either learnt wrong lessons or likes to summarize things beyond reasonable limits.
Binary vs text protocols (Score:3, Insightful)
Well, seems to me that SMTP, NNTP, HTTP, etc are easier to develop for because they are textual.
HTTP may be just about the ideal balance: use text for things which tend to be small, but capable of sending a large payload (e.g. a PNG image which the protocol just needs to wrap, not do anything with) in binary.
The thing about protocol layering and/or marshalling is: do you have good debugging tools (at a minimum, log what is going across the wire and be able to interactively enter data and see results)?
Re:Duh (Score:3, Insightful)
What's this guy doing? (Score:3, Informative)
It sounds like he busted his ass on a project no one appreciates because it is generally useless.
Re:What's this guy doing? (Score:2)
Sure, it is useless in general. But specifically useful to those living in China that can think for themselves and have a hard time abiding by their government's censorship.
Opinions Aren't 100% Correct Otherwise (Score:2, Interesting)
"C/C++ is no longer a viable development language..."
"not viable development languages for application level work."
"...It's really, really, really hard for people to learn it."
"...There are no standard libraries for C++, so there's a lot of reinventing the wheel. (Yeah, there's the STL and others, but each one has a huge learning curve associated with it)."
So in otherwords it's shocking that the programmer has to know something about the tool, platform, domain, e
Re:Opinions Aren't 100% Correct Otherwise (Score:2)
1. I am shite at coding.
2. Given a great deal of effort, I produce neat, fast, robust C/C++ code (including UI stuff) that has no memory leaks, buffer overflows, or other problems.
3. If I can do it, bearing in mind I'm primarily a networks guy, how is C/C++ 'really, really hard for people to learn'?
The author seems to think that programming should be intuitive, and compile immediately.
If I can do it, anyone can.
surprised (Score:3, Interesting)
I am not a very active coder, nor will I ever be. Coding is just something that does not come naturally to me. However, I thought that for the most part, C/C++/Java were still the big "players" in the application development world (scripting's a different story). So I would like to know what this fellow suggests for a good language to start projects in?
Closer to Design in Open Standards, but similar (Score:2, Interesting)
Design By Committee: "...Yes, you understand me correctly, I'm more worried about the size and character of the community than the actual technical issue."
What language are (most) all OSes written in? (Score:3, Insightful)
To claim the fundamental implementations of all modern OSes (Windows, almost every single UNIX, Linux, and the plethora of other OSes) to be "no longer viable" is way beyond reproach: it's just plain idiotic, and does significant damage to the credibility of his other points.
Unfortunately, my that-was-ridiculously-stupid meter flew off the scale when I read that point, so I stopped reading right there.
Re:What language are (most) all OSes written in? (Score:2, Informative)
What about your attention span? The paragraph below says:
it was a very difficult transformation to accept that these languages are not viable development languages for application level work.
Repeat after me: The Interface is Everything (Score:5, Insightful)
You probably won't believe how many MMI designers and technical writers are feeling totally vindicated at this point.
Really, it's not often one sees history in the making.
95-5 Rule (Score:5, Insightful)
Actualy, if you are about to set out on a new project, its probably best to tell yourself that you are NOT willing and ready to accept this.
6 years ago I started a project called GeoTools and it was, for the main part, excactly that - two people doing most of the work. This was fine for a few years but over time the user/developer ratio got out of hand.
Eventualy it became all but impossible for the two lead developers to support 300+ users and although other developers wanted to contribute it became dificult to 'train' new developers as the knowledge of how things worked existed mainly in the heads of only two individuals who had done 95% of the work.
Two years ago we took the descision to re-design the toolkit from the ground up with as much input from as many people as possible. Since that time we have strived to make sure that as many people as possible have an input into the design process and we keep that process as open as possible by pubishing the IRC sessions in which discussions take place.
The project now has 9 very active developers who are members of a Project Management Committe and a number of other active contributers as well. The end result is that quiries to mailing lists get responded to far more quickly.
Getting other people to work on your project is often - TO START WITH - more effort than just doing the work yourself, but the pay off is HUGE, as you then have someone else who can explain things to others.
If you ever have a contributor who gets stuck or confused and you find yourself thinking 'oh, it will be quicker/easier for me to do this part myself' STOP. Spend the time, help them work out how to do the modification even if it takes a few hours when you could have done it yourself in minutes becuase after you have invested the time in them, they will be able to add things in minutes too, and they can teach others as well.
If you work on a tight, well defined, non-evolving project then most of my ramblings are probably irelelevent if not they they may be of use. The only danger is in investing time in helping developers who then wander off - it happens, but I tend to find that the more you invest in them, the less likely they are to loose intrest.
Re:95-5 Rule (Score:5, Insightful)
I keep reading these open source project managers bitching about how hard it is to answer all the emails from users and potential developers. Then you look at their project and see this:
FAQ: (under construction)
Documentation: (under construction)
and if you're really lucky they bothered to archive the developer mailing list, which is just about the least efficient way to document the project. (Yes, let's make every developer read all of our conversations ever, including all of the arguments we had and all of the things we decided to do differently later.)
It's not that hard; I've done it. You take a day or two and STOP CODING (oh no!) and write some actual words, document APIs, and lo and behold, you realize that you're also white-box testing your code because you were forced to explain what some code does ("hmm, that actually doesn't make any sense" / "oh crap that won't work in this case").
All of a sudden you can just point people at the docs and add stuff when new questions arise. Sometimes the answers are best expressed as a FAQ, sometimes as part of API docs ("oops, I didn't explain what these constants actually meant"), sometimes as end-user documetnation. But IT'S WORTH IT.
As for the common self-delusion, "we'll write the documentation after we're done with the code", all I can say is, read any process book there is. You're doing it backwards if you start with implementation and then back into writing down what the system does and how it's designed. Those things come first, THEN you write the code that does it. Otherwise you redesign the product dozens of times as you go, each time slapping yourself on the head and saying "oh crap I forgot it has to do this too" or "argh, I need this value from here but the API doesn't allow that". If you write it all down (which first requires that you *think* about it in detail) then you won't forget your good ideas, you can jump all over the place, you can write test harnesses that make sure the code does what the docs say, and you can point newbies at the docs and say "OK cool you can get started on the email notification part, we haven't touched that yet."
Communication!!!!!! (Score:4, Informative)
You are almost a text book example on how to do things right.
Not Project Management (Score:5, Insightful)
None of the lessons learned and reported here are directly related to Project Management per se. They are all by and large implementation issues.
There is also nothing new here. This does not advance the state of the art. History does not advance by people relearning the same lessons again and again. Just because they have been reported here does not make this article special in any way. This article could have been written in any of the decades of 70s, 80s, 90s (substituting en vogue languages for C++/Java) and still make sense.
In order to truly advance the state of the art, we have to think in far more advanced ways about project management and software development. True Software Practice and Experience requires much more planning and critical thinking than evident here.
If Open Source is to provide a useful and stable platform on which to build, then we certainly need a better vision of how to build software. Otherwise, we will be doomed to repeat history by implementing old things in different ways and not really gaining any control over complexity.
In summary, we still have a software crisis; Open Source will not change that; and summaries of software development experience that just say "I made the same mistakes as other people did" are not very helpful.
NOT just open source (Score:5, Interesting)
For example:
The press loves infighting because it's a good story. However, the infighting story is bad for a project that is trying to get funding. This creates an air of instability. People only like to fund things they feel will have a high chance of success, and instability erodes that confidence.
It is too bad on so many mailing lists ego/attitude/personality or just plain rudeness show up. Things you would never say to a coworker, make it onto a mailing list for eternity, or at least what looks like one. I hope people take this point to heart before posting.
95-5 Rule
Usually it's the 80-20 rule, but in open source projects it's more like the 95-5 rule. Open source projects are usually run by one or two people doing most of the work. If you decide to lead an open source project, you must be willing and ready to accept this.
Looking at sourceforge I see this lesson again and again. The idea that if I create it they will come, and build. Forgotten, or unknown, is that nearly all had a real need to be built first. I needed application ZAFDE so I built it. I then released it and people thought they could build on it, and so on.
I wanted to learn C++ or JAVA or XYZ is the reason we have 2,134,931 notepad applications, not OpenOffice.
C/C++ is no longer a viable development language
I knew we would see a flamewar as soon as I read it. My thoughts:
- Both are still viable. Much like his hammer analogy, they are not good for everything.
- What makes them "bad" for development, makes them "good" after they are developed.
Does it matter to the user that it took 81 minutes to compile? Nope, they have the binaries or compile it once and run it for years.
Every language has a shortage of people who know it. Or specifically a shortage of the people who know it and are willing to work on OSS project PDQ.
Static binding is good/bad/sometimes both. Yes it is.
All the negatives he spoke of are positives after it is developed. Which we hope is long compared to the time spent developing it.
If there is one thing projects should take away, it is probably this:
Interface is Everything
I like command lines. I use them, but I understand they are power tools. Most people do not like/use them and consider them an indicator of a poor product. Even while it may not be technically true, perception is reality in this.
Windows and WINE only... (Score:3, Interesting)
However, designing things in C++ and doing it properly is damn tough; many designs may seem easy to begin with, but then run into trouble with things like multiple inheritance from related parents, or simply that encapsulation is difficult because of the need for exposing the inner workings of classes... STL fixes some of this at the expense of code bloat -- it is easy to produce executables tens of megabytes in size.
Another problem with C++ which has been bothering me, and I would presume, the developers of Peekabooty, is the tendency towards static compilation and inclusion of everything. I looked at the source files here, and the sheer number of include-files compared to source files indicate that this probably does not compile quickly.
There is a way around this, if the application can be divided into several major and fairly independent components which then are compiled and linked as a number of dynamical libraries (.DLLs on Windows, .so on Linux and Unix). Now, with proper design, recompiling the whole lot is not necessary for smaller changes within one of the parts where no changes in this part has taken place. The trick here is encapsulation: do not let code in any one part know about any of the internal structure of code in any other part.
Similar thoughts as I start a project (Score:3, Informative)
I'm working on a project for central user management on a popular network appliance. At present there's only one commercial solution (that I could find/google) available that lets you manage n+1 of these appliances at once.
I initially looked at the problem and figured, heck I can do it easily with expect and ssh, but then I started thinking about how my employers & co-workers would use it (I contract), and realised a command-line application wouldn't suffice.
So I started pondering how I could integrate a fairly simple backend (that could be implemented by scripting languages) with a portable interface.
I could either:
I eventually chose the tcl/tk option, because of the following reasons:
So I ended up choosing a well-documented language for implementation, which has the benefits of being portable, interepeted (no compiling), and easily updateable (email the latest script). Sure it isn't the sexiest solution, but it works and is easy for new developers (the project will be open-sourced when ready) to pick up on where its at.
Re:Similar thoughts as I start a project (Score:3, Informative)
Nah, I agree with you wholeheartedly. I'm also a big python advocate. I gotta say though, I didn't stop to consider the BaseHTTPServer/etc modules to handle a standalone, easily maintainable web "application".
RE: Point 2 comments
About wxPython docs and how wxWindows has extensive documentation. I saw that when I last checked it. For me it seemed like a potential waste of time to wade through it all in order to get at what I needed. If the tcl/tk option hadn't worked out for me,
Static compilation time (Score:3, Insightful)
With regard to the first: consider learning thee build tools part of the cost of learning a static compiled language. It is not optional.
With regard to the second: If you have so many cross-dependicies, you will run into problems in any language as the project grow. A bug solved in one module may cause new bugs to appear in any other module.
In general, Based on many years experience with C++ and Lisp, I'd recommend compiled and statically typed languages for large projects, because of the discpline they encourage. Interpreted and run-time typed languages are usually superior for small projects.
Re:Now, keep in mind I'm a LAMP developer... (Score:3, Informative)
Re:Now, keep in mind I'm a LAMP developer... (Score:2)
Or maybe something as simple as:
Use the appropriate language for the job (Score:2)
I don't think too many people will dispute that C is probably the best implementation language for an OS kernel that must be fast. However, C/C++ are not appropriate for all projects. And in fact the subset of projects where C/C++ are the best fit is probably fairly small (a lot smaller than current use anyway).
I recall meeting an older sw engineer who used assembly language for