Slashdot Mirror


It's the Documentation, Stupid!

Roblimo writes "Brian Jones, a sysadmin for Princeton University, has written a Linux.com column that says open source developers need to provide better documentation if they expect support from sysadmins like him: 'With documentation, I can get to know the software,' he writes. 'Then I'll install it on a test box. If it works, great, I'm tickled pink. If it doesn't quite work, then I'm interested in giving feedback, because here's someone who will roll it back into the product or the documentation. This is a useful cycle that benefits millions, not the least of which is the coder! Documentation ends up resulting in a more mature product! Wake up!'"

28 of 105 comments (clear)

  1. In other news... by pebs · · Score: 3, Insightful

    someone writes an article saying closed source developers should do the same!

    --
    #!/
    1. Re:In other news... by Bob_Robertson · · Score: 2, Funny

      Pebs,

      I wish there were some way to lock this article so yours would be the only comment.

      Bob-

      --
      The Ludwig von Mises Institute. The reasoning individuals economics
    2. Re:In other news... by merdark · · Score: 2, Interesting

      Except that closed source software is usually much better in regards to documentation. Why? Because when people are just 'scratching itches', or whatever the silly expression of the day is, they don't usually care what *others* think. Since THEY know how to use the program, they don't bother with documentation for others. Documentation is not fun to do.

      On the other hand, closed developers are forced to make documentation by their superiors. Just becasue you don't find all those windows are make help files helpfull, doesn't mean that they are equally useless for everyone!

    3. Re:In other news... by drsmithy · · Score: 2, Insightful
      If you can't grok the source, either the program is badly written (just like documentation can be badly written), and you should look for something else, or you have no business being a sysadmin.

      If you can setup, say, Samba - using only the source for documentation - in the same time someone else can set it up using the real documentation, you have my deepest admiration.

      I sincerely doubt that is true, however.

      Your assertion may hold true for piddly little insignificant applications, but anything of any size and significant functionality is going to have a *lot* of source code to wade through and even experienced programmers aren't going to be able to "grok" it as quickly as they can read even a relatively poor HOWTO.

      I can read code. I'm not a particularly *good* programmer - certainly not good enough to make a fulfilling carrer out of it - but I can read code well enough to figure out what's going on. However, I simply don't have hours and hours of spare time to *waste* reading through source code trying to figure out how the fuck something works. I've got a job to do and that job is providing working solutions for my employer's problems, not reading source code.

  2. I want to write docs by kisielk · · Score: 4, Interesting

    I've been trying to find a project to write docs for for quite some time, but I usually don't get any replies when I email authors of various software. If they don't want to communicate with me I don't want to be wasting my time writing documentation for them.

    So how about this, if you have an OSS project that needs some docs, contact me. If I find it interesting maybe I will help out.

    Maybe someone should set up a site where doc writers can offer their services and software authors can request to have docs written for their programs. Just an idea.

    1. Re:I want to write docs by WankersRevenge · · Score: 2, Informative

      From "The Complete Idiots Guide to Technical Writing" by Krista Van Laan and Catherine Julian

      "The Open-Source Writers Group is a nonprofit organization whose primary goal is to improve the overall quality and quantity of free open-source and open-content documentation. Their web site at: http://www.ibiblio.org/oswg/index.html includes a page where you each register as a volunteer writer, editor, or proofreader for documentation related to open-source projects." - page 41

      I have briefly skimmed this site and it appears to be a valuable resource.

      In closing, I do agree with the parent. What good is a tool if no one knows how to use it?

  3. Oh, the humanity by daeley · · Score: 2, Funny

    Dang, dude. You wrote a rant over 1300 words long complaining about lack of documentation. Imagine if you and similar pundits contributed those words to the documentation of deserving projects.

    But, alas, whining is the quicker path.

    --
    I watched C-beams glitter in the dark near the Tannhauser gate.
    1. Re:Oh, the humanity by Prior+Restraint · · Score: 2, Insightful

      Has it occurred to you that maybe people need to actually understand a product before they can write documentation for it? Now, who understands better how a piece of software works: the original developer(s), or potential customers?

    2. Re:Oh, the humanity by styrotech · · Score: 2, Insightful

      Has it occurred to you that maybe people need to actually understand a product before they can write documentation for it? Now, who understands better how a piece of software works: the original developer(s), or potential customers?

      Then again, who usually does a better job explaining how to use it to newbies? The developer or another ex newbie who has worked out how to use it?

  4. Wiki for man pages? by UnknownSoldier · · Score: 3, Insightful

    Why isn't there a wiki for the man pages?

    The biggest problem I have with the man pages, is lack of examples!

    --
    Original, Fun Palm games by the Lead Designer of Majesty!
    http://www.arcanejourneys.com/

    1. Re:Wiki for man pages? by tmtresh · · Score: 3, Interesting

      Isn't that what grokdoc is for, to begin a documentation project? Why don't ya'll just contribute to that?

  5. Corporate Idiots by den_erpel · · Score: 3, Insightful
    If I would have read this story about a year ago, I guess I would have thought the guy to be a complete idiot. I still think this to be the case, but at least I can now see the reality of things.

    I've changed from doing research at the university to a international company and to my regret and complete surprise, the sysadmins from that company are far from, euh, gifted.

    The comporate policy seems to be that anything that costs lots of money must be fine while something which you can download from the internet cannot be anything but bad, inferior and buggy software.

    Who cares if e.g. lots of money are spent re-routing corporate e-mail to off-shore server (for a spam solution) instead of installing spamassassin and clamav. But one of the most unfortunate things I have had the bad luck to witness, was an official meeting to evaluate two software packets. One was completely open source and collaborate project while the other one was a commercially branched solution. The meeting had 8 engineers attending a 3 hour meeting evaluating the packet presented by the sysadmins, who had obviously already made up their minds, since the column of the free solution was not even filled out. Finally it boiled down to
    1. The commercial product has more options. This was completely false, but in any case irrelevant: the packet needed to be trimmed down to basic functionality for user friendliness
    2. But, a commercial packet must have good documentation and good support (yes, this is especially required for a package that any 3 year old can operate).

    The software costed only 250 Euros...

    Some (esp *cough* power users *cough* of some commercial *cough* operating system *cough*) users simply cannot grasp the concept that skimming through headers and comments in sources is the best documentation there is. All other documentation is out of date and is certainly not that reliable and often in contradiction with the program and functionality.

    This kind of corporate complete braindead reasoning is ubiquitions. Unfortunately, this is corporate IT, not always done by the best and brightest. At least, it really made me to appreciate those good admins out there and you can praise yourselves lucky if you have them...
    --
    Genius doesn't work on an assembly line basis. You can't simply say, "Today I will be brilliant."
    1. Re:Corporate Idiots by WallyHartshorn · · Score: 2, Interesting
      users simply cannot grasp the concept that skimming through headers and comments in sources is the best documentation there is.

      Did you really say that?! "Hmm... I can't figure out how to do generate a table of contents in OpenOffice. No problem, I'll just read the programmer's comments in the source." What kind of fantasy land do you live in? Give me a manual! Give my father a manual! Don't tell us that we'd be better off reading the source code's comments.

    2. Re:Corporate Idiots by richie2000 · · Score: 2, Insightful
      There's a very good reason why there are a lot of tools that construct documentation from comments: it's usually the most practical way of getting documentation out of the developers.

      There are two more ways: The credible threat of an unseen but oft hinted at baseball bat; and the prospect of being sat upon by the 130kg heavy tech writer. I have used both with great success. :-)

      Most developers seem to be genetically selected against writing documentation so there needs to be an outside force squeezing it out of them. An extremely thinly veiled threat of physical force works for me, especially when they think it's in jest but can't be really, really sure I won't sit on them one day. After extracting the data, a good tech writer can turn it into usable information by installing the software, using the program and - as an added bonus - give valuable feedback to the developers on usability issues. This feedback loop is largely missing in FOSS, I'm sad to say.

      --
      Money for nothing, pix for free
  6. Re:assholes by syrinx · · Score: 2, Insightful

    Noone wants to read another fucking whine piece by some asshole who likes to hear himself talk.

    So why'd you write it, then, if you realize no one wants to read it?

    --
    Quidquid latine dictum sit, altum sonatur.
  7. I am interested in doc writing by Tim_F · · Score: 2, Informative

    I am interested in pursuing a career in documentation writing. What better way to earn experience than by writing documentation for open source programs?

    I don't feel that I have the ability to write something along the lines of KDE documentation just yet. I would like to start with something small.

    If you have an open source program that is lacking in documentation send an email to tjfriese@hotmail.com and we'll see if I can't help you out. If your program has an ebuild for Gentoo, that would be a bonus.

  8. Time to start Documenting. by mindhaze · · Score: 3, Interesting

    I wrote a small app recently, and have been less than pleased with the response. I figured there were more people out there with a need like mine.

    The app is Jaio, which renames digital camera images according to their EXIF data.

    That being said, I included very little documentation for the thing, and hardly documented at all the algorithm I used, since to me it was kind of common sense.

    I think after reading this article, I'm going to write some more thorough docs, and then include those docs in the help menu.

    Thanks Brian, for the inspiration!

  9. Code docs as well. by LincolnQ · · Score: 2, Insightful

    I think documentation in general is hugely important. Not just for people who are not programmers but who are sysadmins, like the author, but for any programmers who want to contribute to the code.

    I actually haven't run across major usage documentation problems like the author of the article did -- I have been able to install and run many of the programs I want to, without significant trouble. The problems I run into are when I actually want to dig into the code to change something. I am usually bewildered by the size of the project and I don't know where to start.

    Documentation is good. I like writing documentation for my code (and I feel like I'm somewhat rare). But it's something that I naturally do at this point. I don't consider it a 'chore' or anything like that -- in fact, I enjoy writing docs for my code that I understand, in order to communicate this understanding to others.

    I think that code documentation, not just usage docs, is a core part of the open source development model. If you are the only one who can understand your code, then chances are that your project will die if you stop maintaining it. The mental model is very important in programming, and others' capability to replicate your model in their minds will help them write integrated, less buggy code for your project.

  10. Brian Jones by 0x0d0a · · Score: 2, Interesting

    Look, I'll agree that many minor OSS projects could use better documentation, but wouldn't it be easier to submit a list of what you'd like included in whatever product pissed you off than writing a long angry article about it? I mean, there are a lot of obscure little Windows closed-source packages that lack good documentation as well.

    I haven't had a problem with major projects.

    Is it largefile aware?

    I really have seen very few closed-source packages that include this in their documentation, either.

    Is it scriptable?

    I can't think of any open-source packages that are scriptable that don't document the point that they're scriptable.

    Most OSS CLI software isn't explicitly "scriptable" because it can simply be easily run and interfaced with from scripts without requiring an internal interface.

    I have refrained from naming names here. It would serve no useful purpose, as my sysadmin colleagues can probably think of exactly the projects I'm talking about (as can the respective coders).

    Actually, I'd infinitely have preferred that Brian *had* named the names of the OSS projects that he found at issue, and listed some concrete problems. Then they could be addressed.

    The bigger problem for you coders, really, is that there are usually 20 different packages on freshmeat that all do the same thing. Of those 20, probably one or two have real-life, usable documentation.

    Your problem sounds more like a lack of comparative reviews to assist you in evaluation than a lack of documentation.

    This honestly sounds like the sort of problem you get if you start trying out "mp3 sorters" or "IM clients". I'm dubious that this is a severe issue with, say, webservers.

    While I'm posting, does anyone have any idea why Slashdot is changing colors on me like mad? I've seen a rather pretty but less usable gold-and-white theme, and I'm currently posting in a black-and-white theme that says "Don't fear the penguins". CmdrTaco put up a test story on the main page yesterday -- what's going on at Slashdot?

    1. Re:Brian Jones by 0x0d0a · · Score: 2

      Ah, okay. I'm familiar with the old section colors, but not the new ones. I must have been using Slashdot when the regeneration of the pages started, because I kept seeing green on some pages and gold on others (even in the same section) for a bit.

    2. Re:Brian Jones by shaitand · · Score: 3, Interesting

      While I'm sure there are a couple small projects with crap documentation. There are no shortage of LARGE projects with crap documentation.

      mysql (almost all the documentation is wrong, and I mean the simplest stuff is wrong, like working with authentication). They have lots of documentation, but most of it is inaccurate, out of date, and in many cases was ALWAYS wrong. They rely too much on the ability of users to comment on given pages of documentation. But those users are wrong half the time, and even when they are right their contributions don't seem to ever be added.

      Apache, dear god just look at it. Their documentation is basically a quick reference, they list all kinds of options and generally out of context. Have these people never heard of tutorials?

      Bind... bind is scarey as hell, you find conflicting and inaccurate information EVERYWHERE not just on the website. For instance, look for information on how to setup reverse lookups. You won't find any actual tutorial type information at all, explaining simply how reverse lookups work and giving a couple examples. Nope, what you'll find are lots of people posting new information about old versions of bind. They give incorrect syntax that simply doesn't work almost every time.

      Thinking about it, I can't honestly say I've EVER found a bind example on the web that worked without modification. From ANY source.

      I've yet to find a ftp server with good docs either, again the same problem. In the case of ftp servers they seem to have an obsession with large anonymous ftp (aside from universities and large software vendors who actually wants to do this?).

      If any other option they give the ability to have users log into their system accounts home directory, talk about a pain in the arse to manage and keep seperate from other services. I suppose if you were doing web hosting this is what you'd want, but not for anything else.

      Most things assume that actually using the software is obvious, or the other way, they assume you've had no problem installing.

      Very few give configuration examples. Some sites give a couple limited examples but don't give examples of usage for the config options. Some give the config options but no configuration examples, like apache. Some do either of those or both but don't cover how to install the software.

      COMPLETE Documentation is needed, that covers everyone from complete novice and idiot who nothing nothing about the app or the OS to power users who know nothing about the app. Even advanced documentation should be written from the perspective that the user knows nothing about the app.

      Because after all an advanced user, who knows alot about webservers and nothing about apache, is going to be looking at adanced topics the first day they are playing with apache.

      The docs should take you from novice to guru, include tutorials, include a hand hold through installation.

      References are good but they don't replace the need for any of the rest of it.

      The docs should also always apply to the latest stable version, if the docs havent been checked and updated, then the new version isn't stable yet. The docs should be considered part of the release.

  11. Documentation Is Needed, Though by Cranx · · Score: 3, Insightful

    Better documentation is clearly needed. It doesn't have to be dumbed down for 3-year-olds, but you shouldn't expect every user to be an accomplished C programmer, either. Somewhere in the middle is fine. Documentation that can be understood by a fairly smart, experienced, non-programmer is usually sufficient. Joe may be the master, but Joe is in Munich this week and Frank the network guy here needs to make a configuration change ASAP. If Frank can't do it without taking a C class and studying a large, obscure API reference for days, there is definitely a strong need for better documentation.

  12. About documentation by fluor2 · · Score: 3, Funny

    The 10 laws of documentation of an GNU program:

    1. Add a 3-line FAQ for expected "bugs"
    2. Add "We need documentation authors" to README
    3. Wait for documentation to be written when you are finished with v1.0
    4. Delay documentation since it would break with the current v1.1 development
    5. You don't bother doing the documentation, since you've allready documented most in the source.
    6. When it works, you just publish the source and hope somebody else will do the rest.
    7. Make a website, create a logo and start having a nice time making design and stuff. When finally creating the documentation/index.html, just add Under Construction, since what you really want is a even better logo.
    8. Write some complex documentation, and hold back the real tutorials and publish them in a book.
    9. Spend some time with emacs, to finally understand that it sucks to write documentation when you have to think of line-breaks in a text document.
    10. Include an myfile.conf.example which you think will cover most questions anyway. Do forget on purpose that many lines need linebreaks at end of text, even if it's the last line. And also forget to add that TAB's are not supported in your .conf file.

  13. tough to write good docs by Anonymous Coward · · Score: 3, Insightful

    It's tough to write good docs. Once a client of mine wanted very thorough documentation (API docs, user's manual, etc) for a project beyond the README's and INSTALL's I usually bundle with the code.

    I immediately doubled the estimate. Why? Because you are basically writing the logic of the app all over again, except in this funny programming language called "English". And when you update one you have to update the other. Not to mention you have to update your unit tests too (which is another thing most programmers don't do).

    I'm not trying to make excuses or saying that we should skip documentation, it's just that it doesn't "scratch the itch". I don't believe that open source exists because of altruism, but because somebody solved their own problem and didn't keep it from the world. So we need folks who are truly interested in documentation (like technical writing geeks).

    As open source grows we need to find all sorts of folks: technical writers, usability experts, designers, artists, testers.... we should also not be afraid to hold "fundraisers" to hire an outside team to do this. Wouldn't it rock if Mozilla, KDE, Gnome, etc., had a *thorough* going over with a talented usability team?

    Anyway there's one concrete piece of advice I can give any open source programmer, especially if its not a gui-based tool: PUT EXAMPLE USAGE ON THE FRONT PAGE OF THE WEB SITE!!!

    This annoys me to no end. Too many sites just have blocks of text describing how great their stuff is.. but no example of setting up a config file, running it from the command line, etc.

    I would love to see a step-by-step up and running document, nothing fancy. Show some examples of what your config files and so forth look like. How about screen shots of command line operation? If it's too complicated to show in a few pages, *simplify it*.

    The quicker I can get your program up and running, and the less work I have to do, the less I have to hack in my existing configs and so forth, the faster I will be sending you patches.

    Positive example: The awesome Ruby on Rails framework has a setup *movie* showing exactly how to go from zero to app in 10 minutes. I wish all projects had something like that, and more importantly, I wish all projects were SIMPLE enough to demo in a few minutes.

    Negative example: I was wondering if Perl's Template Toolkit was the right template system for me. I was looking for a very basic kit that could mix Perl directly with HTML (a-la PHP) with no fluff and bloat. I couldn't see any example on the front page and after a minimal amount of searching, I still had no idea what it was like to actually *use* the damn thing. Just bullet lists of features (which are shared by pretty much all similar systems).

    So, as a first step down the road of good documentation, try this user-focused idea: give some examples up front.

  14. I have only one thing to say... by eviltypeguy · · Score: 2, Funny

    RTFM

  15. He's half right by dacarr · · Score: 4, Insightful
    It's not just open source, but closed source. And the problem I run into when looking at software is what I call Oualline's Law of Documentation:

    * 90% of the documentation does not exist
    * Of the remaining ten percent, 90% is obsolete or inadequate
    * Of all the documentation, the remaining 1% is written in a foreign language you cannot understand.

    We know about the first and third points, but on the second point, it's either missing examples (i.e., man pages, as another user cites), or just tells what you can do with it and little else without bothering to take you through the steps (much closed source), with explanations on what certain functions do that are vaguely important.

    To note, the "law" was published in Steve Oualline's Practical C Programming by O'Reilly books. I modified it slightly - the third point notes "Chinese", but there's a good probability that somebody reading this can read Chinese. =)

    --
    This sig no verb.
  16. This would encourage better design by billcopc · · Score: 2, Interesting

    By having to write documentation, coders might actually realize how frickin' contorted their config files are and try to clean it up rather than have to document hundreds of dark options with "zarp_blorg_snootle = uHb ; This is a hack"

    I know it's not 'fun' or 'easy', I code in random bursts too, and my first versions are always "unreadable but it works great!", but if I use the app at all then I do a complete rewrite for the v2.0, since the v1.0 was more of a design-as-you-code exercise, and the resulting code is always cleaner, faster, and much more easily extendable/reusable.

    Heck, I did that last week by accident. I had written a fairly long perl script to automate the creation of a full-blown webhosting account (vhost, email, ftp, templates etc). Wouldn't you know it, in my sleepy daze I deleted the script just as I had finalized it. Well I rewrote it in 1/10th the time now that I knew exactly what I wanted it to do, and it was shorter (more modular functions) and less bug-prone.. I even threw in a few command-line options so I don't have to edit the config file all the time.

    It's daunting, but some big projects could really use a fresh start, with proper documentation maintained from the beginning.

    --
    -Billco, Fnarg.com
  17. Re:assholes by zombie-m · · Score: 2, Insightful

    Maybe it's just the tone of the parent's post that got it modded "Troll", but if I had mod points today, I'd probably be modding this "Insightful" instead.

    Not every developer's goal is to advance OSS. I have no data to back this up, but it seems to me that many probably just wrote a program to do something they wanted. The fact that they released it in hopes that others may find it useful should not obligate them to cater to every person that feels that they have the right to have their hand held while they use said program.

    I'm not going to lie and say that good documentation is not needed. It is. In many places it's lacking. I'm not going to say that I look through the source code any time I try to use a program with little/no/bad documentation. I usually don't, and just look for something else. But to assume that every developer of an open source program needs to dedicate their time to something that YOU want is a little selfish, IMO.

    I wonder how many of these people that whine and complain about bad documentation have actually written any documentation OR code. They obviously feel the need to write something though, so maybe instead of bitching about the situation, they should do something to improve it. Of course, I think we all know which is the easier of the two options...