I want to share a short story with you folks as the basis for a little challenge I wanted to set. Let me start at the beginning.

A little while back John Lea, a member of the Canonical Design Team filed this bug. The essence of the bug was grounded in one of the check-boxes on one of the pages of the Ubuntu installer:

The third-party software check-box is a useful little feature in which some non-free components can be easily installed at the install time if the user so desires so. The check-box is designed to solve the problem where things don’t work because there is no Open Source solution available.

The bug was proposing that the check-box be ticked by default with the goal of ensuring that the user does not get a broken experience. When I first learned of the bug report this struck me that it had some legal and policy ramifications. In my mind this is not as simple as just changing a default – my take was that if the check-box was ticked by default it would be a definitive change in policy for the Ubuntu project – it would include non-free components by default (even if a user could un-check it to not have this components installed).

I felt my responsibility in this case was to ensure that due process and transparent published governance was used to respond to the bug. As such I asked the Ubuntu Technical Board to provide comment and input. They had their public meeting (meeting log) and voted unanimously of 5-0 against the proposal in the bug report.

So that is the end of that, right?

Well, not really. I don’t want us to dismiss the rationale and ethos behind John’s original proposal in the bug report. John wants to solve the valuable and important problem of users installing Ubuntu and things not working, largely because a closed-source tool was not installed to bring that support in the absence of an Open Source solution. As we move to take Ubuntu to the masses we are going to face various cases in which we can’t offer an Open Source solution or the required quality in that Open Source solution for a given use case. Examples of this include Flash support, MP3 playback, some graphics drivers etc.

While a broken experience will not help us get over the chasm, I am also of the view that we should not sacrifice our values and philosophy; freedom is not a chore that restrains us from delivering a great user experience but a feature that we need to celebrate and encourage.

Thus we face the classic tale of Freedom vs. Functionality in the Open Source community. How do we deliver a great user experience, but one that maintains our commitment to freedom, particularly in those cases where no free solution exists?

I feel uncomfortable saying we need to significantly compromise on either side of the line. We should never compromise in delivering a wonderful user experience that just works, but we should also never compromise in delivering a Free Software Operating System. What’s more, I feel like we haven’t uncovered all of the options available in striking this balance in the installer.

It strikes me that our goal here is for the installer to understand what capabilities can be delivered on the user’s system with Free Software, but to inform the user of their options regarding non-free additions that may offer a better experience. Then the user gets to decide. If they are unwilling to use non-free software, they understand that some things may not work. If they are happy to use non-free elements, they can get that experience without jumping through hoops. All the while this would ensure that we are free by default but non-free functionality would only be a click away if the user chooses so. This way we empower the user.

It is with this that I wanted to present a challenge to our growing design community. I think this topic is a valuable one for us to discuss at our next Ubuntu Developer Summit but thought it could be useful to open the discussion in the community now in preparation for the event. How do you feel we could best solve this? Anyone want to propose some mock-ups or put together a spec?

Share This
%d bloggers like this: