Slashdot Mirror


Open Source Project Management Lessons

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.

16 of 296 comments (clear)

  1. Article text by frieked · · Score: 2, Informative

    Story was just released to subscribers and already it's loading slow so here's the article text for when the inevitable /. effect comes:

    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 management of an open source project is very different from old-school engineering project management, so I had to learn a lot about how open source project management works.

    All of these problems have been seen before - by no means do I see these as unique. They are simply more data points on the "How To Do Open Source Development" graph.

    What did I learn from the first version of Peekabooty?

    Open-Source Project Management Lessons

    Don't release before it does something useful.
    This lesson is recounted in Open Sources: Voices from the Open Source Revolution as well as other places. I had even read about this rule before we released, but I had to learn it for myself. If you release too soon, you spend a lot of your time answering emails instead of developing.

    The press is a tool - more like a hammer than a Swiss army knife.
    The press is like a hammer - it can help you or hurt you, depending on how you use it. But like a hammer, it can't do everything, like cut a tree in half. It has limited capabilities and you cannot expect too much from it.

    How the Press has Helped

    The press has helped to bring awareness to key people that have the ability to help the project grow.

    Press will get you more downloads. Whether this is good or bad depends on lesson #1.

    Press will not get you more developers unless #1 is in place. The fastest way to get more developers is to network with other developers.

    How the Press Has Hurt

    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.

    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. If you want to lead an open-source project, it helps to be independently wealthy. This allows you to forget about things like a job and work on the project you want to work on. In hindsight, wouldn't it have been better to take a really long vacation instead? Doh!

    Engineering Lessons

    C/C++ is no longer a viable development language
    This may seem obvious to some people, and other people may recoil in shock. In college/grad school we were taught to believe that C/C++/Java, etc are the best languages in the world, so it was a very difficult transformation to accept that these languages are not viable development languages for application level work.

    C++ is seen to be great for execution speed, static binding, object orientation, templates, and more. However, it is absolutely lousy for development time. Here's why:

    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 ot

    --

    I have often regretted my speech, never my silence.
    -Xenocrates
  2. Re:"C/C++ is no longer a viable development langua by Vengeful+weenie · · Score: 2, Informative
    Actually, I'd like to know what other projects are using. I think that some of the fustration with C/C++/Java also springs from the fact that this is a Windows development effort. I used C++ on Windows for a few projects and it -- is -- a -- bear. Doing any of this type of development for Unix/Linux or cross platform support I think changes the rules.

    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 recent revelation. Most of the Internet protocols use text based protocols.

  3. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 1, Informative

    It is hard to back the statement up with an "absolute" truth thanks to the fact that you will always choose your tools according to the task at hand. You can't say that language X is better than language Y when both are generally ment for different things.

    Oh, and C/C++ are still viable options, but don't dominate the market as much as they used to.

  4. Re:Great, I would love to read all about it by Capt_Troy · · Score: 1, Informative

    In the past, we have used squid proxy running on a server at home to bypass the filters at our work so we could read Penny-Arcade...

    you might want to check that out...

  5. Re:Project management Lessons by mmcshane · · Score: 3, Informative
    . . . and the other lessons read just like Project Management 101 too.
    Good point. Not surprising, I suppose.

    If you're interested in Open Source project management you might find some of these Mozilla lessons learned interesting.
  6. What's this guy doing? by JohnwheeleR · · Score: 3, Informative
    1. He shouldn't speak so generally by saying things like "C/C++ is no longer a viable development language."
    2. He shouldn't speak so authoritatively having only one OS project under his belt.

    It sounds like he busted his ass on a project no one appreciates because it is generally useless.

  7. C/C++ is dead...? by Anonymous Coward · · Score: 1, Informative
    According to the site, if you want to contribute to the project:

    You should be good with C++ which includes having a knowledge of pthreads, the Standard Template Library (STL), and templates.

    Plus the thing only runs under windoze or under WINE...

  8. Re:Now, keep in mind I'm a LAMP developer... by TheShadow · · Score: 2, Informative

    This really has nothing to do with MySQL. It due to the crappy database access interface in PHP and developer laziness/ignorance.

    --

    --
    "What do you want me to do? Whack a guy? Off a guy? Whack off a guy? Cause I'm married."
  9. Re:"C/C++ is no longer a viable development langua by peter_sd · · Score: 2, Informative

    C is a must when performance is of big importance. If the program structure and APIs within the program modules are designed properly and in a clean way, I don't think it is much more difficult to maintain and improve on the code.

    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 in the heart of the program just use plain C under simple C++ class wrappers if at all (no abstract classes, overloading, etc.). Personally, I have found this approach quite useful.

  10. Re:What language are (most) all OSes written in? by inerte · · Score: 2, Informative

    my that-was-ridiculously-stupid meter flew off the scale

    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.

  11. Re:"C/C++ is no longer a viable dev. language" by Yaztromo · · 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 require external runtime environments. If you code an Open Source project is Perl, I'm not going to be able to run it on my OS/2 systems without downloading the Perl runtimes, for example. The only way to avoid this is to statically compile everything you need into a native executable which, once again, isn't going to work for people running on a different platform(s) than what you're building for. Now they have to go through the pain of installing (and possibly paying for...) a compiler, and then modifying the code to make it compile on their platform of choice.

    If your application does something useful that people can't otherwise do, they'll take the one-time hit and download the Java Runtime (or any other project prerequisite).

    I think this is a non-issue. As the administrator of a Java-based Open Source project that targets client-side Java (The jSyncManager Project), I can say that using Java hasn't inhibited the growth of my project significantly, as it provides value that people can't get elsewhere (namely, a single application and plug-in architecture that can run on any Java-enabled system, which allows organizations in heterogeneous environments to run the same application on all their platforms, reducing maintenence costs). As such, people who need this sort of value have no problem taking the one-time hit in installing the proper prerequisites.

    Yaz.

  12. Re:"C/C++ is no longer a viable development langua by Anonymous Coward · · Score: 0, Informative

    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 have to write it in C or C++.

    Uhhh... unless you mean "when I need to produce a single .EXE file", Python can do exactly what you need. You can turn your app into a single directory worth of files (all necessary DLL's and a standalone .EXE - no interpreter installation required) using Py2Exe. Most ordinary users are capable of downloading and decompressing a .ZIP file.

  13. Similar thoughts as I start a project by harikiri · · Score: 2, Informative
    With regards to the C/C++ point and the documentation point in the article...

    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:

    • a) Put the backend script onto a webserver, and allow administrators to use it via a web browser and CGI.
    • b) Use Python and wxPython to provide a GUI application that runs on windows/unix/mac.
    • c) Use Tcl/Tk to provide a GUI application that runs on windows/unix/mac.

    I eventually chose the tcl/tk option, because of the following reasons:

    • 1. A webserver-based application would require ongoing maintenance of either a new server, or speaking with existing server ops to get our stuff onto their boxes. This didn't fit in with timeframe and would be difficult to maintain and distribute updates.
    • 2. wxPython lacks extensive documentation. I'm not going to force myself to join mailing lists and peruse demo code to figure out how it all works.
    • 3. Tcl/Tk is well-tested, instantly portable, and documented up the wazoo.

    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.

    --
    Man watching 6 MSCE's around a sun box, looks alot like the opening scene's of 2001:space odyssey...
    1. Re:Similar thoughts as I start a project by harikiri · · Score: 2, Informative
      RE: Point 1 comments


      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, I probably would've fallen back to this option.


      RE: Point 3 comments


      The final reason for me choosing tcl/tk over python was knowing that the one constant in the project would be my use of Expect. This being part of the ActiveTcl distribution meant that distribution the interpereter and the scripts would be easier. Also, the pyExpect scripts (when I last checked) seemed to have fallen behind or stopped development.


      My personal preference will almost always be Python for server-side scripting. Primarily because its syntax requirements result in easier-to-maintain code, and also because of its wealth of libraries (sockets, BaseHTTP*, re, ftplib, etc), and portability. But I think I'll be using Tcl/Tk (for portable GUI apps) until wxPython comes of age.

      --
      Man watching 6 MSCE's around a sun box, looks alot like the opening scene's of 2001:space odyssey...
  14. Re:dynamic languages on the rise by ecki · · Score: 2, Informative
    Java is a good choice, so is eiffel. Too bad neither one is open source


    Eiffel is, or are you concerned about possible IP problems with the language spec per se?

    take the best aspects of java, objective-c, eiffel and maybe some smalltalk like elements and roll them up into one language.


    The D programming language looks somehow interesting...

  15. Communication!!!!!! by hughk · · Score: 3, Informative
    Congratulations on a successful project. However, you mentioned what worked without commenting on it:
    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 moment you involve other people in a project, you need to document and explain design decisions and any discussions arising. By doing this you have made it very easy for other developers to get involved. I also like the way that you publish IRC discussions.

    You are almost a text book example on how to do things right.

    --
    See my journal, I write things there