MediaWiki Plugin for Laconica v0.1

I’ve been playing with Laconica for a while now, mostly on Identi.ca but also on some self-hosted sites for various projects. For the Grantsfire project, we thought that Laconica would be a great way to keep others updated without flooding our inboxes, so I installed the latest version. I noticed that there’s now a plugin API, so — with encouragement from Evan Prodromou — I decided to scratch an itch I’ve had for a while and write a Link As You Think Mediawiki plugin.    (N5W)

It wasn’t too bad. My main challenge was figuring out PHP. I’ve looked at a lot of PHP code in my day, but I’ve never written a line of it until today. I thought I could skate by without spending too much time understanding PHP’s idioms and idiosyncracies, but — as is often the case — trying to skate by ended up taking more time than learning how PHP worked. The Laconica codebase is relatively clean, and I learned a lot by reading it.    (N5X)

Many, many thanks to Evan Prodromou and all the Laconica hackers out there. It’s an awesome tool, and it’s enabling me to do some cool stuff that wouldn’t otherwise be possible.    (N5Y)

WikiClock: The Next Killer Wiki App

Got back from Montreal and RoCoCo 2007 last Friday with a pile of notes and a case of the flu, which pretty much killed my productivity this weekend. Fortunately, spring conference season for me is over, and I’m boycotting all summer conferences with the possible exception of Wikimania in Taipei this August, which means I’ve got plenty of time to digest and regurgitate. As usual, it’ll come in bits and pieces, starting with this post.    (MAV)

RoCoCo pretty much kicked butt. Much props go to Evan Prodromou, Anne Goldenberg, Antoine Beaupre, and the entire Montreal Wiki community for pulling off such a great event. Lots of participants traveled to attend, including several Europeans, which made the experience much richer. This included representatives from every PHP-based Wiki (Tim Starling of Mediawiki, Andreas Gohr of Doku Wiki, Reini Urban of PhpWiki, Patrick Michaud of PmWiki, and Marc Laporte of TikiWiki), which was awesome. I was happy to see old friends from afar and from not-so-far, and I met several great new folks. WikiOhana is a wonderful thing.    (MAW)

The best session was Evan’s, “Wiki And…,” which he nefariously scheduled at the same time as my Wiki Interoperability session so I couldn’t attend. That didn’t prevent me from learning about his incredibly brilliant idea: WikiClock, made possible by Gordon McCreight‘s most excellent service, pageoftext.com.    (MAX)

What is WikiClock? It’s a clock on a Wiki that tells you the current time in GMT. How does it know the current time? Someone edits the time. Who edits it? Whoever feels so motivated.    (MAY)

WikiClock is a great example of a totally ludicrous application of a Wiki. The point of Evan’s session is that Wiki-enthusiasm can lead to overly narrow thinking. Wikis are great, but they’re not the end-all-and-be-all of collaborative tools. There are a whole slew of good tools out there. Use the right one for the right job.    (MAZ)

The story doesn’t end there, however. What makes WikiClock all the more ridiculous is that people are actually using it. You heard me right. The buzz from Evan’s session started propagating pretty quickly. If you check WikiClock right now, chances are the time is correct. And if it’s not, well, correct it!    (MB0)

WikiClock is that rare breed of joke, where you laugh, then you stop and think, “You know, it’s really not that bad of an idea.” Next thing you know, it’s no longer a joke. I know of only one other joke like it: Parrot, the virtual machine for dynamic languages that started off as an April Fool’s joke.    (MB1)

Granular Editing

I’ve been working with Doku Wiki a lot recently — it was what we used for the St. Louis Collaboratory workshop — and it reminded me of yet another reason why Granular Addressability is more important than we think it is.    (LFO)

My biggest takeaway from working with Doug Engelbart on the HyperScope this past year: Addressability is for more than linking. Indeed, HyperScope takes advantage of addressability to support some powerful navigation capabilities.    (LFP)

