The Cathedral and the Bazaar Today

Just about everyone who spends any time studying open source is familiar with Eric S. Raymond’s “[The Cathedral and the Bazaar] (http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/index.html#catbmain).” So familiar that both are generally known by abbreviations: esr and CatB respectively.

To recap, it was a ground breaking essay written in the mid nineties that really drew attention to how novel the development of the Linux Kernel really was, and outlined a number of powerful “open” development practices that--because of the Internet--changed the way that the open source was able to function. It’s a powerful essay, and my own interest in the direction that open source takes, stems directly from the ideas that esr presents here.

The biggest problem with the CatB argument is that it’s wrong.

Strictly speaking, not wrong, so much as a bit logically fuzzy. What I mean, is that the argument tends to be a bit too idealistic and a bit too broad. So that, when working in its legacy it becomes (more) difficult to reject some of the assumptions that esr takes for granted.

This isn’t really a fatal problem: movements need documents and essays that are powerful and idealistic, and I think insofar as CatB encouraged the free software and open source movement to adopt more distributed and “open” practices, it was wildly successful.

As the foundation of an intellectual study… it’s less good. I do think that it would be useful--for me, for other people--to think about the nuisances that esr avoided, and thinking about ways that we can build upon those arguments.

1. Examine the role of “commiter” rights, or “core” teams on the development process. While these “institutions” might not have the same sort of effect that outright “cathedral building,” has on an open source project, but all projects have this sort of top-down organizing influence, and it’s important to consider.

2. Consider “distribution,” and “federation,” of both ownership and process, in open source. This means think about source management strategies (I think git is really important here) and the role of having a code base that’s owned by one person/company/institution (a la GNU, Mozilla, and so forth) and the effect that having ownership be distributed (like the Kernel and many smaller projects.)

3. Think about modular design and extensibility. I had a conversation with Dan in the comments of my essay on innovation, and he brought up extensibility, which is worth bringing up again in a new context. Though its not a new idea, it’s possible to write software so that nearly all of the customizations that a user might want to do are possible through an add-on system. Emacs has emacs-lisp, TextMate exposes the shell in the editor (and the bundles make TextMate very open-source like), firefox has extensions, Drupal has modules. I think these kinds of designs have a big impact on the kind of involvement an open source community is likely to develop.

Have I missed anything?

Onward and Upward!

A Cowl--(Knittting)

So rather than approach my knitting posts for tychoish like a guilty journal (eg. I haven’t knit in a week, but I did yesterday and it’s cool, here’s my progress,) I’m going to just talk about projects that I’m working on and knitting ideas that I have. Because I have a lot of them, and I think maybe approaching knitting topics in a more granular way might be fun. And it’ll give all the techie folks a sense of how all my--rapidly decreasing--knitting readership feel most of the time.

Lets start with the yarn. I went to the loopy ewe last Friday. Actually, I went out to the same building that the Loopy Ewe is in to help my mother buy a file cabinet that she found on craig’s list that a collapsing financial services agency was selling. So we stopped by and saw Sheri and Donna and Stacy, and I bought some fiber and a skein of yarn. The fiber is squirreled away in the fiber stash, but I have a picture to show you:

It’s Noro Silk Garden Sock yarn. Sorry for the blury picture, I took it with my new phone. There’ll be more pictures in the future, because the phone can upload things right to flickr. That’s a killer feature. Anyway, knitting…

A word first about the color. There’s green in this ball, but its hidden in the middle. This means that its almost exactly the same color as the last Noro that I knit with (also silk garden). R got/gave me two skeins of the worsted variant (when that’s all there was) and I made a scarf that I still have and wear. Anyway, I am nothing if not consistent and predictable.

So it’s sock yarn, which is to say, that unlike most Noro it’s pretty fine and manageable. At some point in the past few years I’ve gotten to a point where I don’t really like to knit with thick yarn. My loss I suppose.

Anyway, while some people, including Joe have reported that it makes passable socks, I don’t think that I’m going to make socks with this. For starters I don’t really like to wear thin wool socks, let alone make them. And what’s more I’m unconvinced that the singles structure of this yarn would hold up for socks. You may have had different experiences, but I’ve made up my mind.

I’m thinking that I’m going to make a cowl with this. My mother has made a couple of these this winter so far, and I really like what she’s done, so I’m going to attempt to replicate what she’s done in a way that is a bit more boy-like. Or at least, isn’t lacy. I can deal with something that’s not very boy-like if I’m warm, but the lace thing never really appealed. Also I remember really liking the shape of the Ice Queen from last years knitty. It’s a cowl (which is to say a tube) but it flares out at one end to cover the back of the neck a bit better particularly if it’s also pulled over the ears. Brilliant if you ask me. Also, even if you omit the beads and the lace (or just minimize the lace) I don’t think that it would be good for me. Even if I like the idea.

The specifics? Nothing too concrete, but I’m thinking entrelac, with the same sort of tappered look. I’d start at the small end and work better near the end. Thats probably not the best way to make use of the yarn, but I think figuring out the pattern will be easier if it grows rather than shrinks.

I’ll start with a few rows of rolled reverse stocking stitch and then just play it by ear. Probably just knit 10-13ish inches at the smaller size (21/22 inches around) and then increase over several “courses” of enterlac slowly so that it flares just right. Actually as I write this, I’ve convinced myself that starting at the small end is very much the wrong way todo this.

Am I crazy? Probably. I’m going to try and get a few other projects more underway and finished before I give this a go. Knitters, you have any thoughts on this? Talk to you soon!

Keeping Time with tycho

Ok, so I haven’t done a journal upate in a long time, and I think it’s high time that I posted an update about my projects and stuff. It’s my blog after all.

I’ve been working a lot, which is a good thing. Also I think some pretty cool things are happening with my job. While work can be stressful by virtue of shear volume, I’m pretty excited about how things are going. I’m also getting better at managing the “working for a virtual company,” thing: it’s taken me a while to figure out the right way to manage things so that it doesn’t feel like I’m working constantly, or conversely feel like I’m never getting anything done. I don’t know that I have the answer, but I’ve started to figure out ways of both working, and making progress on projects that are important to me. Evidence of this: I’ve gotten knitting and writing done recently.

I’ve been working on an academic project--some of the conceptual “thinking” work for this has appeared on the blog in the past few months. I’m laying the groundwork for an application to history/anthropology/library school to study free software/open source development mythologies and communities. The project will wrap up in the next couple of weeks, and then I’m going to spend a couple of months preparing and launching a website/wiki on the subject and initiating correspondences with a few key people in the field. I haven’t totally ruled out applying for a couple Ph.D. programs in Fall 09/Winter 10 to begin in Fall ‘10 as a trial run, but I’m thinking waiting another year is more likely. By then, I think I’ll be ready.

I’ve been doing some knitting. Small stuff, socks and hats and stuff, just because I need something with that kind of pace. Also, while I’ve never been a big yarn buyer, my off an on break from knitting hasn’t entirely put and end to my yarn buying. Also I might have bought a skein of Noro Silk Garden sock yarn that I really want to make into a neck cowl/covering/tube. There will probably some enterlac involved as well. I’ll get back to sweaters soon. But I’m not in a rush.

My technological purchases acquisitions over the past few months (the new laptop, the linux desktop, the fancy cellphone) are continuing to serve me quite well. I miss the amazing battery life and sleep/wake features of the macbook (which my father has taken as his own), I have to say that I think I work much better on the linux machines. I can focus more easily, because there’s less operational overhead (fancy graphics etc.) even the older hardware really keeps up with what I want to do. I’ve thought about selling/trading the macbook away for something like a dell m1330 (or cash to buy another thinkpad)--for the father, as a way of ameliorating my losses. But other than that I’m pretty pleased with the way my stable of technology has improved the way I work.

In a similar vein, my switch to emacs from vim (and TextMate on the Mac) continues to do well. I’m doing much of my writing in emacs, though there are things that I do in other editors. I edit email vim, because that makes sense, and it works well, though I imagine that I’d switch to emacs for that at some point in the future. There are some things where I’ll confess to really liking Gedit’s tabbed interface (mostly for instances where I need to copy and paste a lot of content from an editor into a web browser. The right tool for the right job, and all that. I’ve never thought of myself as a multi-editor kind of guy--and emacs doesn’t seem to provoke this kind of response--but it’s not a bad thing.

I’m not sure how much holiday-related time off I’m going to take this week. Being neither Christian, nor a particularly observant Jew, I don’t expect that I’ll make any formal blog vacation. At the same time, I’m well aware that with a great number of you all in blog land on “holiday schedule,” it doesn’t make a lot of sense for me to slavishly stick to my blog schedule. Also, I need a bit of a break for Critical Futures, to recharge and reevaluate so that I can make the best of the new year over there. So, stay tuned and have a good holiday.

A Day's Work

I did some blog writing for the upcoming week today. It was good, I managed to pull off nearly two weeks the last time I sat down and seriously wrote for the blog, so I haven’t had the chance to really sort through thoughts like this in a long time. It’s amazing how much writing blog posts provides me the space to work through things that I’m thinking about. It’s also amazing to me how much I’ve grown to depend and expect this space as part of my life, and how scattered my thinking is without this blog. It’ll be interesting in another ten years to see how this changes. In any case the real point of this little post is to say that I ran a word count of my efforts today and came up with a total around 3,800 words (turns out, this weeks is a light week). I remember in high school and college thinking that this was a lot of words. And it is, and indeed it’s easier to write things conversationally for the blog than it is to write logically structured essays or fiction. But still. Evidence, I’m convinced that writing effectively is more about establishing habits rather than anything mystical.

New Geeks

I’ve for some number of months started to recognize a division between what I’ve been thinking of as “new” and “old” guard geeks in the open source world. The old guard have been the linux and hardware hacker-type people who are prone to say “GNU/Linux” and “free software” or conversely be interested in BSD. These are people who care about plain text files and get really invested text editors and data formats and stuff like that. Think sys-admin. The new guard, by contrast, are web programmer types. The Rails and Drupal folks, the web 2.0 crowd. More jokingly, I might call this the “Perl versus PHP” dynamic, but that’s not a particularly productive comparison or breakdown.

Like all false dichotomies this one has limited descriptive power as everyone, even the old school geeks use the Internet. Linux exists today because of the way that Internet supported its development. None the less I think that thinking about these new and old world geeks (as it were) as having different interests is productive insofar as it allows us to better understand the way that the open source is changing in the coming years.

Part of me thinks that this has something to do with the effects of “open source” versus “free software” debate. I’ve noticed that Drupal developers almost never say “free software,” even though it’s a GPLv2/3 project. I say open source rather than free software, even though I’m generally a proponent of copyleft. I’ve outlined my thoughts on the subject before in an essay on software freedom, but I’m pretty sure that people have different reasons for this. In any case, judging by the prevalence of Apple laptops, it seems like the whole “we need an open source/free software stack from top to bottom,” impulse isn’t as strong that underlies a lot of the free software argument.

Another part of this shift might be the fact that proprietary operating systems are much better today than they were twenty years ago. OS X is really stable (thanks to open source) and works great (of course) with Apple hardware,1 and despite the vast unpopularity of Windows Vista and my general disdain of the OS, technologically the NT kernel OSes starting with version 5 (so windows 2000 and XP and even Vista) have probably been pretty good. Or good enough at any rate.

And there’s, of course, the whole web 2.0 ’thing. In a lot of ways the operating system question becomes less relevant as everything becomes cloud-based anyway, and “freedom” or “openness” is always difficult to judge in terms of network-based services and applications. There’s the AGPL, but that not withstanding I’m not sure there’s a good one size fits all (hell, I’d even take 2-3 sizes fits all) solution to software freedom, user rights, and privacy and security for network services.

Like I said at the beginning, I don’t think the new geek/old geek (particularly with regard to open source) is totally productive, but it’s a useful starting place for a conversation that I’m very interested in. If you have feedback, of course…

Onward and Upward!


  1. This might seem obvious, but I think one of the reasons that Apple’s laptops are so successful is that by controlling the hardware as they can, they can get great battery performance and the best sleep/wake functionality around. ↩︎

Where Innovation Happens, Part One

Two of the most interesting/innovating/exciting open source projects that I’ve watched in the last little while are “git,” the distributed source control management tool, and “Awesome,” a very… niche window management program for Linux. When most people think about open source they probably think about something like the GNOME, or Firefox, or to a lesser extent Pidgin. These second group of programs are the big projects that lots of people pat attention to, projects that are targeted at non-developer users.

They also kind of suck.

I mean, I use parts of all of these programs, and I don’t mean to diminish what exceptional accomplishments these projects represent, but they’re all boring and stale, and I don’t think that they’re particularly innovative. Read the bottom post on this page for more on this. Has GNOME ever developed a feature that Apple and Microsoft has rushed to catch up with? Has Firefox, (since tabbed browsing) done anything other than play catch-up with Opera and WebKit/Safari/Chrome? And Pidgin is designed to be a copycat.

When I said, “they suck” I guess what I meant is that they’re not particularly innovative, they’re great pieces of software, but they’re not game changing. Now before anyone says, “ha! that’s the downfall of open source, lets dig a little deeper into Awesome and git,” which I think are different.

While I’d used SCMs before git, and was already a pretty big open source advocate, when I learned about git, and started to really “grok” the program, I said to myself, “this is something that’s really revolutionary.” Git is a program which stores changes (“revisions”) of a group of files (a directory “tree”); the revolutionary part is that it makes merging different and divergent “change histories” almost trivial. With merging histories easy, it becomes easy to have many different development branches. This makes it easy to have people working in parallel on a project, and for developers to experiment without fear of ruining things. Because you can always revert to a previous revision. It also helps that the system is designed to allow people to work offline, and give everyone a full history of the revision. Also it’s fast so all of these operations, which can be rather complex, are blindingly fast.

Maybe there’s nothing stunningly original in git, but pragmatically git can and has made a huge impact on work-flows, and I think could really impact the way people work--not just programmers but anyone whose doing something in a plain-text format. It’s already change the way I write and work, and I’m just using a fraction of what it can do.

And awesome? Again, the idea of a tiling window manager isn’t particularly new, there are even a number of different contemporary options, but I can’t help but think that given some recent trends among so called “power users” (hot key usage, a renewed interest in command line interfaces,) that there’s something sort of innovative and different about Awesome.

What strikes me a innovative about these two programs is that unlike the first group they’re all written explicitly for other programmers and ubergeeks, whereas GNOME and Firefox and Pidgin are written for “entry-level users.” I’m not discouraging the production of open source software targeted at less technical users, but I think that heretofore no one has been really clear about what “usability” really means. What we’ve gotten has been software that’s designed to operate “as expected,” which while often sufficient for usable, is never sufficient for innovative.

So where does innovation happen? In projects that people do for fun and for themselves, because if you write a program, like Awesome, mostly for yourself and if you’re friends you don’t have to worry about having a UI or configuration interface that’s “easy to understand,” you’re more free to develop innovative features. Also I think innovation can also happen in projects where developers have a budget to be able to afford a close working relationship with usability labs so that the developers and designers can innovate and still end up with an easy/intuitive interface.

Also, I think the web provides the option for some innovation as web-based software is easier to develop rapidly than desktop software, so interface and feature changes are “less expensive” comparatively.

In any case, I think it’s important to think about where innovation happens and what in open source serves to encourage or discourage innovation. Thoughts are, as always, very welcome.

Onward and Upward!

Productivity Blogging and Effectiveness

For the past few years I’ve had a productivity tag to organize/centralize all of the thinking and writing I’ve been doing on topics related to how we work. User experience stuff and technology, work-flow management and design, “life hacks,” stuff about the processes of writing, and so forth.

The truth is that the “productivity” blogging niche is pretty big. LifeHacker, 43Folders, and many other smaller blogs seem to address these issues with a greater attention to detail than I am able to muster. Also while I think it’s interesting, and useful to deliberate on these issues, there’s little--if any--intrinsic interest in this kind of thing. Outside of the human factors engineering aspects, which I think I’m probably the only one who geeks out on that stuff.

My other issue with doing “productivity” blogging, is that I don’t really feel like we need to be any more productive. This article about the relationship between productivity and standards of living, has weighed on my mind a lot in the past couple of months. The challenge shouldn’t be how we can be “more productive,” because we’re already pretty damn productive, but rather how can we be more effective at accomplishing the things that we want to do.

This is a problem that writers or “wanna be writers” seem to have most often. After a certain point the issue isn’t that we don’t have time (a problem that can be solved with priorities and being more productive in our other tasks), or skill based (writing is tough, but it’s also a learning process and after a while one starts to get it) but rather how to use the time that we have to write effectively on the projects that are important to us. I suspect other types of creative folk experience this in different ways.

Where as productivity seems to focus around the conversion from raw time to whatever the output is, I think effectivity is more about how enviroment, stress management, sleep management, and project planning combine and interact to make it easier for creative types to “do their work.” A lot of the lifehacks that are popular these days, focus on how to get more functionality out of your computer, or how to multi-task more efficently, or organize your todo lists better. And so forth.

In contrast, I think “Effectivness-based lifehacks,” would revolve around how to manage your sleep more effectively, or how to order your routine so that you have enough “down time” to recharge so that you can be effective durring your “up time.”

I’m not proposing anything new that I don’t think happens already, but I think there’s a big distinction between these approaches to personal organization and workflow, and I’m throwing my hat in the pile behind a focus on effective rather than productive behaviors.

So there.

Alarm Clock and Sleep Management

I got a new alarm clock this week. Well new to me, at any rate. It’s one of those nifty ones that can wake you up with music from an iPod (and charge it all at the same time). Truth is that, I’ve not even had a clock in my bedroom for a number of months: I tend to wake pretty early on my own/with cats, my coworkers aren’t in my timezone anyway, and I unplugged my old alarm clock because I needed the outlet, and never got around to plugging it back in.

The experience of waking up to the alarm clock has been overwhelmingly positive. I tend to get up regularly and earlier first and foremost. This is a good thing, because I think I was slipping into the habit of sleeping too much. And too much sleep--counter intuitively--can wreak havoc on my energy levels and mood, so I’ve just felt better all around. It makes sense that too much sleep can lead to decreased mood/energy--your body gets used to sleeping more, and so it gets to need sleep so you get tiered more--but your millage may vary.

The second great thing about this alarm clock, and the waking up to music, rather than a buzzer is that I’ve found that I wake up more “gently,” that is, rather than being jarred awake by a buzzer, the music comes on, and I drift towards wakefullness, I listen to a song or two (if I like it) while I think about what the day holds and muster the strength to get up. And then I’m up. I’ve found that when I get up, I’m not groggy, and I’m generally ready to get started at the things that I need to do.

How cool is that?

I think this whole “sleep management” thing is worth something. Sleep is important, and having an unadjusted sleep schedule is never fun, but I’ve realized that sleeping the “right” ammount is something that I have to pay attention to. Maybe this is a product of our sleep rythms being a little more than a day long, but who knows. My general sleep-related goals are:

  • Sleep a little less than I’m inclined to. Not by a lot, but 90 minutes or less seems to leave me feeling better.
  • If I feel like I need to take a nap, I almost always try to do it for sometime between 1-3 in the afternoon, which is when I’m the least productive/creative anyway.
  • This alarm clock, and “waking up softly” seems to be helpful.
  • With the choice between being up in the morning and being up late at night, I always chose the former.
  • If I feel like I’m having trouble falling asleep, I ususally get up and read or do something else. The end result isn’t that I get more sleep, and though tired I feel better the next day.
  • I also try and time caffine intake so that it doesn’t muck up my sleep schedule, though the truth is that I can sleep through a caffiene buzz if I’m tired enough. I tend to think of caffiene as a having a “focusing” rather than an “alertness” effect. But that’s just me.

Anyone else think about their sleep like this? Generally? It has a big effect on how I work and how I approach work, but I think it’s probably a little bit wierd. Anyway…

Onward and Upward!

Linux Emergence

Here’s a little bit about emergence/systems theory and open source, as promised in my `change process <http://tychoish.com/posts/theories-of-change>`_ post a while back.

I was reading this article about linux and complexity theory last week, which I think is a pretty good frame for any discussion of open source and linux from a systems approach. There are a few things that I had issue with. First, the article is 3+ years old, and so it doesn’t have the benefit of seeing what’s happened with ubuntu linux, netbooks, the AGPL, rails and web 2.0, let alone things like Drupal and the last two major iterations of Firefox, which for all their assorted faults have really changed the face of open source.

Secondly, the empirical study focuses on the kernel development, and takes the kernel to represent the entire Linux eco-system, which I think it doesn’t do very well. Kernel development is really high level, really niche, and despite its size, represents so little of what people think about when they talk about “Linux.” GNOME, KDE, the GNU Toolchain, X11, pyton/ruby/perl, let alone the superstrucutral elements that projects like Debian, Gentoo and Arch represent are really more important than the Kernel. Debian and Gentoo more or less work with various BSD kernels and given enough money--to inspire interest and caring--full BSD based releases wouldn’t be technologically difficult. The dominance of the Linux Kernel in the free-operating system space is--I think largely the result of momentum and the fact that the kernel is damn good and that there’s not a lot of a need for another kernel option.

In any case, the paper is in a lot of ways a 21st century review of Eric S. Raymond’s “The Cathedral and the Bazaar” paper. Raymond’s argument is taken as a statement in favor of bottom up organization (Linux, and the bazaar) in open source projects, and the author uses this insight to explore kernel development with some good-old systems theory.

While it’s very true that there isn’t a monolithic organization in the Kernel development, it’s not exactly a free for all. Linus (or whoever is at the top of the project) provides a measure of top-down structure. This makes it easier for contributions to bubble from the bottom up. I think it’s no mistake that many open source projects have “dictator”-type leaders that are pretty consistent.

This says nothing of the barriers to entry for most kinds of development in the open source world, aren’t trivial (commit access projects that use non-distributed version control; eg. Drupal), let alone the burden of engineering knowledge for Kernel-level development, and other lower level projects. These--largely--informal standards none the less, constrain what happens on the kernel development.

Even if a lot of the day to day work on the kernel isn’t done by Linus himself, his presence, and the importance of his branch/tree gives structure. Particularly before the advent of git, but even now. And I’m not saying that this is a bad thing--quite the contrary, top down forces are often a good thing--but I do think that overly romantic depictions of open source development as being bottom-up/anarchical aren’t productive.

Doest his mean that Linux is a Cathedral? Or that it’s headed that way? Not at all. But I don’t think that the Bazaar is necessarily as bottom-up as Raymond (and those that have followed) thought it was. Open source is also much more commercial now than it was ten or twenty years ago, that can’t not have an impact.

Just thoughts…

Onward and Upward!

book progress

All of the outlines for the novel length projects I start, have a space at about the three-quarters point that says “overflow area to catch up before the end”. I always have a couple of scenes that float between chapters, and having a place before the end where I can sort of take a deep breath and get things lined up perfectly for the climax and end is a good thing. Anyway, this isn’t really a writing post, but the current project has one of these areas, and I’m so going to need it. In part because of chapters like the one I’m writing now. It’s full of great stuff, that needs to be in this book, and I love the way it feels to write it. At the same time None of it was in the outline. All this by way of saying that after a few weeks of not really “having any fiction in me” I’ve returned with a vengeance to this novel, and I’m having a lot of fun with it. Great stuff.