Today was my last day as an employee of the Mozilla Corporation. I’m leaving to work at the law firm of Greenberg, Traurig. This was not an easy decision for me to make, but I’m pretty sure that it is the right one, both for me and for Mozilla.

Why?

Mozilla has been terrific for me. Working with happy, dedicated, passionate people is always a joy, and I’ve learned a ton from my teammates in legal and from Mitchell. I particularly can’t say enough good things about my boss, Harvey- he’s been a tremendous mentor to me. And of course Mozilla is exactly the kind of job I went to law school to get- directly helping hackers ship world-class software. Leaving today was hard- I’ll miss my coworkers, and I realized over the past few days that some of them may even miss me ;)

So why am I leaving? It’s because I want to continue to improve as a lawyer, and for a variety of reasons, the time-tested route for that is through a law firm. I’ve been learning a lot at Mozilla, but I will have even more opportunities to gain experience and improve my skills at Greenberg. Eventually, this will make me a better lawyer for any client I will have in the future.

What does this mean for the MPL?

We will still ship the new MPL in a reasonably short time frame, for two reasons. First, we’re almost done- go check out the beta, and/or read lwn’s solid article on the process. Second, our primary outside counsel on the project (Heather Meeker) will be my new boss at Greenberg. Both Heather and I are deeply invested in the new MPL, and we want to see it done (and done right!). So we will continue to work with Harvey and Mitchell to complete the new license, and my new address won’t change our focus or the license’s priorities.

What does this mean for this blog?

The blog has been quiet-ish in the past year, and will likely remain so, with more of a focus on personal life and technical questions than legal questions. This isn’t because Greenberg has put any pressure on me, but because I expect to have less time to write, and because some of the lawyerly virtues I’m working on are discretion and brevity… neither of which work together too well with the blog :) But hopefully I’ll still have interesting things to say from time to time.

Contacting Me

As usual, if you’ve got any questions – particularly about the MPL – let me know. My new email address will be [click here]@gtlaw.com, and my personal email address ([click here]@tieguy.org) will continue to work too.

So… I’m in the market for a way to read RSS feeds offline, with no keyboard; i.e., some sort of tablet or kindle-like device. Ideally it should be cheap and reliable (reliable in the sense that I can pick it up every morning while still groggy, take it to a concrete bunker with no wifi, and fully expect that I will have 45-60 minutes worth of reading on it- something should download feeds overnight without me thinking much about it after initial setup. ) Other features (ebooks, app stores, what have you) are a plus but not necessary. Ideally would sync with Google Reader, but am willing to compromise on that.

Options I’m looking at right now:

wifi-only ipad + reeder: $499+$5. Biggest downside: Apple. Also size: not sure that my intended use case will really work well with the weight of the iPad.

Tim Lee is quite close to something very smart here, I think, and related to something I’ve been pondering for a while: why are so many open source software UIs typically bad?

Tim’s primary answer, I think, not wrong: good design generally results from having a strong vision of what good design for a particular piece of software should be. “Cult-like” may be overstating it, but good software does need a strong vision, and the holders of the vision need the means to get developers to buy into, execute on, and stick with that vision.

So Tim gets the answer right- but I think his framing of the question is actually a little off, in a way that merits discussion.

The first mistake Tim makes is that when he says “open UIs suck.” This is not false, but it is misleading. The more general rule is that most UIs suck; open UIs are just a subset of that. So implicitly contrasting open and non-open UIs is not necessarily very informative. Plenty of proprietary companies and proprietary design models create and implement lousy designs. Microsoft, of course, was historically the canonical example of this (though Office 2007 and Windows 7 are great strides in the right direction) but Android, which Tim picks a bit on, is perhaps an even better example- nothing about Android’s design and development process is open in any meaningful sense, and… the UI is pretty bad. So Tim’s post would have been much more useful as an analytical tool if he asked “why do most UIs suck?” and then concluded “lack of vision,” instead of asking “why do open UIs suck.”1

