Free Software’s Fifth Freedom

Way back at the dawn of the open source era, Richard Stallman wrote the Four Freedoms which defined what it meant for software to be free. These are:

  • Freedom 0: The freedom to run the program for any purpose.
  • Freedom 1: The freedom to study how the program works, and change it to make it do what you wish.
  • Freedom 2: The freedom to redistribute copies so you can help your neighbor.
  • Freedom 3: The freedom to improve the program, and release your improvements (and modified versions in general) to the public, so that the whole community benefits.

For nearly three decades now they have been the foundation for our movement, the motivation for many of us, and the guiding principle for the decisions we make about what software to use.

But outside of our little corner of humanity, these freedoms are not seen as particularly important. In fact, the fast majority of people are not only happy to use software that violates them, but will often prefer to do so. I don’t even feel the need to provide supporting evidence for this claim, as I’m sure all of you have been on one side or the other of a losing arguement about why using open source software is important.

The problem, it seems, is that people who don’t plan on exercising any of these freedoms, from lack of interest or lack of ability, don’t place the same value on them as those of us who do. That’s why software developers are more likely to prefer open source than non-developers, because they might actually use those freedoms at some point.

But the people who don’t see a personal value in free software are missing a larger, more important freedom. One implied by the first four, though not specifically stated. A fifth freedom if you will, which I define as:

  • Freedom 4: The freedom to have the program improved by a person or persons of your choosing, and make that improvement available back to you and to the public.

Because even though the vast majority of proprietary software users will never be interested in studying or changing the source of the software they use, they will likely all, at some point in time, ask someone else if they can fix it. Who among us hasn’t had a friend or relative ask us to fix their Windows computer? And the true answer is that, without having the four freedoms (and implied fifth), only Microsoft can truly “fix” their OS, the rest of us can only try and undo the damage that’s been done.

So the next time you’re trying to convince someone of the important of free and open software, and they chime in with the fact that don’t want to change it, try pointing out that by using proprietary code they’re limiting their options for getting it fixed when it inevitably breaks.

Posted in OpenSource | Tagged , , | 13 Comments

My SCaLE 13x and UbuCon review

A couple of weeks ago I had the opportunity to attend the thirteenth Southern California Linux Expo, more commonly known at SCaLE 13x. It was my first time back in five years, since I attended 9x, and my first time as a speaker. I had a blast at SCaLE, and a wonderful time with UbuCon. If you couldn’t make it this year, it should definitely be on your list of shows to attend in 2016.

UbuCon

Thanks to the efforts of Richard Gaskin, we had a room all day Friday to hold an UbuCon. For those of you who haven’t attended an UbuCon before, it’s basically a series of presentations by members of the Ubuntu community on how to use it, contribute to it, or become involved in the community around it. SCaLE was one of the pioneering host conferences for these, and this year they provided a double-sized room for us to use, which we still filled to capacity.

image20150220_100226891I was given the chance to give not one but two talks during UbuCon, one on community and one on the Ubuntu phone. We also had presentations from my former manager and good friend Jono Bacon, current coworkers Jorge Castro and Marco Ceppi, and inspirational community members Philip Ballew and Richard Gaskin.

I’d like thank Richard for putting this all together, and for taking such good care of those of us speaking (he made sure we always had mints and water). UbuCon was a huge success because of the amount of time and work he put into it. Thanks also to Canonical for providing us, on rather short notice, a box full of Ubuntu t-shirts to give away. And of course thanks to the SCaLE staff and organizers for providing us the room and all of the A/V equipment in it to use.

The room was recorded all day, so each of these sessions can be watched now on youtube. My own talks are at 4:00:00 and 5:00:00.

Ubuntu Booth

In addition to UbuCon, we also had an Ubuntu booth in the SCaLE expo hall, which was registered and operated by members of the Ubuntu California LoCo team. These guys were amazing, they ran the booth all day over all three days, managed the whole setup and tear down, and did an excellent job talking to everybody who came by and explaining everything from Ubuntu’s cloud offerings, to desktops and even showing off Ubuntu phones.

