The Open Source Initiative: Beyond Stewardship.

March 19th, 2011

This past week Mike Godwin, Jim Jagielski and I were elected to the Board of Directors of the Open Source Initiative (OSI), replacing the term-limited Danese Cooper and Russ Nelson and adding one more board seat. We haven’t had our first board meeting yet, but it’s an honor and a delight to serve in such good company. It’s also exciting, because the OSI has decided, prior to this board election, to move to some kind of membership or affiliation model that will enable it to better represent the open source community at large. To say the least, I’m fully on board — sorry, couldn’t resist — with that.

The OSI is the organization that popularized the term “open source” as applied to software, and it has been the steward of the Open Source Definition ever since, certifying compliant licenses as open source so that there is single point of reference for the entire community. Those who don’t work in this field might not realize how important that is. You have to understand that there is relentless pressure, from both inside and outside the software industry, to dilute the meaning of “open source”. Many corporations and individuals have gotten the message that being open source is a good thing, and want to be associated with it somehow, while adding restrictions that favor their business or philanthropic model (or that they think favor their model, but that’s another post for another day). For example, they’ll say they’re using an open source model, and they’ll have almost open source distribution terms, but without the freedom to make commercial use of the software, or perhaps placing restrictions on derivative works.

Often these dilutions are innocent. Simply through inexperience, people sometimes don’t understand that all the freedoms must be present because they reinforce each other, and that picking and choosing among them doesn’t work. Keeping the open source definition clear and consistent — and explaining it to journalists, executives, government officials, educators, and others when necessary — has been and will continue to be important. But the OSI has to expand beyond that and, as Simon Phipps put it, act as a meeting point for global open source communities, who have a lot of concerns in common. The same pressures that require the definition of “open source” to be actively upheld affect more than just the definition: they affect the business, legal, and policy environment in which we collaborate on open source software. Obviously no one organization can ever watch out for the whole environment; that is the job of many organizations and individuals. But there are times when we need to come together and discuss an issue, or coordinate an initiative, and the OSI is a natural place to do that.

So this is going to be an interesting time for the OSI, and I’m looking forward to it a lot.

Many thanks to Russ and Danese for their long and dedicated service. I hope we new board members can do as well.

Golosa touring East Coast — Boston, Cambridge, CT, New York! Don’t Miss Them.

March 16th, 2011

My old choir from Chicago, Golosa, is coming to New York City on Tuesday, March 22nd, as part of their East Coast tour. They’ll be performing a free concert, at 8pm at Shrine World Music Venue in Harlem (map).

If you’re in New York City, come! Golosa rocks. Don’t take my word for it — listen for yourself. There’s nothing else like them. They’ll have CDs for sale at the concert.

If you can’t make that concert, but you’re somewhere near Boston or New York, you may be able to catch them at one of their other East Coast performances, starting this Saturday (all shows are open to all ages):

  • Sunday 3/20, 11:00 a.m.

    Free concert
    Morning service at Old South Church
    645 Boylston St.
    Boston, MA.

  • Monday 3/21, 7:00 p.m.

    (with hosts Yale Slavic Chorus)
    Free, with optional donation
    House concert
    235 Dwight St.
    New Haven, CT
    This show will take place in a private residence; please RSVP to golosa@golosa.org if possible, but it’s fine to come even if you haven’t responded.

  • Tuesday 3/22, 8:00 p.m.

    Free concert
    Shrine World Music Venue
    2271 Adam Clayton Powell Blvd.
    New York, NY.

  • Wednesday 3/23, 7:00 p.m.

    (with Elm City Girls Choir)

    Free concert
    St. John’s Episcopal Church
    768 Fairfield Ave.
    Bridgeport, CT

  • Thursday 3/24, 7:00 p.m.

    $15, $12 for museum members (tickets available at the door, or call 978-598-5000, extension 17)
    Museum of Russian Icons
    203 Union St.
    Clinton, MA.

  • Saturday 3/26, 3:30 p.m.

    $15, $13 for Passim members (tickets available at the door or online at www.passim.org)
    Club Passim
    47 Palmer St.
    Cambridge, MA.
    This show will be webcast live, viewable at concertwindow.com/passim during the time of the show (EST).

Stephen Colbert flashes the mask!

February 26th, 2011

This is not gimp’d or photoshopped after the fact — Comedy Central actually flashed it (for one frame only!) over Stephen Colbert’s face as he interviewed Salon.com journalist Glenn Greenwald about Anonymous, the inchoate online group that, among other things, attacks those who attack Wikileaks.

Got all that? Good.

My friend Micah Anderson has sharp eyes: he spotted this as he and Biella Coleman and I were watching the episode in real time, and later he went back to do a screen capture:

