Open software and documentation

One of the aspects of free or open software that has yet to live up to the expectations set by commercial enterprises is documentation. You might notice, if you browse sites for open software, that many of them ask for help documenting their efforts. The need for a team of technical writers, or at least for geeks who can speak English, can become rapidly apparent once you delve into these products.

Sometimes, the documentation is just nonexistent. You find yourself confounded by a cursory outline for help, filled with "this section coming later" notes and little else. Other times, as with Debian and many other flavors of Linux, the documentation is haphazardly organized -- some of it in manuals, some of it in HOWTOs, some of it scattered to the four winds.

Lately, though, I find myself dealing frequently with open projects, particularly APIs, that have had the surface layer of functionality well-documented, and little else; apparently the philosophy is that a well-written introduction will suffice for beginners, and anyone who wants more advanced functionality will struggle through the process of tracking it down or working it out for themselves.

I mentioned in my last post that I've been underwhelmed by XUL; part of that is that it doesn't seem to be structured in a terribly programmer-friendly fashion, part of it is that it seems prone to unpredictable, fractious behavior, but another huge part of it is that the documentation is so... lacking. XUL Planet is about the best thing out there, and it's frequently incomplete, misleading, or obtuse. The best thing is probably to grab an O'Reilly book on the Mozilla Framework, but when the best advice one frequently finds on message boards and the like is, "Disassemble other people's extensions and see what their code looks like," it's somewhat disheartening. (I shouldn't complain too loudly about Mozilla, though; Firefox's SessionSaver extension just saved me this entry and a bunch of grief when I did something rather stupid with my computer just now.)

My summer work involves using GTK to build a UI for a Linux program. GTK has a tutorial for most of the basic widgets, and you can figure out some of the others from the API documentation. However, it's not really enough to say, "This is what this function does." I need to know how to use these functions and objects in concert to achieve my goals. I paused to write this entry because, for the nth time since I started this project, I found myself resorting to Google in the hopes that someone, somewhere, had already taken the time to work my latest problem out for themselves, and had been good enough to post their discoveries to a message board. Since I'm doing something that isn't easily achieved with standard widgets, this has become an ongoing, somewhat irritating process.

I'm sure that at some point we'll have good, thorough documentation for all our open-source stuff (I marvel at how far Linux has come in a few short years), but in the meantime its lack is rather sorely felt by some of us.

Addendum: Speaking of coming far, I just switched into KDE for a moment -- the last time I tried it was in early high school, I think, so it would have been fairly young -- and... Wow. I hate to say this, because I've gotten very attached to GNOME, but at first glance it looks like KDE has, in many ways, surpassed the competition.

Trackbacks

Trackback URL for this entry is: http://blog.case.edu/maw33/mt-tb.cgi/1841

Comments

Last time I wrote a gtk+ app, I found the documentation over at http://developer.gnome.org/doc/API/2.0/gtk/ to be pretty good. The glade2 tutorial was also helpful (libglade2 greatly simplfies all but the most trivial gtk+ programs) as are the code samples in gtk-demo which really seems the best way to learn the more scarey parts of the gtk+ API like GtkTreeView.

Posted by Alex on July 11, 2005 08:10 PM

Hey, Alex, thanks for the pointers.

I'm making constant use of the GTK API reference, and of libglade, and I'm very grateful for it so far as it goes.

Perhaps I should more accurately have complained of the GDK API reference. The problem is that, for the moment anyway, I'm attempting to make somewhat nonstandard widgets, which require use of GtkDrawingAreas and GtkImages, and you don't have to delve too deeply into GdkDrawables before really meaningful guides kind of peter out. The GDK API reference isn't completely useless, but it's not a comprehensive guide, in my opinion, either: and there are pitfalls that you don't see coming with a thin API documentation, which in turn necessitates some time-consuming combing through Google results to see if anyone in the wide world of the Internet has guidance to offer. I'd be quite happy to make use of GtkTreeViews right about now. ;-)

I'm working on some changes which may put me back in the happy land of GTK widgets -- TreeViews are what I'm aiming for, by pleasant coincidence -- but requirements may be such that I don't get off that particular hook.

One always expects some stuff to crop up that's not in the documentation, but I feel like I'm running into a constant barrage of such problems. Of course, the GNOME documentation folks probably assume that anyone who's going to go willfully poking around in GDK stuff can get by on the API and sheer hard-headedness, which I suppose isn't totally unreasonable.

Posted by Mark on July 11, 2005 08:42 PM

For what it's worth, I've been having a horrendous time trying to find documentation and such relevant to the equipment I'm working with this summer. Since I've got a motor from one company and an amplifier from another and a motion control system from a third, it's absolutely insane to try to figure everything out. And, as I was telling you earlier, electrical engineers appear to be completely incapable of documenting the basics about their tools.

Actually, I found a site that kept raving about the many electrical standards in existence: "The great thing about standards is that there are so many to choose from!" I seriously wanted to throttle someone at that point because, despite their many standards to choose from, no one could give a simple explanation of any of them, not even a definition or description that would allow me to determine which electrical configuration my set-up is using so that I could figure out if there were some missing termination resistors or something.

Posted by Nicole on July 11, 2005 08:49 PM

Now that you mention it I do remember that GDK was kind of nasty, and I've only had to use it for image handling.

Posted by Alex on July 12, 2005 08:39 PM

Post a comment