image20150221_162940413Our booth wouldn’t have happened without the efforts of Luis Caballero, Matt Mootz, Jose Antonio Rey, Nathan Haines, Ian Santopietro, George Mulak, and Daniel Gimpelevich, so thank you all so much! We also had great support from Carl Richell at System76 who let us borrow 3 of their incredible laptops running Ubuntu to show off our desktop, Canonical who loaned us 2 Nexus 4 phones running Ubuntu as well as one of the Orange Box cloud demonstration boxes, Michael Newsham from TierraTek who sent us a fanless PC and NAS, which we used to display a constantly-repeating video (from Canonical’s marketing team) showing the Ubuntu phone’s Scopes on a television monitor provided to us by Eäär Oden at Video Resources. Oh, and of course Stuart Langridge, who gave up his personal, first-edition Bq Ubuntu phone for the entire weekend so we could show it off at the booth.

image20150222_132142752Like Ubuntu itself, this booth was not the product of just one organization’s work, but the combination of efforts and resources from many different, but connected, individuals and groups. We are what we are, because of who we all are. So thank you all for being a part of making this booth amazing.

Posted in Community, Events, Meetups, OpenSource, Work | Tagged , , , , | 1 Comment

Ubuntu LoCo Team Global Jam Packs

For a long time now Canonical has provided Ubuntu LoCo Teams with material to use in the promotion of Ubuntu. This has come in the form of CDs and DVDs for Ubuntu releases, as well as conference packs for booths and shows.

We’ve also been sent several packages, when requested by an Ubuntu Member, to LoCo Teams for their own events, such as release parties or global jams.

Ubuntu Mauritius Team 14.10 Global Jam

This cycle we are extending this offer to any LoCo team that is hosting an in-person Global Jam event. It doesn’t matter how many people are going, or what you’re planning on doing for your jam. The Jam Packs will include DVDs, stickers, pens and other giveaways for your attendees, as well as an Ubuntu t-shirt for the organizers (or as a giveaway, if you choose).

Since there is only a few weeks before Global Jam weekend, and these will be shipped from London, please take your country’s customs process into consideration before ordering. Countries in North America and Europe shouldn’t have a problem, but if you’ve experienced long customs delays in the past please consider waiting and making your request for the next Global Jam.

To get an Ubuntu Global Jam Pack for your event, all you need to do is the following:

  • Register you Global Jam event on the LoCo Team Portal
    • Your event must be in-person, and have a venue associated with it
  • Fill out the community donation request form
    • Include a link to your LoCo Team Portal event in your request
  • Promote your event, before and after
    • Blog about it, post pictures, and share your excitement on social media
      • Use the #ubuntu hashtag when available

You can find all kinds of resources, activities and advice for running your Global Jam event on the Ubuntu Wiki, where we’ve collected the cumulative knowledge from all across the community over many years. And you can get live help and advice any time on the #ubuntu-locoteams IRC channel on Freenode.

Posted in Community, Events, LoCo, Meetups | Tagged , , , , | Comments Off

Community Donations Report, Q2 2014

Whenever a user downloads Ubuntu from our website, they are asked if they would like to make a donation, and if so how they want their money used. When the “Community” option is chosen, that money is made available to members of our community to use in ways that they feel will benefit Ubuntu.

I’m a little late getting this report published, but it’s finally done. You can read the report here: https://docs.google.com/a/canonical.com/document/d/1HrBqGjqKe-THdK7liXFDobDU2LVW9JWtKxoa8IywUU4/edit#heading=h.yhstkxnvuk7s

We pretty consistently spend less than we get in each quarter, which means we have money sitting around that could be used by the community. If you want to travel to an event, would like us to sponsor an event, need hardware for development or testing, or anything else that you feel will make Ubuntu the project and the community better, please go and fill out the request form.

 

Posted in Community | Tagged , , | 2 Comments

Android is not going to be a desktop OS

A while back Bryan Lunduke wrote about using Android on a desktop and he gave it a pretty good review. While I felt that the article was light on details, he defended his position and insisted that Android was, in his words, “a pretty typical desktop environment”. By the title of this post, you can probably guess that I disagree with that.

It’s not that Android is a bad OS, or is simply in need of additional features to make it a good desktop OS, it’s that Android has fundamental design decisions that worked well on mobile but will not translate to the desktop. One that I want to highlight, because I experienced it today on my tablet, is the problem of Android’s Activity Stack.