Or was it Anonymous themselves, tweaking Colbert? We may never know…

It helps to know that the Guy Fawkes mask is one of their symbols:

Forty.

February 21st, 2011

Okay, okay, I know. This birthday’s significance depends entirely on our use of the decimal system. Still, a quirk of natural selection (ten fingers) has lent a certain conventional weight to the passage of decades, and I won’t pretend complete indifference at turning forty in a couple of days.

Furthermore, I intend to use this opportunity :-) .

A few people have asked me recently what I want in the way of gifts. Thank you! I’m touched… but some clichés are clichés because they’re simply the best way to say it, and that’s certainly true in this case: my friends and family are already the greatest gift I could ask for, and nothing else is necessary. Besides, I live in a small New York apartment; where would I put presents?

But I do know some places that could use a gift right now. And just to be clear, when I say gift, I mean ca$h money. Below are some charities I support; if you really want to give a gift, please give to one of them, or to a charity that you feel does good work:

(Yes, I run a non-profit too — but it would be tacky to suggest donations to that on my own birthday, so please consider donating to it the other 364 days.)

“Produire du Logiciel Libre” — French translation of “Producing Open Source Software” available!

January 30th, 2011

Produire du Logiciel Libre

One of the best things to happen to my book “Producing Open Source Software” was that people came along and translated it, notwithstanding the rather poor translation tool support provided by the book’s site.

Now I’ve gotten word that the French translation is not only finished — they wisely imported the book into the Framalang wiki translation system to better coordinate their efforts — but is even available in print. My hat goes off to the entire French translation team!

You can download the PDF or even order a hardcopy (15 EUR, print-on-demand). The “live” development version is in the Framalang wiki. Here’s the announcement from Framalang, and if anyone would like to provide a translation in the comments that’d be great):

Nous sommes heureux de publier cette traduction française de Producing Open Source Software. How to Run a Successful Free Software Project, dont le texte original est accessible sur ProducingOSS.com, dans de nombreuses autres langues.

Pour les habitués du genre, la plupart des How To — ou “comment faire…” — en informatique sont des compléments aux manuels de logiciels. En se focalisant sur des tâches spécifiques, un How to permet de montrer, par la pratique, comment se servir de telle ou telle fonctionnalité d’un programme. Dès lors, comment concevoir qu’il puisse exister un How to censé renseigner sur une activité éminemment sociale comme celle qui consiste à produire du logiciel libre par une stratégie de projet communautaire regroupant des programmeurs?bénévoles?

Grâce à son expérience du développement Open Source, Karl Fogel nous livre ici bien davantage qu’une simple marche à suivre pour qu’un projet voie le jour et ait une chance d’aboutir. Il s’agit en effet de détailler les éléments stratégiques les plus importants comme la bonne pratique du courrier électronique et le choix du gestionnaire de versions, mais aussi la manière de rendre cohérents et harmonieux les rapports humains tout en ménageant les susceptibilités… En somme, dans le développement Open Source peut-être plus qu’ailleurs, et parce qu’il s’agit de trouver un bon équilibre entre coopération et collaboration, les qualités humaines sont aussi décisives que les compétences techniques.

La traduction de cet ouvrage a obéi aux mêmes principes que ceux exposés par Karl Fogel. Elle fut le résultat de la convergence entre les travaux initiés par Bertrand Florat et Étienne Savard et ceux de Framalang, le projet “framasoftien” de traduction de textes libres.

En dernier lieu, c’est l’équipe Framabook qui se chargea de la mise en oeuvre de la présente publication. Les phases de relecture, de reformulation et de chasse aux coquilles furent elles-mêmes menées à plusieurs en utilisant notre chaîne éditoriale La Poule ou l’Oeuf, que nous tenons à vivement remercier ici. L’efficacité de cette ultime étape collaborative fut impressionnante, mais nous n’aurions pas la prétention de qualifier ce travail d’exemplaire. C’est pourquoi nous avons toujours besoin des “rapports de bogues” de la part des lecteurs, et pour cela, n’hésitez pas à vous rendre sur le wiki de Framasoft pour contribuer vous aussi à ce Framabook.

Merci beaucoup, team!

San Francisco’s Enterprise Addressing System open sourced!

January 4th, 2011

Screenshot of San Francisco

I have the best job [1]: among other things, I get to help cities (and states, etc) open source their software. Most recently, we worked with San Francisco Department of Technology to open source their Enterprise Addressing System — web-based software for managing the city’s master database of street addresses, tied to Assessor’s parcels and the City’s street centerline network.

See the blog post at Civic Commons for more. Comments there, please, not here.

Unless it’s a comment about how awesome my job is. Then please post it here :-) .