The second mistake Tim makes is the assumption that open projects can’t have strong, coherent vision- that “[t]he decentralized nature of open source development means that there’s always a bias toward feature bloat.” There is a long tradition of the benevolent but strong dictator who is willing to say no in open projects, and typically a strong correlation between that sort of leadership and technical success. (Linux without Linus would be Hurd.) It is true that historically these BDFLs have strong technology and implementation vision, but pretty poor UI design vision.2 There are a couple of reasons for this: hackers outnumber designers everywhere by a large number, not just in open source; hackers aren’t taught design principles in school; in the open source meritocracy, people who can implement almost always outrank people who can’t; and finally that many hackers just aren’t good at putting themselves in someone else’s shoes. But the fact that many BDFLs exist suggests that “open” doesn’t have to mean “no vision and leadership”- those can be compatible, just as “proprietary” and “essentially without vision or leadership” can also be compatible.

This isn’t to say that open development communities are going to suddenly become bastions of good design any time soon; they are more likely to be “bottom up” and therefore less vision-centered, for a number of reasons. Besides the problems I’ve already listed, there are also problems on the design side- several of the design texts I’ve read perpetuate an “us v. them” mentality about designers v. developers, and I’ve met several designers who buy deeply into that model. Anyone who is trained to believe that there must be antagonism between designers and developers won’t have the leadership skills to become a healthy BDFL; whereas they’ll be reasonably comfortable in a command-and-control traditional corporation (even if, as is often the case, salespeople and engineering in the end trump design.) There is also a platform competition problem- given that there is a (relatively) limited number of people who care about software design, and that those people exclusively use Macs, the application ecosystem around Macs is going to be better than other platforms (Linux, Android, Windows, etc.) because all the right people are already there. This is a very virtuous cycle for Apple, and a vicious one for most free platforms. But this isn’t really an open v. closed thing- this is a case of “one platform took a huge lead in usability and thereby attracted a critical mass of usability-oriented designers” rather than “open platforms can’t attract a critical mass of usability-oriented designers”. (Microsoft, RIM, and Palm are all proof points here- they had closed platforms whose applications mostly sucked.) Finally, of course, there isn’t just the problem of getting vision- there is the problem of execution. Manpower is always hard, especially when you can’t really fire people, but I think Firefox and GNOME (among other projects) have proven that you can motivate volunteers and companies to contribute to well-thought-out projects once a vision is articulated. It definitely isn’t easy, though!

Tim is not the first or the last person to say “open” when they mean “disorganized,” particularly in the context of UI. It is an easy mistake to make when, well, free software generally feels very rough compared to the alternatives. Free software communities that want to appeal to a broader set of people are going to have to do a better job of rising to the challenge of this problem, and create circumstances where designers not only feel welcome, but feel empowered to create a vision and feel supported in their implementation.

Tim doesn’t help his analytical problem here by not defining what he means by “open UIs”; given that he uses Droid as an example, what he is discussing are “source-available UIs” but given this tweet what he may mean to discuss is “UIs designed from the bottom up”, which are, I believe, a related but analytically distinct thing.

The best current example I can think of as a design BDFL is Jon McCann in the context of gnome-shell.

Because I know a fair number of QA-oriented people (for some reason) still read this blog, I thought it might be worth pointing out that you still have 24 hours to apply for the bugmaster position at Wikipedia. Sounds like a cool gig for the right person, in a growing organization.

I’m trying to find a book on the political history of multilingualism in the US; in other words, of why/when it started becoming acceptable (and in some cases required) for government works, electoral ballots, etc., to be written and printed in multiple languages. This is related to some of the talk about mozilla-as-social-movement that a variety of Mozilla folks have been talking and blogging about lately; I’m curious if some of the rationales and arguments used by supporters of multilingualism would be applicable to software. Anyone have any pointers? Thanks!

High on the list of things I really enjoy doing is thanking people who contribute to free software. Also high on the list is using software that works well.

So I just wanted to combine the two and say a public thanks to GP Halkes, for writing and maintaing dwdiff. I’ve been using dwdiff since early on in the MPL process, and thanks to two recent changes GP made at my request, it now works even better for my needs (and hopefully better for most people’s needs.) Thanks, GP!