Android doesn’t deal with navigation in the same way conventional desktops do. Rather than each application managing it’s own (and only it’s own) state and navigation, Android uses a shared stack that can have a mix of Activities from different applications.

activity_stacks

I found the image above on an MSDN page that shows the difference between Android and Windows 8, but Ubuntu and other conventional desktops work in much the same way as Windows. Illustrated here is the fact that you can have an Activity from App2 on top of (and seemingly a part of) Activities from App1. Modern versions of Android have tried to keep separate stacks for apps that are started independently, but they will still mix Activities that are started from inside an app.

To show why this causes problems I’ll demonstrate what I ran into today. While browsing Google+, using the native Android app, I came across a link to Reddit.

Screenshot_2014-12-30-14-34-07Screenshot_2014-12-30-14-34-14Screenshot_2014-12-30-14-35-23As you can see, I have a native Reddit app called reddit is fun so Android asks if I want to open the link in that, rather than Chrome, which is nice and works as expected. So far so good. However, rather than opening the Activity in the reddit is fun activity stack, it opens it in the Google+ activity stack. So that when we look at your open apps, you see what looks to be two instances of reddit is fun, when in fact one of those is actually Google+ according to Android.

Screenshot_2014-12-30-14-34-50

Now this is confusing enough on it’s own, but it gets worse. You see, even though Android thinks this new reddit is fun Activity is part of Google+, the Activity itself does not. So what happens when you navigate “Back”? Well that depends on which control you use. If you use the softkey “Back” button, Android pops the reddit is fun Activity off of the Google+ stack and returns you to where you were. But, if you use the “Back” button in the ActionBar of the reddit is fun Activity, you go “back” to the Subreddit page for the article you are viewing. Not only was this page never part of your navigation, so I shouldn’t go “back” to it, but it’s still in the Google+ stack!

Screenshot_2014-12-30-14-34-24

If you use the ActionBar’s “Back” action, you can find yourself browsing Reddit for quite some time while still inside the Google+ app. Now imagine what this would be like on a desktop, where you will regularly have multiple application windows visible at the same time and inter-mixed in different stacking orders.

If this were all just a bug then it could be fixed, and I would have no reason to say that Android won’t be a desktop OS. But this is all working as intended, it is a part of Android’s fundamental design. There’s not good way to fix this, other than a major refactor and workflow change, or a bunch of hacks to try and make use cases like this one behave differently than the standard workflow dictates. I don’t foresee Google wanting to invest a significant amount of developer time on either option to make Android a good desktop OS, especially when they are already investing that time into making Chrome OS for the desktop market.

 

 

 

Posted in Programming | Tagged , , , , , , | 7 Comments

On Democratic Republics and Meritocratic Oligarchies

There’s a saying in American political debate that is as popular as it is wrong, which happens when one side appeals to our country’s democratic ideal, and the other side will immediately counter with “The United States is a Republic, not a Democracy”. I’ve noticed a similar misunderstanding happening in open source culture around the phrase “meritocracy” and the negatively-charged “oligarchy”. In both cases, though, these are not mutually exclusive terms. In fact, they don’t even describe the same thing.

Authority

One of these terms describes where the authority to lead (or govern) comes from. In US politics, that’s the term “republic”, which means that the authority of the government is given to it by the people (as opposed to divine-right, force of arms, of inheritance). For open source, this is where “meritocracy” fits in, it describes the authority to lead and make decisions as coming from the “merit” of those invested with it. Now, merit is hard to define objectively, and in practice it’s the subjective opinion of those who can direct a project’s resources that decides who has “merit” and who doesn’t. But it is still an important distinction from projects where the authority to lead comes from ownership (either by the individual or their employer) of a project.

Enfranchisement

History can easily provide a long list of Republics which were not representative of the people. That’s because even if authority comes from the people, it doesn’t necessarily come from all of the people. The USA can be accurately described as a democracy, in addition to a republic, because participation in government is available to (nearly) all of the people. Open source projects, even if they are in fact a meritocracy, will vary in what percentage of their community are allowed to participate in leading them. As I mentioned above, who has merit is determined subjectively by those who can direct a project’s resources (including human resource), and if a project restricts that to only a select group it is in fact also an oligarchy.

