Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
×
Open Source Programming Software

RTFM? How To Write a Manual Worth Reading 244

An anonymous reader writes with a link to Rich Bowen's insightful, detail laden piece at Opensource.com about improving documentation: Have you noticed that the more frequently a particular open source community tells you to RTFM, the worse the FM is likely to be? I've been contemplating this for years, and have concluded that this is because patience and empathy are the basis of good documentation, much as they are the basis for being a decent person. What's the best example you know of for open-source documentation? How about the worst?
This discussion has been archived. No new comments can be posted.

RTFM? How To Write a Manual Worth Reading

Comments Filter:
  • by Penguinisto ( 415985 ) on Thursday May 14, 2015 @10:55AM (#49689253) Journal

    Make it conversational as well as informative. You don't have to write a novel or make it into a drama play, but at least do something to help illustrate a bit more than some short and often mis-communicated list of what the options do. In technical speak? No problem: less man page, more info page (speaking of which, an actual info page would be a nice thing to have for a few of the projects out there, eh?)

    • by Anonymous Brave Guy ( 457657 ) on Thursday May 14, 2015 @11:00AM (#49689311)

      Make it conversational as well as informative.

      On a related note, often with OSS there are more than two parties in the conversation.

      If I'm configuring some sort of local mail store, I don't just need to know how to set up Dovecot. I need to know how to set up Dovecot, Postfix, Roundcube, and so on, and I need to know how to set them up together.

      If I'm configuring some sort of Linux server, I don't just need to know how to set up RAID, I need to know how to do it with logical volumes for future-proofing, and I need to install a bootloader that understands. And then I need status monitoring, and procedures for recovering after failure, adding more capacity, and so on.

      Frequently with OSS, particularly sysadmin-type stuff, I find there is more detail than you would likely ever need about any one part of the system, but the real problem is figuring out how to connect it all up in practice.

    • info's info page looks like a converted man page on my system! wow.
      Most missing in its documentation is "NOTES : This program is unusable, use pinfo instead."
      Man pages themselves could see some color.

  • by NotDrWho ( 3543773 ) on Thursday May 14, 2015 @10:56AM (#49689271)

    Coders they got. Projects whose "documentation" consists of anything more than a technical list of bugfixes they don't.

    OSS needs to realize that well-written documentation is just as important as well-written code.

    • Oh yeah, and a message board or empty wiki doesn't count as "documentation."

      • by TWX ( 665546 )
        I remember when the Linux Documentation Project and Howto.org (if I'm remembering the URL right) had just about everything. Then the UI-side exploded and went crazy, no one kept the docs up to date, and it all fell on its face.
        • by Enry ( 630 ) <enry.wayga@net> on Thursday May 14, 2015 @11:35AM (#49689615) Journal

          TLDP had a lot of problems and they weren't all internal to TLDP. I think the biggest one was that we were trying to balance between documentation style and authoring while trying to make it easy for people with little documentation skills to write. It isn't as easy as writing a word doc and uploading it - we were trying to make it so you could read documentation on any format: PalmOS, PDF, Word, printed, HTML. Docbook and linuxdoc made that process easy, but it was a markup language and the best way to write it was as by doing the markup yourself (think writing HTML by hand) and there was a lot of infighting about going back to linuxdoc. As the documents became more complex it was difficult to do technical reviews since a lot of the people were more documentors than technical. As Linux grew and advanced, nobody was available to update old documentation because they were working on new ones, so much of the existing content became stale.

    • You can be a programmer and write documentation, but if you want good documentation, the person writing it shouldn't be the same person who wrote the code.

      The problem is that you're already too far in -- you understand the design issues, the quirks, etc. You need someone with a fresh view to write the documentation who doesn't come in with a lot of implicit knowledge of the inner workings of the software.

      My boss has a policy that it's the newest or youngest person on the project's job to write the document

  • Maybe the author of the article needs to read How to Write an Article Worth Reading.

    (Seriously though, his section on where is kind of interesting).
  • by jellomizer ( 103300 ) on Thursday May 14, 2015 @11:00AM (#49689309)

    I was able to teach myself Pascal and C++ with the quality online Documentation in the Old DOS Borland Developer tools.

    There are levels to the documentation.
    Theoretical: Why is it here.
    Actual: What does it do
    Physical: working examples.

    • by halivar ( 535827 )

      In the same vein: QBasic help file. Until I was able to finally obtain a copy of Turbo Pascal in high school, QBasic was there to teach me programming from absolutely nothing.

    • I initially taught myself Commodore BASIC v2 from the reference manual. That was my first programming language, and I was a very small child of 4 at the time. Clearly, that was a well written manual. I also have fond memories of QBASIC (yes, fond).

      Shortly after, I had the aid of some series of books aimed at children, which taught BASIC. As I recall, they were slim red hardcover books, and one of the examples included a little racing game. I wish I could recall what they actually were titled, as I'd love to

    • I taught myself assembler from a MOS technologies 6502 reference manual and an Apple ][ ROM source.

    • The working examples are the most helpful thing. I have seen documentation that covers the API in all of its technical glory, but with very few/no working examples for each of the functions.
  • by Anonymous Coward

    How can your theory explain that one of the best documented projects is developed by the most widely recognized assholes of the open source community?

    • What does 'old what's his name' (the toejam eater) have to do with BSD?

    • by rbowen ( 112459 )

      Yes, there are plenty of counterexamples. And those communities - I presume you are referring to Linux? Or did you mean something else? - are remarkably hard for beginners to break into, unless they display a similarly belligerent attitude. Thus, this kind of attitude is self-perpetuating, and it makes it remarkably hard to improve the tone of the community over time. Monkey see, monkey do.

      Look, I'm not declaring this to be a theory or a law of community organization. I'm saying that when you're nice to peo

  • The trend nowadays is to sell you a separate book in place of the manual that should have come with the product in the first place....

  • The fine `man` has served me well over the years. At points, it is too terse or too verbose, but very rarely is it flat-out wrong.

    As for other projects, that's what source code is for, right? No programmer worth their salt should be afraid to dive into a random piece of code to answer a question. It's an essential skill to go from having a question to finding the implementation details and understanding them. Often, this is the only way you get a concrete answer.

    Yes, I write documentation for my stuff. Yes,

    • Dive into source code? Maybe my time is more important that sifting through poorly structured directories full of 500 source code files each, and the 8000 instances of that variable that grep reported back.

      If people spent a mere 5% of the time they spend coding an API designed to make something easier, on actually documenting that API, then their actual goal of making something easier would be more effective. Time is money, and the more time people have to waste "re-inventing the wheel" of merely learning
      • Dive into source code? Maybe my time is more important that sifting through poorly structured directories full of 500 source code files each, and the 8000 instances of that variable that grep reported back.

        I don't go using pieces of software with 500 files and no documentation if I have any say in it. If you spend all your time cobbling together enormous stacks from hugely bloated libraries with no maintainer, you might run into that issue. If you don't have any say in it, you should try ack. It's like grep, but much more useful for source code.

        How many times have you downloaded a project, only to discover they didn't even give you instructions on how to compile or link the damn thing in your project? How many times have you seen a project not list their dependencies so you get to play a 15 minute game of "find the packages"?

        Many times. I am also good friends with `rm` and `apt-get`. If it doesn't explain clearly how to link against it, or it isn't obvious, I'm unlikely to spend a large am

        • by Yunzil ( 181064 )

          If you spend all your time cobbling together enormous stacks from hugely bloated libraries with no maintainer,

          So, in other words, the real world?

    • "man" pages as an example of good documentation? Dear God Almighty, man, it was going to be my example of the WORST documentation ever created. In fact just about everything associated with UNIX or *nix documentation is absolutely the shits.

      The best documentation of that type is VAX/VMS "help ..." The best written manuals of that type were for VAX/VMS, too. Everyone should have to read "VAX/VMS FORTRAN Programmers Reference guide" and go through every single command in > help ...

      Oth

  • by Registered Coward v2 ( 447531 ) on Thursday May 14, 2015 @11:09AM (#49689377)
    are targeted to a specific audience. What is best depends on the audience. A manual aimed at a programmer may be written differently than one targeted at an end user, for example. While the basic content may be the same (examples, definitions, explanation of menus, etc.) how they are presented and in what detail may be very different. the main problem I see with manuals is they are often written by someone who may be a good programmer but has no idea who the audience is or what they need; which results in an end product that fails to meet the needs of the audience.
  • When discussing documentation if thought about this rule:

    90% of people want to have documentation
    50% of people want to read documentation
    10% of people want to write documentation

    I think the above is the reason people don't write documentation. Few want to write documentation and they are often not motivated to write because people barely read documentation even if the see a need for it.

    • Re:Truism (Score:4, Insightful)

      by NotDrWho ( 3543773 ) on Thursday May 14, 2015 @11:18AM (#49689479)

      10% of people want to write documentation without getting paid to

      FTFY. Everyone on an OSS project wants the front-line job of coding (and are even willing to do it for free). No one wants to be the guy doing the hard, less cool but no less essential, job of writing the docs.

    • This is a good observation. Perhaps something like Wikipedia, which has been a big success of written "documentation", draws from a very large user base, so the small percentage of people who write still results in a lot of text. It also has a very low barrier to contributing (or at least used to...) For example, I've contributed a large number of small edits to Wikipedia over the years but have never actually written an article, except one I started about some short-lived, long-forgotten David Pogue TV

  • by Anonymous Coward

    The first hint that it's shit is that the Documentation link goes to a wiki. It gets progressively darker after that.

  • by Anonymous Coward

    An important area to concentrate on is providing example usage. The more, the better.

  • by EmagGeek ( 574360 ) on Thursday May 14, 2015 @11:20AM (#49689489) Journal

    What I've learned from decades of reading professionally-written manuals can be summed up in two steps:

    The first step in writing a good manual is to have a very weak grasp of the language used by your target audience. It is important to use many grammatical and spelling errors, just to make sure the reader stays on their toes and pays attention. Research has also shown that users do not like to read manuals that use advanced vocabulary or complex grammatical structures.

    The second step is to manage the density of information on the pages properly. A piece of paper is pretty large, and so are most screens, so a lot of information can be included on a single pane of view. It is important to make the most of this space and convey as much information as possible, as densely as possible. The more information a user can see without having to turn pages, the better. Use of separating devices, indications, and other correlative marks should be avoided, as it takes away from space that can be used for more information. They also can cause there to be more whitespace on a page, which should be avoided at all costs.

  • Bad FMs tend not to get read leading to more confusion and RTFM comments. WTFM!
  • by pecosdave ( 536896 ) on Thursday May 14, 2015 @11:37AM (#49689647) Homepage Journal

    So years ago I was in varying positions at an ISP, but regardless of title "head tech" pretty much applied. We kept getting kids right out of high school that claimed to know computers well but had never used a command line, didn't know what an IRQ was etc.. As this was the Windows 95/98 era and this was a dial-up ISP some manuals had to be written.

    I of course wrote them.

    I made flow charts for email troubleshooting (I hated Visio so I used a graphical editor instead), I had grids for IRQ/Address settings, I had step by steps for undoing AOL I.P. stack sabotage (how many of you remember that?) Fact was I wrote really good documentation that anyone from teenager to adult could use to troubleshoot the "normal" day to day issues a worker at an ISP faces without making a condescending script. If you used it for reference it was an answer key, if you read every word you often would know why that problem occurred. I'm of the belief understanding an issue is always better than just knowing what the fix is.

    Long story short - the documents leaked out of the company. On the north side of town there was a help-desk outsourcing company that tended to have a lot of employee migration with our own - in both directions. A buddy of mine went to work at a different ISP and saw my documents turn up there with my name replaced on the credit line (he knew I wrote them - he watched and knew the marks I put in things that were dead giveaways it was my stuff).

    I no longer worked at the old company and was still finding out about my documents leaking all over the damned place. I decided to put the documentation GPL on the things and throw them out on my webserver. If figured if I put them out on the web myself then there was a verifiable copy out in the wild, it would shine a light on the plagiarizers, and I was hoping to maybe get offered jobs or something. Later I was criticized with "that really should have been Creative Commons". Fuck you, I did this before Creative Commons even existed.

    My web server and the backups were physically stolen from my home, but there's still an archive [archive.org]. To this day I still write in the "explain it, don't step it" method.

    Turns out lots of places want idiot guides [slashdot.org] and don't care to understand.

    • I made flow charts for email troubleshooting (I hated Visio so I used a graphical editor instead), I had grids for IRQ/Address settings, I had step by steps for undoing AOL I.P. stack sabotage (how many of you remember that?) Fact was I wrote really good documentation that anyone from teenager to adult could use to troubleshoot the "normal" day to day issues a worker at an ISP faces without making a condescending script. If you used it for reference it was an answer key, if you read every word you often wou

      • One of my favorite things about the job I referenced is most of the people we hired were in their late teens or early 20's and were eager to learn and prove themselves. To this day it's still the age group I like to work with the most. Of course I expected a lot of churn, I would have been disappointed at my trainees if they didn't ditch that place after some training.

        I love interactive documentation - I find myself hovering my cursor on a regular basis on stuff I'm unsure of and I'm always disappointed w

  • is the Gnu Make manual. Better than the O'Reilly book.
  • How not (Score:3, Interesting)

    by Crass Spektakel ( 4597 ) on Thursday May 14, 2015 @11:40AM (#49689691) Homepage

    I am already happy when the author has read http://www.xkcd.com/1343/ [xkcd.com] and some early manpages of sudoers (imho the worst, by far).

    Todays "sudoers" manpage has already been cleaned up a lot and is still a horrible read. But in the past it was something like "the relevant configuration is a hierarchical list of geometrical weighted values. Each one represents a position in a list relative to its anchor". And yes, that was just a weird way of saying "/etc/sudoers contains configuration keywords with options".

    Overall I had the impression the author was a sociopath showing off his mathematical skills while keeping the core knowledge unavailable to others.

  • by hhawk ( 26580 ) on Thursday May 14, 2015 @11:56AM (#49689829) Homepage Journal

    Based on the work I did in 1985 at Bell Labs as part of my assignment to create documentation requirements for the Acorn Network Control System -- Good documentation should have at least 4 parts. Each particular user persona would use the 4 parts in different ways. Part of the documentation would appeal to potential customers, novice users, intermediate users, users with limited but deep domain expertise, users who previously had fluency with the product but who lost that fluency due to lack of use.

    #1 The first in additional to typical table of contents found in each manual there should be a documentation MAP, that combines all of the various documentation and training for a specific product into a visual map; typically this is done with a task orientation. Much like a web page site map, this will allow a potential readers with a wide range of user cases to find the right document or the correct chapter, section, and should include online training, videos, Etc.

    #2 A quick reference guide which I think most users would be familiar with. This instruction is typically very linear, and walks at a high level users through the major steps for the most typical cases.

    #3 A "cook book" best for coding applications but has broad application to most technologies. Each section of this manual details how to perform a particular task, in it's entirety; e.g., a recipe. Recipes should cover a range of users types (novice, intermediate, expert, or with specific previous domain expertise). A non-coding example would be: Recipe for setting up a mix minus recording using the Behringer Xenyx 1202fx mixer; the ingredients would include all cables, software, Etc. used in the recipe.

    #4 A complete and full reference guide. Again typically found in manuals but often (today) the ONLY section of the manual. Each sub-section is a full and complete deep dive on each part, instruction, or option. This is typically used by experts. It can be used by those who are using the cookbook to look for recipe options and substitutions. It can also be used by potential customers to see if a particular use case is supported.

  • Unless you want your readers' eyes to glaze over, write in active voice [towson.edu].
    • That should read:

      Passive voice, should not be used.

    • by PPH ( 736903 )

      This is a good point. And it's something that technical writers seem to have developed a love for (the passive voice) for some unfathomable reason.

      Back when I used to write engineering documentation for Boeing, management used to throw a hissy-fit whenever someone would use the active voice. By hiding the subject of a sentence, it was felt that responsibility for some action or decision could be side-stepped. (See how that reads?) "By using the ACME brand fasteners, it is believed that the wings could fall

  • Old GNU project manuals are VERY good. Bash and libc have incredibly detailed and clear manuals (in the form of info files, also available as pre-formatted PDF books). I think no one now writes documentation like that.

  • by CaptainDork ( 3678879 ) on Thursday May 14, 2015 @12:08PM (#49689943)

    ... it's important to remember what it's like to not know.

  • The best documentation I have dealt with start with an overview of the process you are going to go through, shows a non-trivial example, and only then going into the jargon filled nitty gritty references and details.

    Way too much documentation only covers the detailed references with no clear context or useful examples. Folks in the know are prefectly happy, but folks at the bottom of the learning curve end up very frustrated.

  • I always think of the man pages on the Linux command prompt when thinking of the worst documents out there.
    I really think whoever writes into these has no idea how to make them human readable.

    I couldn't be bothered most of the time and ended up googling for what I needed to do instead.
  • Open source code faces a special obstacle when it comes to quality documentation. By the very nature of the ecosystem, open source projects derive from the needs of those who are directly contributing to it; the experts, in fact, and thus any artifacts the project produces will be based on their requirements, not those of casual users. It's not only required, but expected that in most cases, a user will be knee deep in the lower level details and have a high level of proficiency and knowledge of not only

  • I remember when first getting into Linux, I had a HORRIBLE time figuring out what 'ln' (link) did, cause all the docs skipped around defining it.

    I wrote up some real world docs way back then and they turned into one of the most popular posts of all time on my site:

    Symbolic Links: Defined [messagebase.net]

  • Hands down excellent. High-level overviews, more detailed usage guides, fully-detailed references, and internals. Well-written, well-organized. And guess what else? A TABLE OF CONTENTS at the root, so as soon as you find your way to the docs, you can see what's there and how they're organized. Too many OSS projects lack that. (Oh sure, there's tables of contents, lots of them, for individual areas of documentation which are spread all over the place--not the same thing.)

  • by careysub ( 976506 ) on Thursday May 14, 2015 @12:46PM (#49690405)

    And not because it has to be that way. The software is just poorly designed.

    In an ideal world, user documentation would be written before the software so that an understandable, consistent, UI would exist. This sometimes happens, but even then, the implementation may not match the documentation (yes, I have seen this more than once).

    Design principles like: simple things (and common tasks, even if not exactly simple) should be simple to do; the same technique should work in all contexts; etc. are often ignored in OS projects.

    I have come to despair in trying to find a nice open source (Linux) object-drawing program that is intuitive (and thus easy to learn), has consistent behavior, and allows the quick creation of clean basic diagrams, and maybe has an additional level of finer controls for more precise work. The original Macintosh had this back in the 1980s with MacDraw, and the even more awesome MacDraw II. Complete novices could take the program and discover how to make good looking "boxologies" in minutes just by playing with the tools. Maybe such programs are still available on the Mac platform (I haven't had one in years), but no OS object drawing or 2D CAD program on Linux seems able to grasp what one of the first such pieces of software on the market was able to accomplish.

    (Another really annoying thing to find in user documentation is self-praise about the product and accompanying documentation: making promises about how great the product is, and how wonderful the documentation you are looking at is, that are rarely kept.)

    • by tomhath ( 637240 )

      This sometimes happens, but even then, the implementation may not match the documentation

      I disagree that it sometimes happens. Writing the manual before you write the code pretty much guarantees the manual will have little correlation with the code for all but the smallest applications.

      • I actually agree with this. The documentation does need to evolve with the implementation, and if you don't, it is as you say. But having a clear concept about how it is to be used, and working out a coherent description of using it is a very strong design tool to make a usable, understandable system.

  • Ask the users. (Score:4, Insightful)

    by Kwyj1b0 ( 2757125 ) on Thursday May 14, 2015 @12:51PM (#49690481)

    The problem with a lot of documentation is that they aren't written from a user's perspective - they are written by people who wrote the software, and know what to do. Letting go of your design assumptions is almost impossible.

    I have long felt that the first draft of documentation must not be written by the person who wrote it; you have to allow your users to "send" you the first draft (either through email questions/screenshots/etc.). Then you realize how many assumptions you made that are non-obvious to your users.

    Obviously, this isn't really practical for OSS - you might not be able to pay for usability testing and feedback. Which is why I prefer to include screen shots in documentation as much as possible. Also, I try to follow this basic formula for documentation: What (what is the user trying to do - make it clear what this section of the documentation address), How (how can the user achiever her goals), Why (this is where you might, if you choose, try to explain a design/implementation philosophy - it comes third, so that someone who doesn't care doesn't skip the entire section. Clarity and brevity are important.).

    This is the principle I follow for user stories as well - create an end-to-end user workflow (which is basically just many small What/How/Why sections tied together).

  • Which I had published in the now-defunct SysAdmin magazine in '06. http : //24.5-cent.us/egoless_docu.html

                      mark

  • For a comprehensive look at what can be done with a very unusual language, the J essays are hard to beat: http://www.jsoftware.com/jwiki... [jsoftware.com] . They provide context around why you might want to do something one way rather than another and are much more literary and wide-ranging than typical documentation.

    The details of the vocabulary - linked to from the "Vocabulary" page (http://www.jsoftware.com/jwiki/Vocabulary) are also pretty good because they combine general definitions with explicit usage examples.

  • First, whatever became of of the FM which used to come with the software? Billy Gates and Co. halted it, so their Micro$oft Publishing Co. could reap profits from forced purchases by the noobies.

    The very best documentation I've ever read --- and I suspect was written by engineers --- was the Perkins-Elmer OS 8/32 Processor Manual --- once this was read through and through (took me about 50 times) one completely grasped and understood the operating system at the hardware level/software level --- truly a
    • Understanding what it's all about, including checking the reader is the target audience.
    • Achievement getting started on concepts or running a tweakable demo. Lots of little steps that each have a 'reward'. (A box-out try-yourself example is a good format in a discussion.)
    • Reference needs to be compact to search like a cheat-sheet but lead to the proper details like a proper reference tome. For example I knocked-up this http://vulpeculox.net/misc/jsj... [vulpeculox.net] for javascript.
    • Also
      • Include documentation in
  • Perl man pages (Score:2, Informative)

    by Anonymous Coward

    One of my favorite sets of open source documentation are the perl man pages. They are written in an informal yet instructional style, and are *loaded* with useful, practical examples of how to use the language. Heck, I refer to "man perlretut" even when I'm not using perl, but I need a general reference for regular expressions. Sooooo useful!

  • What's the best example you know of for open-source documentation?

    It's not open-source documentation, but the same general principles ought to apply. Years ago I bought an Epson dot matrix printer. The first chapter was called "Quick Start." Quick Start told you how to get up and running with the minimum of fuss. For example, it said, "connect all the cables" instead of saying, "connect plug a (pictured) of cable monster (pictured) to jack b (pictured) of printer 345DEF (pictured), along with all the wa

  • Maybe related to this topic, there was an article about how more and more companies are not providing useful customer support because they figure users will present, discuss, and solve problems in forums. Which I have found not many forums are useful except only reading about others have same problems as I do. i.e. video-to-usb adapters which seem excruitatingly difficult to use (easy to connect but always a crapshoot if video signal is recognized). Another gripe I have on forums are several group categorie

"When the going gets tough, the tough get empirical." -- Jon Carroll

Working...