follow me on Twitter

    Blog has moved to, see July, 2006 on new site

    Blog entries for July, 2006

    This post moved to

    To me open source vs. proprietary isn't a good vs. evil question, simply two different things with different costs and benefits. That said, open source tilts the benefits toward users over software companies, all else being equal. That's why open source evangelism makes sense.

    Since the Internet appeared, a trend in the software industry has been toward "software as a service"; which can be enterprise-oriented like or consumer-oriented like GMail or MySpace. In addition to web sites, it can include the cable box and cell phone model of automatically-managed software on a client device.

    I don't think the open source community has changed its thinking as radically as this trend requires.

    First, our standards for openness lose much of their relevance in the modern world. Second, products that include both software and online services are providing much more compelling user experiences than software alone can offer; leaving open source software at a disadvantage.

    GPLv3 - missing the big picture

    The FSF is fighting hard for the "no locked down devices" provision in GPL version 3. GPLv3 says that you can't have hardware devices which require software signed by a proprietary key.

    But if I think about Richard Stallman's printer story, the "locked down by a proprietary key" case is not the only case to worry about.

    My cable company doesn't sell me any hardware at all; they charge me a monthly fee and they put their hardware in my living room. Have they even distributed the software to me? Could I install different software on a leased cable box, even if the software were GPL?

    This isn't some hypothetical situation; I already have a cable box DVR I don't own... and while the FSF keeps using TiVo as an example in GPLv3 conversations, TiVo's approach is almost the exception to the rule.

    Even if it weren't, in-home hardware devices are a small part of the picture. Does it really matter whether hardware I don't own is in my living room or in some server room? Can you replace the software on your favorite web-hosted application? Or even read the source or submit a patch?

    In short GPLv3 prohibits one implementation technique for "software as a service," because copyright law happens to make it easy to do so; but GPLv3 has no impact on several other far more popular implementation techniques in the same spirit such as leased equipment, web-hosted services, and thin clients. What's the point?

    Addressing hosted services in licenses

    The current GPL v3 draft does have an optional provision 7b4 that gets at this:

    terms that require, if a modified version of the material they cover is a work intended to interact with users through a computer network, that those users be able to obtain copies of the Corresponding Source of the work through the same network session

    The Open Software License includes a provision defining external deployments as distribution (thus the license's GPL-like requirement to provide source code kicks in):

    5) External Deployment. The term "External Deployment" means the use, distribution, or communication of the Original Work or Derivative Works in any way such that the Original Work or Derivative Works may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Work or a Derivative Work as a distribution under section 1(c).

    Free passes to web companies

    There's some recognition of the danger, then. But the open source world isn't excited about it - let's take Google as an example. (Update: Again, Google isn't the point, just an example.)

    Like many tech-savvy type people, I use GMail and GTalk. But while Google supports some open source projects, if I think "secrecy and proprietary IP used to maximize hype and competitive advantage," I think of two companies: Apple and Google.

    Google is not coming down against software patents, and while they are quick to have open APIs, only a tiny fraction of their coder's output is open source.

    In spite of their proprietary leanings, Google gets a mostly free pass from the open source community. Even Slashdot comments are positive.

    Of course Google does cool stuff and succeeds in their "don't be evil" mantra most of the time. I use their software. But they are not an open source company, and it's somewhat odd that people who supposedly care about open source rarely bring this up.

    Do people simply not think of open source principles in connection with web hosted software?

    What to do?

    What is the solution? The GPLv3 approach will limit GPLv3 adoption, without addressing the important cases. It'd be better to drop the "TiVo provision" and be sure the Linux kernel and other projects widely adopt v3. Then approach software-as-a-service head-on in a more comprehensive way.

    First, we need to recognize that software-as-a-service (whether the hardware is in your living room or a server room) has huge advantages for users. I don't want to buy a whole computer when I only need a small slice of a server; I don't want to be a system administrator just to get email; I appreciate that TiVo systems don't get viruses since they won't run unknown software; and maybe most of all I love features that involve sharing, collaboration, and socializing.

    The open source world has to find a way to provide these benefits, if it's going to remain relevant.

    Second, there are plenty of aspects of open source that might apply to hosted or automatically-managed software. A community of developers and designers; the ability to fork; interoperability with a range of products vs. "walled gardens" and vendor lock-in.

    How does software-as-service change best licensing practices? Is there an "open service definition"? How does it change community-building? As a practical matter, how can open source developers build user experiences that require real infrastructure such as storage and bandwidth?

    There are some great success stories of open services already, such as Wikipedia.


    Open services pose more questions than answers at this point.

    While data becomes part of the "lock in" of many services, it can't really be made open if it has any access controls associated; instead there's a need for privacy policies and careful attention to who can access the database.

    User-contributed content has gotten quite a bit of attention from Creative Commons and others. Content licensing might be at least as important as software licensing for an online service.

    There's a chance that services will become more commoditized over time; more generic services like Amazon S3 might allow people to buy hosting separately from the software. Open source might be able to speed this up by providing software that runs on such services.

    Who knows. But it's about time to make this issue more prominent. I wish GPLv3 took it on either more strongly or not at all.

    This post moved to

    To save people time, here is some already-known info on D-Bus performance.

    Please read this post and a short followup about the new recursive type marshaling stuff slowing down those numbers a bit. I think there may be a couple other relevant mails in the archives, but not finding them right now.

    Be sure the build for performance testing does not have assertions, verbose mode, etc. enabled. I'd also avoid caring too much about the DBusGProxy layer as it does a pile of extra copying and is really convenience-over-performance in many ways. Not to mention it needs basic sanity work in addition to performance work.

    Historical background: the "D-Bus is faster" and "CORBA is slow" rumors are purely originated by fanboys, and have never been either the goal or the case. ORBit2 is nearly as fast as raw sockets. By contrast, most design decisions of D-Bus (the central bus daemon, validation in a paranoid/secure way of all data, certain ordering guarantees, etc.) were traded off in favor of robustness, decreased resource usage, convenience, etc. rather than speed.

    The only potentially significant speed wins in D-Bus I know of: 1) D-Bus makes it pretty easy to be fully async and avoid any round trips, which can be the key performance issue in some cases, in particular may matter for application startup; 2) the central bus daemon makes broadcasts/signals more efficient than the case where any app that wants to broadcast has to connect directly to all listeners.

    I should note that the D-Bus robustness-over-speed tradeoff mostly has to do with the libdbus implementation, not the wire protocol. So someone who disagreed could do a different implementation.

    Finally, I'd encourage profiling the desktop and apps, rather than D-Bus; I would be surprised if D-Bus showed up much in app profiles, unless someone starts shoveling giant quantities of data through it. If someone is doing that then a structural change would probably work better than optimizing libdbus marshaling code: dropping D-Bus from that app, using D-Bus in point-to-point mode instead of through the bus daemon, using D-Bus async instead of with round trips, or whatever. Though anyone is of course welcome to optimize the libdbus marshaling code.

    This post moved to

    A couple weeks ago I learned several new things from a talk Is Media Performance Democracy's Critical Issue? - the short version is that newspapers used to aim for 100% circulation, but now aim for "top 40% of income" circulation - subscribers below the top 40% apparently increase newspaper expenses but advertisers don't want to pay extra to reach them. i.e. most advertisers are selling expensive stuff. The talk goes into more detail and has other things to say as well, highly recommend reading it.

    In the talk, Tom Stites analyzes an issue of the Boston Globe showing how most of the articles weren't relevant unless you had enough disposable income. Was reminded of it with today's Globe magazine cover story, "The $100 meal may be chic, but it's not for everyone... Just $11 gets you Picco's haddock tacos topped with avocado vinaigrette."

    Wouldn't a plate of 3 tacos normally be about $3?

    This post moved to

    Several great posts from Luis.

    I mentioned it in passing a few posts ago, but I still think the "what is gnome?" on could use a lot of work: "GNOME offers an easy to understand desktop for your Linux or UNIX computer."

    I'd kill the words "desktop", "easy", "Linux/UNIX", and "computer" for starters. What Luis has to say gets at some of the reasons.

    I just decided to check with the original GNOME charter which defines this goal for GNOME:

    to create a computing platform for use by the general public that is completely free software.

    Now that's more like it. And it would include many of the projects that seem most exciting, whether Elisa, Nokia 770, Epiphany or Ekiga. Or One Laptop Per Child, Mugshot, Firefox, MusicBrainz, Wikipedia, Creative Commons. There are countless more projects out there. Pick your favorites. Some of the projects are about code, others are more about communities and shared information.

    I'm not saying GNOME should try to compete with all those projects or anything like that. But there's no reason GNOME should stick to the panel and file manager, either. It could work more closely toward a coherent user experience spanning some of the vast range of projects; and there are thousands of good ideas nobody is working on yet. And what would it mean to start creating a coherent story across some of these projects, a vision for a completely free-software computing platform for use by the general public? Luis hinted already that a platform isn't just libraries and drivers anymore. Nor is it yet another Linux distribution.

    Make a list of the top things the "general public" (not "the enterprise") does with their range of computing platforms (phones, set-top boxes, computers, web sites). Or, read research about what people do (there's one list on the seventh page - labeled "vi" - of that PDF). How much of GNOME (the project, the people, not "the desktop") relates to the top 10 activities? If the open source community wanted to be more relevant to the general public within 12 months, what kinds of things would we work on?