Balance and Diversity

One of the criticisms leveled against meritocracies is that they don’t produce diversity in a project or community. While this is technically true, it’s not a failing of meritocracy, it’s a failing of enfranchisement, which as has been described above is not what the term meritocracy defines. It should be clear by now that meritocracy is a spectrum, ranging from the democratic on one end to the oligarchic on the other, with a wide range of options in between.

The Ubuntu project is, in most areas, a meritocracy. We are not, however, a democracy where the majority opinion rules the whole. Nor are we an oligarchy, where only a special class of contributors have a voice. We like to use the term “do-ocracy” to describe ourselves, because enfranchisement comes from doing, meaning making a contribution. And while it is limited to those who do make contributions, being able to make those contributions in the first place is open to anybody. It is important for us, and part of my job as a Community Manager, to make sure that anybody with a desire to contribute has the information, resources, and access to to so. That is what keeps us from sliding towards the oligarchic end of the spectrum.

 

Posted in Community, Economics, OpenSource, Politics | Tagged , , , , | 2 Comments

Big improvements come from small changes

After I implemented infinite scrolling in uReadIt 2.0, I found that after a couple of page loads the UI would start to be sluggish. It’s not surprising, considering the number of components it kept adding to the ListView. But in order to keep the UI consistent, I couldn’t get rid of those items, because I wanted to be able to scroll back through old ones. What I needed was a way to make QML ignore them when they weren’t actually being displayed.

Today I found myself reading about the QML Scene Graph, which led me to realize that QML wouldn’t spend time and resources trying to render an item if it knew ahead of time that there wasn’t anything to render. So I made a 1 line change to my MultiColumnListView to set the opacity of off-screen components to 0.

 

One line change to make off-screen items transparent

One line change to make off-screen items transparent

I also found these cool ways to visualize what QML is doing in terms of drawing, which are very helpful when it comes to optimizing, and let me verify that my change was doing what I expected. I’m pretty sure Florian Boucault has shown me this before, but I had forgotten how he did it.

After change, only visible items rendered

After change, only visible items rendered

Before change, all items being rendered

Before change, all items being rendered

Posted in Programming | Tagged , , , , , | 1 Comment

Ubuntu Incubator

The Ubuntu Core Apps project has proven that the Ubuntu community is not only capable of building fantastic software, but they’re capable of the meeting the same standards, deadlines and requirements that are expected from projects developed by employees. One of the things that I think made Core Apps so successful was the project management support that they all received from Alan Pope.

Project management is common, even expected, for software developed commercially, but it’s just as often missing from community projects. It’s time to change that. I’m kicking off a new personal[1] project, I’m calling it the Ubuntu Incubator.

get_excited_banner_banner_smallThe purpose of the Incubator is to help community projects bootstrap themselves, obtain the resources they need to run their project, and put together a solid plan that will set them on a successful, sustainable path.

To that end I’m going to devote one month to a single project at a time. I will meet with the project members regularly (weekly or every-other week), help define a scope for their project, create a spec, define work items and assign them to milestones. I will help them get resources from other parts of the community and Canonical when they need them, promote their work and assist in recruiting contributors. All of the important things that a project needs, other than direct contributions to the final product.

I’m intentionally keeping the scope of my involvement very focused and brief. I don’t want to take over anybody’s project or be a co-founder. I will take on only one project at a time, so that project gets all of my attention during their incubation period. The incubation period itself is very short, just one month, so that I will focus on getting them setup, not on running them.  Once I finish with one project, I will move on to the next[2].

How will I choose which project to incubate? Since it’s my time, it’ll be my choice, but the most important factor will be whether or not a project is ready to be incubated. “Ready” means they are more than just an idea: they are both possible to accomplish and feasible to accomplish with the person or people already involved, the implementation details have been mostly figured out, and they just need help getting the ball rolling. “Ready” also means it’s not an existing project looking for a boost, while we need to support those projects too, that’s not what the Incubator is for.

So, if you have a project that’s ready to go, but you need a little help taking that first step, you can let me know by adding your project’s information to this etherpad doc[3]. I’ll review each one and let you know if I think it’s ready, needs to be defined a little bit more, or not a good candidate. Then each month I’ll pick one and reach out to them to get started.

Now, this part is important: don’t wait for me! I want to speed up community innovation, not slow it down, so even if I add your project to the “Ready” queue, keep on doing what you would do otherwise, because I have no idea when (or if) I will be able to get to yours. Also, if there are any other community leaders with project management experience who have the time and desire to help incubate one of these project, go ahead and claim it and reach out to that team.

[1] While this compliments my regular job, it’s not something I’ve been asked to do by Canonical, and to be honest I have enough Canonical-defined tasks to consume my working hours. This is me with just my community hat on, and I’m inclined to keep it that way.

[2] I’m not going to forget about projects after their month is up, but you get 100% of the time I spend on incubation during your month, after that my time will be devoted to somebody else.

[3] I’m using Etherpad to keep the process as lightweight as possible, if we need something better in the future we’ll adopt it then.

Posted in Community, OpenSource, Programming, Projects | Tagged , , , , , | 7 Comments

Community Appreciation Day

When things are moving fast and there’s still a lot of work to do, it’s sometimes easy to forget to stop and take the time to say “thank you” to the people that are helping you and the rest of the community. So every November 20th we in Ubuntu have a Community Appreciation Day, to remind us all of the importance of those two little words. We should of course all be saying it every day, but having a reminder like this helps when things get busy.

Like so many who have already posted their appreciation have said, it would be impossible for me to thank everybody I want to thank. Even if I spent all day on this post, I wouldn’t be able to mention even half of them.  So instead I’m going to highlight two people specifically.

First I want to thank Scarlett Clark from the Kubuntu community. In the lead up to this last Ubuntu Online Summit we didn’t have enough track leads on the Users track, which is one that I really wanted to see more active this time around. The track leads from the previous UOS couldn’t do it because of personal or work schedules, and as time was getting scarce I was really in a bind to find someone. I put out a general call for help in one of the Kubuntu IRC channels, and Scarlett was quick to volunteer. I really appreciated her enthusiasm then, and even more the work that she put in as a first-time track lead to help make the Users track a success. So thank you Scarlett.

Next, I really really want to say thank you to Svetlana Belkin, who seems to be contributing in almost every part of Ubuntu these days (including ones I barely know about, like Ubuntu Scientists). She was also a repeat track lead last UOS for the Community track, and has been contributing a lot of great feedback and ideas on ways to make our amazing community even better. Most importantly, in my opinion, is that she’s trying to re-start the Ubuntu Leadership team, which I think is needed now more than ever, and which I really want to become more active in once I get through with some deadline-bound work. I would encourage anybody else who is a leader in the community, or who wants to be one, to join her in that. And thank you, Svetlana, for everything that you do.

It is both a joy and a privilege to be able to work with people like Scarlett and Svetlana, and everybody else in the Ubuntu community. Today more than ever I am reminded about how lucky I am to be a part of it.

Posted in Community, Events | Tagged , , | 1 Comment

Economic warfare in FOSS

Or, How to destroy a project rather than compete with it.

Whether they are conscious of it or not, many parts of our community have engaged in it, and it’s hurting us all. When a project comes along that some people don’t like, but they can’t (or won’t) compete with it, they will too often revert into a series of attacks that systematically tear that project down.

Those steps, as I have observed them, are recorded below. I do this not to instruct people on how to do it (nobody ever needed it described to them in detail in order to participate in it) but rather in the hope that it will help the rest of us identify it when it starts to happen, and call it our for what it is.

Step 1: Demonize the project

These things always start with an attack on the character of the project itself. The groups that strongly oppose it are, at this point, always too small for their opinion to change anything. But they are almost always vocal enough to be heard, and that’s all that is needed. As post after post, comment after comment, starts to saturate communication channels, they setup the meme that this project is not just technically bad, but morally bad. It shouldn’t exist, the people who built it shouldn’t have built it, and people that use it shouldn’t be using it. They will use emotionally charged language, hyperbole or outright lies to turn people against the very idea of the project existing. They won’t turn everybody, in fact they won’t even turn a majority, but if they can convince enough people that they are right, they can direct this new following towards the next step.

