Open Source, and other Dumb Ideas

[article]
Summary:

It was way back when I was in school, walking uphill through the snow both ways, mind. That's when I first encountered Emacs and the Free Software Foundation. Because I was young and naïve and enthusiastic, I jumped in with both feet. Free software was going to revolutionize the world, and I was going to write most of it! I was naïve, like I said. I think most FOSS (free/open-source software) people get started in school, the same as me. A lot of the ideas come from the young and idealistic. Face it: young people have dumb ideas.

“Old people have 'em, too, sure. But young people get all excitable 'bout their dumb ideas. They actually try to do something about 'em. Old folks like me know better. We say "Ahh, it's just a dumb idea," and then proceed with complaining about the boss.

It's not all bad: there are some really dumb ideas out there making a bunch of money, like selling books over the Internet. Now there's a dumb idea for you. Sure, college kids might buy textbooks online, because they have to, but no reader would trade in the opportunity to stand in a bookstore and thumb through Robert Parker. Or sit down with a nice cuppa joe while reading a little Anne Rice. The very notion that educated, cultured readers would give up the chance to browse, to maybe serendipitously stumble across an author they'd never heard of, for sitting around in their bathrobe and slippers and clickety-clicking on a website someplace? That's ridiculous! Who wants to wait days or weeks for a book they could pick up on the way home from work?

Not all ideas are "open source" but the only way to "close source" an idea is to patent it. You can patent all you want, but when you go into business selling books, say, that's not patentable. So most ideas are open source; the public gets to look at them and poke and prod and decide, "Hey, this is a bad idea!" Or maybe it’s not. The Internet is good at spreading ideas, what with instant messaging and electronic mail and chat rooms and all. Or at least the description of an idea: nobody e-mails you a bookstore, but they might shout-out that
Amazon.com was a good place to get all the O'Reilly books. Anyway, unless your idea is some new way to synthesize polymerases and needs a bunch of equipment, odds are good that some well-informed, well-meaning crackpot will post a spiteful, bile-filled diatribe telling to the world about your cultural, genetic, intellectual, and spiritual shortcomings. Sometimes they'll talk about your idea, too. You can usually tell how dumb an idea is by how many people complain about it. The number of folks making fun of the whole Internet-bookstore thing was huge. I remember mocking the idea myself over a few drinks one Friday after work, but I never got around to writing anything down, because we were too busy complaining about the boss.

Well, the Internet bookstore isn't purely an SCM thing, but it is a good place to pick up the latest CM books, so it's not completely off the subject. Here are some other ideas that have come out of open source. They're not all as strange as the books-by-mail one:

Document Generation
This one's an oldie but a goodie: Wouldn't it be nice if you could mark up your source code to automatically extract the docs? Well, there is a way. In fact, there are a lot of ways; they are all FOSS and all competing. There’s nothing like having a whole slew of standards to choose from, eh?