I’ve been trying to get back to living my life in a task-centric manner, and Firefox Panorama, without necessarily being designed for those goals, is perfect for it. Someone else put the words in my mouth: when you’re trying to do task-centric computing, what you need is not just a place to dump tasks (a task organizer) but also a good task switcher. Virtual desktops (in either Linux or OSX) can be used to dump tasks, but they lack effective visual task switchers. Once you get used to Tab Candy, in contrast, it is an effective way to give you an overview of the tasks you’re handling and move between them in a quick, fairly non-distracting manner.

Unfortunately, it also drives me nuts, because it isn’t comprehensive. I’m very rarely using new desktop apps these days, but I’m still stuck with a lot of old ones (particularly until there is a competent, secure, self-hosted web-based word processor) and not being able to interact with them through panorama is driving me insane; it means switching back and forth between two different mental models on a regular basis, and that is painful. I’ve literally found myself trying to drag application windows into my Panorama desktop. That’s just not good, and I really hope someone uses the Panorama idea for a complete desktop soon.

(Note that despite the original name of tab candy, I don’t think ‘tabs’ is really the important thing here- the important thing is grouping data/applications together, and then having a good high-level overview of the groups when switching between them. That clicking on a collection-task brings up a ffox window with a bunch of tabs, rather than a desktop with a bunch of windows, is (I think) an implementation detail; I’d be happy with a similar organization for ‘traditional’ desktops without tabs as a starting place.)

They’re doing pair-programming and test-driven development this summer, which I think is great. Sounds like they’re getting some great guidance from Pivotal Labs.

Very explicitly trying to focus on things everyone can use, rather than something for geeks.

Are trying to do micro-networks, rather than ‘everyone on the same plane’; I’m curious to see where that goes.

They’ll have single-user ‘seeds’ or multi-user ‘pods’ for servers. Push-driven, like email.

They’re doing Rails and Mongo, and even Websockets; they’re having problems between Websockets and Rails.

Planning on doing a code release by ‘flipping the github bit’ on September 15th, but will continue hacking after that, since they have a ‘low burn rate.’

Seem a bit worried about the community management problem once they go live.

Have a slide describing feature set for beta; focus on easy group management for you and close friends; private broadcasting to those friends; full data exportability.

Longer term: work with ostatus/other stuff to work closely with other distributed technologies; plugin and application infrastructure; build community and focus on design.

Anonymity is not currently a design goal, but still thinking about basic crypto and heavy focus on privacy (including privacy expectations-setting.)

In the move to california, they appear to have abandoned arepas for tacos. Bad news.

I admit I’m troubled that there is lots of talk about technology, and not much talk about UI/HCI/design, but in response to my question they say they mostly didn’t talk about it because it is still very much in flux. They’re talking with others about the problem, which is good to hear.

In the same vein as my earlier commentaries on Google comes this piece by James Grimmelman. He doesn’t comment on the actual substance of the net neutrality announcement. Instead he focuses on process, and his description of how google does things seem so dead on to me into how google that I think I’ll be citing repeatedly in the future. I won’t quote; it is worth reading the whole, fairly brief thing.

The one thing I’d add to what James says is that Google’s process actually usually works quite well; for every Wave, Buzz, and verizon deal, there are several things that work well. When it works poorly, we should generally allow the market to discipline them, as it has with Wave. The reason the net neutrality issue is so important is that it could represent a new barrier to entry, making those market mechanisms less effective and leaving us more at google’s mercy when their processes go bad in the way James describes.