Step 2: Intimidate their supporters

Having raised their quasi-army of opponents through persistent attacks on the project, they will turn them loose on the supporters of that project. They can’t attack them directly, at this point they’re still a relatively small movement and dependent on the acquiescence of the rest of the community to continue in this behavior. Instead they will playfully mock those supporters, making a point to embarrass them or question their intelligence because of their support. The point of this isn’t to change anybody’s mind, it’s to drive those supporters underground, make them hesitant to show their support, and make it look like the project is losing support even if it isn’t. Without a tangible community of users and supporters, the project’s contributors become entirely dependent on each other for the support and recognition that is essential in motivating volunteer contributions.

Step 3: Undermine their contributors

With the loss of a protective support community, and an increasingly emboldened number of attackers, they will at this point begin to attack the people actually contributing to the project itself. By now those involved in the project will have begun to close themselves off from the community, a reaction to try and insulate themselves from what is happening to them. Because of this, there isn’t much the opponents can do to them directly, so instead they begin to corner them in that project by cutting them off from any other project. Calls for boycotts will go out, project contributors will become persona-non-grata in other communities, and it will be at least strongly implied (if not explicitly declared) that any project or community that collaborates with them will suffer the same fate. With no supporters giving them recognition for work on the project, and being increasingly unable to have any of their work recognized and accepted by other projects, contributors will start to drop out, both of the targeted project itself and quite often the entire FOSS community as well.

Step 4: Attack the person

Quite often the previous steps are enough to destroy a project. With supporters not showing support, and contributors stopping their contribution, it would take a very strongly-willed person to carry on. If the project manages to continue with any measure of success, the attacks on the people at the core of it will become intense. Not many projects have survived to this point, so it’s difficult to give general descriptions of what will happen, but things will start to get very ugly, even to threats of violence. If the opposition group hasn’t begun to experience their own negative blow-back from what they’ve been doing, they will be able to continue these attacks until the people driving the project either give up, or are driven completely away from working in the community.

Prevention

All of this happens only when it’s allowed to happen. It isn’t inevitable, nor is it unstoppable.  It can be stopped at any point along this path, if enough of us decide that it ought to be stopped. I hope I don’t have to write another post convincing anybody that is ought to be stopped.

Prevention starts with identifying that this is happening, which is the reason I detailed it’s progress above. Once we know that it is happening, and how far along it has gotten, we can start to roll it back and undo some of the damage already done.

Defend the person

If it has gotten all the way to the final attack on the head of the project we must, as a community, be outspoken in our defence of them as people and as members of our community. You don’t have to like their project, or even support it, to honestly give support to the person. Ugly attacks, threats of violence, and any other attack on a person or their character should never be tolerated, and we need to make sure everybody knows that it won’t be tolerated.

Support the contributors

When the project’s contributors are under attack, and people are trying to isolate them from the rest of the community, it is important for them to be welcomed by other groups and projects, to continue to give recognition and value to the contributions they make elsewhere. At this point we are in danger of losing them as FOSS contributors, not just to one project but to any project, current of future. Even if you don’t see value in their current work, the lost potential for future contributions should be enough to motivate you to give them your support.

Speak up

If you support a project, don’t be afraid or ashamed to let people know it. When the supporters are being mocked or insulted, they need to hear from each other, or else feel alone in their support. Let them know they are not alone, let them know that you are not afraid to be seen supporting that project. It only takes a few voices, a few brave voices who refuse to be quieted, to make the others feel confident enough to do likewise.

Don’t be afraid

The best, and easiest, time to prevent this from happening is at the very start, when that initial opposition tries to turn you against a project. Whenever somebody starts to tell you that a project shouldn’t exist, or that it’s existence is going to be bad for you, be immediately skeptical. When they want to you be angry or afraid of it you should be questioning their intention. Especially when the code is open, it’s nearly impossible that it’s going to be able to cause you any real or lasting harm. Don’t let your emotions be hijacked by those who want to use you for their own purposes. Keep calm, use what works for you, make something better if you don’t like what’s available.

Posted in Community, Economics, OpenSource | Tagged , , , | 14 Comments