JavaDoc is one name: the Sun folks have got a whole slew of imitators. For every programming language "Foo," there's a FooDocumentor project sitting around on SourceForge. Also, there's Doxygen. Having a way to convert comments into docs is nice, but can't we do better than that? Well, yes. A lot of UML tools, like ArgoUml (it's open source) and Enterprise Architect (it isn't) support the JavaDoc or Doxygen formats in the code they generate. So you can pass comments and other stuff from UML to source code. Some tools, for some languages, even let you "round trip" the comments: if you make changes to the comments they get parsed back into the UML.

Now the fact is that "XML" doesn't necessarily mean "open source." It does mean "open data format," and if the format is open, then it's so close that it makes no difference. That's doubly true for XMI. XMI is a standard for sharing UML documents. Sharing via XMI means your workflow or change tracking tool, or your requirements management system, or your test manager can automatically update the UML. They aren't all open source, but these tools all have the "open attitude" because open source is so popular and they all conform to XMI so you can take extreme advantage.

Interactive Documentation

FrontPage, as you probably remember, is a whizzy-wig HTML editor. You can design a web page in FrontPage just like a word processor. When you're done, FrontPage will vomit out a pile of incomprehensible gobbledygook that no tool, including FrontPage most times, can edit or update. Still, you get a good looking web page, as long as all your viewers use Internet Explorer. Now your FOSS types, for some reason, they don't usually like Microsoft but prefer some flavor of Unix. So naturally, when presented with a Microsoft product that was totally graphical, produced HTML and that any idiot could use, it was like some kind of gauntlet was thrown down. The FOSS types declared, "We'll produce a Unix-flavored FrontPage. A tool that can run anywhere, so long as you understand Perl, that can only use ASCII, and that requires learning a new language that is just exactly like HTML but will use line-noise characters like vertical bar (|) and asterisk (*) and not tags like bold or strong!"

You might be thinking, "Wow! What a dumb idea!" and you'd be right, because what they came up with was a
wiki, a web site uses simple text markup like we've used for years in e-mail and on Usenet. You can do _italic_ or *strong* text. Woo-hoo! Not only does a wiki require that you learn the secret language of nerds, it also requires that you know HTML so that you can figure out what bizarre line-noise characters correspond to whichever advanced HTML feature you want to use. How's that for silly?

The best part of this whole "wiki" foolishness, though, is what you can do with it. You can set up a site and allow anybody (anybody) who has learned both HTML and the obscure nerd line-noise code to make updates. And they can change what you've written at any time. The result is chaos, naturally. One fellow set out to create an
encyclopedia, and suddenly the public swarms over it, putting in entries for every last social and cultural name from People magazine and the Weekly World News. They put in articles in nearly every language in the world and commit slander against political figures and film stars and generally made this guy's life a three-ring circus. Like I said, chaos.  His simple encyclopedia has turned into a behemoth with billions of hits, millions of entries. Thousands, if not more, jealous whiners filing lawsuits and writing newspaper articles about what a bad guy he is, all because the fool let just anybody make changes. Now because the FOSS movement is filled with yahoos who won't let well enough alone, there are scads of implementations of wiki software. You can download FOSS wikis in Java, PHP, Perl, .NET, C/C++, and even Haskell (I don't know why. I don't want to know why.) For some reason, not so many people use FrontPage any more, but it's still bundled with some versions of Microsoft Office, I think, if you don't get Access instead.

After the wiki debacle, people realized that letting just anybody update your site wasn't always the best idea. It could be that instead of a giant collaboration, where everyone contributed and everyone benefited equally, there was a need to separate the "official" from the "unofficial" documentation. Letting users contribute isn't the worst thing in the world, but it seems pretty shaky. What would happen, after all, if your users found errors in your product, or in your documentation, and corrected them. Phone or email support volume might go down, and the next thing you know some middle managers are losing headcount. Really, this doesn't seem like the kind of thing that's good for anyone.

But, fools rush in where angels fear to tread, and so places like the official PHP language website feature documentation that has an official part and a user comments part. For some reason this sort of documentation is more popular in pure open source environments. There are open source languages (PHP, Perl) with user-updated documentation. There are libraries and web applications with user-updated documentation. But I don't see this kind of website so much on Java- or .NET-based sites. Those administrators obviously know something the rest of us don't.

Project Status
Now, I know you've seen all the ruckus caused by bloggers; people with too much time and not enough to do maintain a weblog, or "blog" for short; with their aspirations to serious journalism: criticism of the mainstream media; accusations that respected organizations like CBS news were failing to check their facts. A blog is like the mimeograph machine of the new millennium: cheap, easy to come by, and usually used by wackos with strange politics. Take
Brad Appleton, for instance. Six rules for CM this. Ten reasons for Agile that. Yap, yap, yap, natter, natter, natter. I swear he'll be writing continuous integration nursery rhymes 'fore too long. Don't his boss ever look in his cubicle, to see what he's doin'?

It doesn't have to be that way. There's "plogging" which is short for project blogging. You get a blog set up, and let everyone on the team write stuff. "This feature is done." Or maybe, "The test all failed last night." Depends on your team, I suppose.

As you might figure, there's a mess of blogging software packages. The most popular is WordPress, although like most categories of FOSS there are about eleven dozen unpopular me-too variants. WordPress is written in PHP, and can be installed along with the Apache web server (FOSS) and MySql database engine (FOSS) in about two hours on a Windows machine. The nice thing about plogging is that blog software maintains archives of everything, but always sends users to the "current" page. This means that while meetings and decisions can be documented, the default page is always "new news." People coming back from vacation can browse the archives for what happened while they were gone, while the rest of the team just checks in with the front page.

Attack of the Clones
Along with all the other problems FOSS causes, there's the clones. So many clones. Look at
Trac: a combination defect tracking, project wiki, and CM tool. It seems like a clone of StarTeam. Except the CM part is better, and Borland doesn't offer a wiki. But then there's cvsTrac, a clone of the clone. Instead of using Subversion, a high-quality FOSS version control tool, the way Trac does, cvsTrac uses CVS. Instead of using Python, an elegant, popular, high-quality scripting language, it uses C. They've taken Trac, a StarTeam with improvements, and deproved it. They rolled it backwards. These FOSS anarchists have no respect, not even for each other!

Or look at the Mono project. Microsoft tries to embrace and extend Java, like any good monopoly would. But Sun, plus the entire U.S. legal system, conspires to prevent them from doing so. Rather than foolishly competing in such a hostile environment, Microsoft invents a new, better platform: .NET. It's a virtual-machine system with all the portability you normally associate with Microsoft products, and it boasts the speed of Java, too. A commercial stroke of genius! Would the FOSS community let them go their merry way? Of course not. Hundreds of contributors have spent countless hours cloning the .NET platform. Now you can use Mono to run .NET applications anywhere: Linux, Mac, Windows.

Leveling the Market
Sometimes cloning isn't enough. One FOSS application, the
GNU Compiler Collection, has really leveled the market. Not leveled like a playing field, but leveled like an earthquake. Time was there were lots of C compilers. Every CPU vendor provided one. And there was a broad spectrum of quality. Now-a-days, there is one compiler: GNU C. If you're lucky and your target architecture is really, really popular, there might be a few commercial offerings. All those engineers who could have been gainfully employed writing a compiler for their company's CPU are now probably driving trucks, or building web applications or something. What do we have to show for it? Blandness. Homogeneity. One compiler, with the same old set of switches and options that runs everywhere. In fact now you don't even have to OWN the CPU you're trying to compile for. Just get GCC configured to generate code for the target CPU and you don't even get to get up and walk into the lab. Oh no! Don't leave your desk: you can build H8/500 code from Windows, or Linux. Bah!

It's madness, really: a bunch of crazy ideas. I'm telling you, this whole open source thing is a crock. Nothing good can come of it. 

CMCrossroads is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.