[Disclaimer: since my last post at autonomo.us, I have become an employee of the Mozilla Corporation. I don't feel this has tainted my views, but feel free to weigh that information as part of your analysis of this article. Relatedly, I do not speak for that employer when writing here; my words and ideas here are my own.]

tl;dr version: We shouldn’t throw the baby out with the bathwater. The bathwater is the ethical problems with software hosted on someone else’s server; the baby is the strength of the libre web application development stack- which may actually be the best platform for building autonomy-preserving user-oriented software.

Put yourself in 1995. I’m going to tell the you of 1995 that in 2010, there will be a software platform with the following properties:

The widget toolkit for this platform will have two independent, competitive, Libre implementations; one of those implementations will be the most widely used consumer-facing piece of free software ever, and the other one will have the support of the second and third largest software companies on earth.

Tens of millions of dollars a year in engineering time will go into improving those free implementations of the standard; in fact, Microsoft will spend lots of money and PR time saying ‘we’ve caught up to the libre implementations.’

This widget toolkit will have no vendor gatekeepers or tolls; in fact, all the biggest software vendors on earth will have attempted to disclaim patent claims against it, making it not only no-cost but also perhaps the safest free software toolkit available from an IP perspective. New additions to the toolkit will be free by default; there will be some exceptions to this but those exceptions will be bitterly contested, sometimes with huge proprietary software companies weighing in on the side of free implementations.

The major implementations of the widget toolkits will be extensible using a simple scripting language, making them much easier for users to customize than most (non-emacs) toolkits.

Free software written for this platform can be made trivially available not just to users of free operating systems but also to people on other platforms, potentially helping grow the community of free software developers and users.

This widget toolkit will be available on every computing platform on earth; not just PCs but also many phones and soon on TVs. If your hardware supports this widget toolkit, it immediately has enough applications that it is considered commercially viable, leading to an unprecedented blossoming of operating systems platforms (unlike the situation in 1995, where new platforms have no apps and so find it impossible to compete with Win3.1/95.)

The logic and data storage systems backing this widget framework will also be varied- there will be proprietary implementations, but there will be dozens if not hundreds of free frameworks as well, in essentially every programming language you can imagine. It is taken for granted that these frameworks run on Linux first. Among many others, the White House will use such a free framework to deliver software.

At the same time, because of elegant design, it is easy to swap out backends, so if you want to write backends in different ways, you can do that; in fact, people are taking advantage of this every day to write completely new frameworks with a variety of different properties.

A function called ‘view source’ is viewed as a key competitive differentiator in this platform; it is actually hard to close the source describing widget layout and behavior (though easy to close the backend.)

Millions of high school kids are taught (at least part of) this framework; millions more will have taught it to themselves using view source!

This platform will have been so successful that virtually every single first-world computer user will use it (in some way) every day.

At this point, 1995-you says ‘This sounds too good to be true. There must be a catch.’1

There are two major catches, the second a consequence of the first.2

The first catch is that the default data storage architecture is distributed, and the default licensing is effectively permissive, making it expected (though not mandatory) that users are separated from both the code they run and their data. In other words, developers who use this stack are perhaps more free than they’ve ever been in the history of computing (and not surprisingly they’ve adopted it in droves)- but users often have even less control than they had when they were using traditional proprietary desktop applications.

The you from 1995 would probably think that freedom-lovers would have reacted to this unfreedom by rewriting the thinlayer of proprietary code sandwiched between gigantic gobs of free code, and/or by working to make the platform more amenable to local or distributed use. You might expect that they would even have embraced and extended the platform to make it even better for freedom.

Instead, the second catch is that fans of freedom have largely thrown the baby out with the bathwater, ignoring (or at best failing to embrace) this rich, free platform. Instead, in a story straight out of the Innovator’s Dilemma, they’ve continued to focus on traditional widget toolkits and interfaces which lack all the benefits I’ve just listed out.

It should be obvious by this point that the platform I’m talking about is HTML and the many, many application frameworks that can be used to generate it. This platform- what I’ll call the libre web application stack- is not perfect, but it has the potential to be hugely freedom-enhancing, and free software advocates should carefully consider it when thinking about developing their next app, or when planning to extend traditional software platforms to make them more free. Just because most web apps are not free does not mean the stack itself should be disregarded.

This is true whether 1995-you is a free software fan or not; if you’re a free software fan, you’re particularly excited, but if you’re a die-hard silicon valley capitalist you should also be pretty excited by the potential of this platform.

There are plenty of minor catches too; performance isn’t great; the widget toolkit does not have the vast variety of widgets that more mature toolkits have. But these have been improving consistently for years, and (more importantly) they’ve been improving much faster than traditional toolkits have improved.