Well, addressability can also be used for editing. And in fact, it is. Both Mediawiki and Doku Wiki support granular editing. The reason? Mediawiki is designed for encyclopedias (specifically, Wikipedia. Doku Wiki is designed for authoring documentation. In both cases, you end up having long pages. Editing long pages in your browser is a major pain in the rear. It’s much easier to edit specific sections.    (LFQ)

Augment, of course, also supports granular editing, except the granularity supported is much finer.    (LFR)

This is yet another example of the following law of Collaborative Tools, which I first mentioned in my manifesto:    (LFS)

Good ideas get reimplemented over and over and over again, often independently. It behooves us to identify these ideas, name them, and implement them interoperably.    (LFT)

(This is also the fundamental principle underlying Pattern Languages.)    (LFU)

Creole Wiki Markup, WikiOhana, and More Ward Wisdom

Several folks asked me on Saturday what I thought about the conference, and I kept saying, “It’s been great, except I haven’t had any interesting conversations about Wikis.” That changed in an unexpectedly generative way on Saturday afternoon, resulting in a new little cooperative effort we’re calling WikiOhana.    (KZ1)

At Thursday night’s conference party, I got reacquainted with Chuck Smith, whom I had met at Wikimania last year. Chuck is the founder of Esperanto Wikipedia and was the one who first introduced Brion Vibber — now the lead developer of Mediawiki — to the Wikipedia community. At the conference last year, Chuck met Christoph Sauer, a German Wiki researcher, and the two of them started working together.    (KZ2)

At the party, Chuck told me that he and Christoph had been working on a proposed WikiMarkup standard, and I loudly grimaced in response. At WikiSym last October, I made it clear to several people that I thought trying to standardize WikiMarkup was a noble waste of time.    (KZ3)

First, people are really attached to their own markup. Previous discussions about standardization usually started and ended with, “Great idea. Let’s just standardize on mine.”    (KZ4)

Second, WYSIWYG in theory obviates the value of a standard markup from a user’s perspective. It seemed more valuable to work out a standard interchange language, which WYSIWYG widgets could use to interact with different Wiki engines and which would make data migration between different Wiki engines easier. It also seemed like it would be easier to come to agreement on an interchange language. In fact, folks have already worked out a good proposal for an XHTML interchange language on the Interwiki mailing list (now migrated to the wiki-standards list) and on CommunityWiki.    (KZ5)

What made all this talk worse for me was that I thought that people were trying to go about this the wrong way. We were not going to come to agreement by group authoring a spec, then getting everyone to agree on it. The only way this was going to work was if a few Wikis came to some agreement and actually implemented the changes. This wouldn’t necessarily result in a standard, but it could act as a catalyst that could lead to a standard. Sunir Shah has been advocating this approach for a long time, to no avail. I would have organized such an effort myself, except that I didn’t think it was important enough to spend any time on it.    (KZ6)

Chuck and Christoph changed my mind. Chuck explained that he and Christoph had extensively analyzed existing Wiki markup, and they had taken pains to come up with a small subset of things that would be as noncontroversial as possible. (There had been a similar effort by others to do such an analysis before, but it hadn’t gotten very far.) They were going to present the results at WikiSym in a few weeks, but they had prepared a poster for Wikimania. Still clucking my disapproval, I promised Chuck that I would check out his poster.    (KZ7)

On Saturday, I finally made some time to check out the poster. I studied it and found myself thinking, “Hmm. This isn’t bad.” Chuck came over later, and we started going over it in depth. I still have some issues with it (discussed below), but I told him, “You know what, this is almost good enough for us to adopt in PurpleWiki. But you really should find one or two other Wikis who might say the same.” We kicked a few ideas around, and then I said, “Let’s go see what Ward thinks.”    (KZ8)

So we rounded up Ward Cunningham, and he took a look and started asking questions. He seemed to be okay with the answers, because he said that if someone were to write a Perl function that converted from his markup to the proposed markup and vice versa, he would consider incorporating it into his Wiki.    (KZ9)

Creole Markup    (KZA)

Well, you know me. Low-hanging fruit, a spare hour before the next party. The long and the short of it is, half of the converter now exists. It’s called Creole, and it’s written in Perl. Currently, it consists of a brain-dead simple script that converts Ward’s markup into Creole Markup (Chuck and Christoph’s proposal) and some tests.    (KZB)

The name was Ward’s suggestion. Rather than call it “pidgin,” which is what it actually is (a non-native language cobbled together from two or three other languages), we chose to optimistically call it “creole” (a native language that emerges from a pidgin), which is what we hope it will become.    (KZC)

I have three issues with the current proposal. First, I don’t like the exclamation point syntax for headers, not because of the character itself, but because of the numbering:    (KZD)

!!!Heading 1 !!Heading 2 !Heading 3    (KZE)

As you can see, you need to remember that a top-level header has three exclamation points, not one, and you are only capable of having three levels of headers. The advantage of the equals syntax:    (KZF)

= Heading 1 = == Heading 2 == === Heading 3 ===    (KZP)

is that the heading level is represented by the indentation.    (KZQ)

Second, there needs to be a proposal for preformatted blocks.    (KZR)

Third, the spec isn’t rigorous enough. You have to answer questions like, “Will italics work across multiple lines or blocks?” The reason I didn’t write a Creole-to-Ward converter was that these questions were not yet answered.    (KZS)

Most of the time developing the Creole converter was actually spent reverse engineering Ward’s markup. Ward pointed me to a Literate Programming version of his source code — implemented in a Wiki, of course — which helped a lot. As it turns out, Ward’s been thinking a bit about how to write a good markup parser recently. Parsers are often on my mind as well, as we’ve been talking about rewriting the PurpleWiki parser forever. Plus, the topic came up at Hacking Days among the Mediawiki developers before the conference. We’ll probably noodle on this problem a bit both before and during WikiSym. Fortunately, Ward knows a lot more about writing parsers than I, as anyone who’s seen the PurpleWiki code can attest.    (KZT)

WikiOhana    (KZJ)

When we were discussing names, Christoph proposed “ohana,” which means “family” in Hawaiian. It has a wonderful connotation — respecting our individuality while emphasizing the bonds that keep us together in a positive, welcoming fashion. It’s also consistent with Ward’s original naming convention, as “WikiWiki” means “quick” in Hawaiian.    (KZU)

We decided to call our little cooperative effort, WikiOhana, of which Creole Markup is a first project. We hope the family grows over time.    (KZV)

More Ward Wisdom    (KZK)

While retelling an experience he had writing a parser, Ward said, “That’s when I learned how to write beautiful code: Get it working, then spend the same amount of time making it better.”    (KZW)

WikiMania 2006, Day One

Day one is over. Brain is overloaded. Very tired. Attending conference during day/evening, then working late into night — bad. Law school dorms with no air conditioning in Cambridge in August — also bad.    (KWO)

Still, much to share. And amazingly enough, I will — at least a bit. There’s something about this conference that actually gets me to blog, rather than simply promising I will. Besides, I’m going to set a new record for responsiveness to Tom Maddox, even if it is via blog.    (KWP)

It is incredibly surreal to be back at my alma mater surrounded by post-college friends and colleagues. What makes it even more surreal is that folks from all facets of my professional life seem to be here, not just Wiki folks. I mentioned having my fingers in a lot of pies, right? Well, all those pies are unexpectedly well represented this weekend. It started yesterday when I discovered that Chris Messina and Tara Hunt were on the same flight to Boston, and culminated at dinner with Greg Elin (whom I first met at the FLOSS Usability Sprint, and who invited me to join him for dinner), Daniel Perry (a lawyer who’s been an important contributor to recent Identity Commons discussions), Tom Munnecke (first introduced to me by Jack Park when I was just starting Blue Oxen Associates), and Doc Searls (who needs no introduction). Also at the dinner: Ellen Miller, Micah Sifry, David Isenberg, Britt Blaser, and Yochai Benkler. Quite a contrast from last year, when I was hanging with grassroots Wiki peeps every night. I’m not complaining, though. The conversation was fascinating, even if we didn’t talk much about Wikis.    (KWQ)

Keeping with this theme, I didn’t hear much about Wikis today, other than my interview with Ward Cunningham. I kept my questions pretty basic, as a lot of folks there had never heard him speak, but I managed to slip in a few probing questions for myself. I asked Ward about the evolution of Wiki culture, and I specifically mentioned the culture of anonymity that he strongly encouraged in the early days, but that seems mostly absent in today’s Wikis. Ward seemed resignedly ambivalent. I asked him about what makes a Wiki a Wiki, and he was decidedly agnostic in his response: anything that facilitates a permissive spirit and mode of collaboration. I’m not sure whether he was being political or whether he truly feels this way. My guess is a bit of both, but I’ll press him on this if I get a chance later this weekend.    (KWR)

I showed up late to Larry Lessig‘s keynote, but I was unconcerned, as I had heard him give his Free Culture speech before. It’s excellent, but he recycles it often. Sure enough, he was doing the same speech, and I started tuning out. Fortunately, my brain was paying partial attention, or I would have missed what may end up being the most intriguing development of the conference.    (KWS)

Larry started talking about the interoperability of licenses, and how it was silly that the FDL and Creative Commons BY-SA licenses could not be relicensed interchangeably, even though the two licenses were equivalent in spirit and intent. He then proposed an interoperability clause as well as a neutral organization whose purpose would be to classify equivalent licenses. His talk was followed by a really good panel discussion between him and Eben Moglen. This stuff is really complicated and important, but it looks like Larry and Eben are serious about working together towards a common solution. Apparently, Jimbo Wales deserves a lot of credit for getting these two to cooperate. Did I mention that I love this community?    (KWT)

Quick hits:    (KWU)

  • I shared a flight and T ride here with Chris Messina aned Tara Hunt. (Chris was presenting on Bar Camp.) Chris extolled the virtues of Voodoo Pad, which apparently has autolinking features a la my Markup Free Auto Linking Wiki idea.    (KWV)
  • Was excited to see two of my roommates from last year: Kurt Jansson, a German doctoral student and president of the German chapter of Wikimedia Foundation, and Juan David Ruiz, a Chilean lawyer.    (KWW)
  • Saw Erik Zachte in the morning, who does awesome Wikipedia work. Erik immediately told me about two cool projects I had never heard of: FON and Wikimapia.    (KWX)
  • Caught up with Rory O’Connor after my session with Ward. Rory’s a filmmaker who came to last year’s Wikimania to make a documentary on Wikipedia. What I didn’t know was that he was so inspired by the proceedings, he decided to release all 13 hours of his footage under a Creative Commons license to encourage folks to mix their own documentaries from the event. Check it out, and mix away! There’s some interview footage of me somewhere in there, and I make a cameo in Rory’s 11-minute rough cut, in the background of Jimbo’s interviews yukking it up with John Breslin.    (KWY)
  • Somehow, I got recruited by multiple Wikipedians to help with the lightning talks due to my process expertise. My expert advice: “Move those chairs into a circle, and be firm with the time limit.” Yes folks, this is why I get paid the big bucks.    (KWZ)
  • Briefly got a chance to chat with Tim Starling about the OpenID integration in Mediawiki. Tim explained that they’re going to unify the user databases across all the different Wikimedia properties. This was further validation that Yoke‘s identity proxy approach is useful. Of course, one of these days, I’m going to have to actually write down what that approach is, so that I can convince people of its utility.    (KX0)