[1] I work at O’Reilly Media on open government. Right now that means being largely seconded to the non-profits Code for America and Civic Commons, helping government entities do open source.

Apache Software Foundation tells WANdisco how it’s done.

January 3rd, 2011

Apache Subversion   Apache Software Foundation

Thought I’d start off the New Year with a genuine rant:

A company whose programmers participate in Apache Subversion development has apparently decided it is somehow steering the whole project. Don’t ask me where WANdisco, Inc got this idea: they’ve been part of Subversion development for nearly two years now — they hired some people who were already Subversion committers, and to be fair, have supported some great work. But so do plenty of other companies (CollabNet, Elego, and Google, to name a few), and all of those other companies have managed to abide by the consensus-based, community-governed process that Subversion has always had (and that was re-formalized when Subversion joined the Apache Software Foundation in 2009).

The ASF has finally posted a response to WANdisco’s recent statements. More entertainingly — perhaps because he’s not constrained by the ASF’s need to take the high road — my friend Ben Collins-Sussman, who is one of Subversion’s founding developers, has posted a rather more acid analysis of WANdisco’s behavior: “WANdisco, ur doin it rong”.

Yikes. Happy 2011 :-) .

Update: InfoWorld’s Paul Krill has now written about it (it’s a good summary, and both the facts and the quotes are accurate).

Update: And now Slashdot.

Wanted: a few PHP programmers looking for a good cause.

December 13th, 2010

National Inventory of Legal Materials

A project I’ve been working on for a few months (with support from O’Reilly Media) is now public, and I’m really excited about it — it’s a good cause, and also has the potential to become a very interesting piece of software.

First, the good cause part. From Carl Malamud’s post on O’Reilly Radar:

The Law.Gov movement identified 10 core principles for the dissemination of primary legal materials in the United States. If you find a jurisdiction that violates one of those principles, you can enter in a bug report. The code for the bug tracker is open source and we have a bug tracker for the bug tracker so you can help us get this ready for production.

The legal bug tracker is a classic open source story. We started with the Media Bugs code base developed by Scott Rosenberg and his team… the basic Media Bugs code base was extensively reworked and repurposed to be adapted for the National Inventory of Legal Materials. …

In other words, we turned this:

Screenshot of mediabugs.org

Into this:

Screenshot of bugs.resource.org

The transformation goes deeper than just appearance. The bug report fields themselves are different. For example, MediaBugs.org uses bug types like “misquotation”, “faulty statistics”, “error of omission”, etc:

Screenshot of mediabugs.org, reporting a bug with selection menu opened

Whereas the National Inventory of Legal Materials needed a checklist of potential violations: Does the jurisdiction charge for access to its laws? Is access vendor-neutral? and so forth:

Screenshot of bugs.resource.org, reporting a bug

You might think we had to change the database schema. But we didn’t!

Ben Brown’s PeoplePods codebase, on which both the MediaBugs and NILM Bug Tracker code are based, uses a clever trick: an indirection table (the ‘meta’ table) that allows PHP code to associate arbitrary fields to the central bug object, on the fly. In the code, you just start using the field, prefixed with “meta_“:

  <input type="text" class="text"
         name="meta_jurisdiction_contact_city"
         id="jurisdiction_contact_city"
         .../>

…and everything Just Works. The field springs into existence automagically — you can start using it everywhere, run SQL queries against it, etc.

Which brings me to the second part of this post.

If you’re a PHP programmer looking to help out on a good project, come talk to us. We can use a few more hands on deck, and you’d look far to find a better cause than helping to make primary legal materials publicly accessible to the public. While the project’s first priority is to meet the needs of the National Inventory of Legal Materials (see the current bug and feature request list here), in the longer term, I think it might be possible to turn this codebase into a bug tracker generator: a system that allows people to quickly create and deploy a customized bug tracker.

Usually people address customized bug tracking needs in one of two ways: they make do with some existing tracker (e.g., filing non-software bugs in one of the many free software bug trackers), or they spend a lot of time and effort building a bug tracker from scratch or near-scratch. Neither solution is entirely satisfactory. In the first, users — often non-technical users — have to endure an interface that is clearly not attuned to the actual nature of the bug reports being filed. In the second, the burden of writing a tracker from scratch raises the organizational risk, so you end up spending a lot of time making sure the requirements have been spec’d out accurately, which of course is impossible.

This code base has the potential to drastically lower the cost of making a customized tracker. So far, I’ve simply forked the MediaBugs theme and made the customizations manually; the differences are not huge, and that was the fastest route to shipping. Eventually, I’d like to add an abstraction layer that encapsulates the customizations in a description file, that could be either be generated via some kind of graphical administrative interface or just written out by hand:

{
  "bug":
    fields :
      [
        [ /* Stuff that goes on screen 1 of the submission process. */
          "summary": {
            "description" : "A summary of the bug.",
            "type" : "text"
          },
          "body": {
            "description" : "The main description body of the bug.",
            "type" : "text"
          },
          "contacted": {
            "description" : "Whether or not the bug source was contacted.",
            "type" : "boolean"
          },
          "response": {
            "description" : "If the source responded, what did they say?"
            "type" : "text",
            "display_if" : "contacted"
          },
          ...
        ],
        [ /* Stuff that goes on screen 2 of the submission process. */
          ...
        ]
        ...
     ]
  ...
}

Again, that vision is for the long term. Right now, what we need are some PHP programmers who want to help make the current code base better serve its purpose of tracking legal access bugs. Once we’ve done that, there will be two trackers (the original MediaBugs, and the new NILM Bugs) sitting on top of the same foundational code, and we can use the difference between them to triangulate on the right set of abstractions to make a true tracker generator.

Take a look at the project, especially the README, and then ask questions if you think you might be interested in helping. It’s all open source, and your committment can be as large or as small as you want it to be.

bugs.resource.org

Square root rate plans for pay-as-you-go Internet?

December 9th, 2010

There’s about to be an outcry over the possibility that U.S. Internet service providers might start charging by the byte — so-called “pay as you go” Internet service. Before the hard-headed economic realists duke it out with the participatory democracy free-speech propeller heads (I’m in both camps, so I say all that with love), here’s a modest proposal:

Charge based on the square root of the number of bytes.

Sometimes we think it’s natural that people should pay based on how much of something they use. The exceptions to that are interesting: while we’re okay with the principle when it comes to food (perhaps because people all generally use the same amount, within a narrow range), many are not okay with it when it comes to medical care. We’re mostly okay with it for electricity and water, even though consumption can vary widely and both goods are really required infrastructure for life in a modern society.

We haven’t really decided how we feel about it for Internet usage. It has a certain appeal: why should your neighbor stream online videos all day, slowing down everyone and transferring orders of magnitude more data over shared pipes than you do, yet pay the same amount per month?

One counterargument is that you and your neighbor are rate-limited and can only transfer a certain number of bytes per second at a maximum anyway, so if you consider the monthly charge to be paying for that maximum, it’s up to each user whether they want to use the full capacity each month or not.

That argument’s not very convincing, though, because the system isn’t physically capable of supporting everyone at a maximum simultaneously anyway. It’s a theoretical capacity only; in practice, the pipes are a shared resource, and the ISPs deal with that reality every day. People who consistently use more than their fair share of that resource should face a disincentive.

A better argument might be: bidirectional Internet access is so important to participation in society that we should find ways to subsidize it. A world where the rich have access to all the online video they want while the poor have to make do with ASCII art is a losing proposition for everyone.

But then how to make sure there’s disincentive to over-consume?

Charging by the square root of the number of bytes transferred per unit of time means that each user’s costs rise with usage, but with a much flatter curve than simply charging a straight rate per byte. You pay more, and if you use orders of magnitude more you pay noticeably more — but you don’t pay orders of magnitude more. The teenager who wants to upload her own movie will be able to do so, but doing things like that often enough will merit some consideration from the user, which is what we want.

(Obviously it doesn’t have to be exactly the square root function; I just mean some well-defined function that flattens the curve and can be intuitively “felt” by users given enough experience. Square root’s probably a good one, I’d guess, but I haven’t actually worked through the data. What do I look like, some kind of hard-headed economic realist?)

Solving the Conference Call Introduction Problem.

November 15th, 2010

Dining Philosophers

I’m on a lot of conference calls lately. Sometimes the participants don’t all know each other, so we’d like to start by going around the table introducing ourselves.

The only problem is, there is no table.

Furthermore, there’s often no person who has a list of all the current participants, and even if someone did, people might dial in and drop off at random times.

I couldn’t think of any algorithm to solve this, at least not one that humans might be able to reliably run. But then I thought, why should the humans solve it? The conferencing system itself knows who’s dialed in! What if one could issue a command that would cause the central server to go around all its connections, asking each person to introduce themselves? Each participant would hear the system’s voice say “Please introduce yourself, then press # when done.” in their ear (and their ear only) when it was their turn. The central server could automatically adjust for newcomers and dropoffs while the process is under way, and it would know when everyone available has introduced themselves. While it’s telling a given person that it’s their turn, it could even tell all the other people their position in line, so they’d be prepared when it comes around to them.

Does anyone know a conferencing service that does this?

(I’m posting this here partly to create prior art. Whoever implements this first will have a temporary advantage, but we don’t want them turning it into a permanent advantage by patenting the technique. Ideas are cheap — see, I’m giving this one away for free.)