Software Project “Politics”

Speaking of politics, this is as good a time as any to drag that much-maligned word out for a closer look. Many engineers like to think of politics as something other people engage in. “I’m just advocating the best course for the project, but she’s raising objections for political reasons.” I believe this distaste for politics (or for what is imagined to be politics) is especially strong in engineers because engineers are bought into the idea that some solutions are objectively superior to others. Thus, when someone acts in a way that seems motivated by outside considerations—say, the maintenance of his own position of influence, the lessening of someone else’s influence, outright horse-trading, or avoiding hurting someone’s feelings—other participants in the project may get annoyed. Of course, this rarely prevents them from behaving in the same way when their own vital interests are at stake.

If you consider “politics” a dirty word, and hope to keep your project free of it, give up right now. Politics are inevitable whenever people have to cooperatively manage a shared resource. It is absolutely rational that one of the considerations going into each person’s decision-making process is the question of how a given action might affect his own future influence in the project. After all, if you trust your own judgement and skills, as most programmers do, then the potential loss of future influence has to be considered a technical result, in a sense. Similar reasoning applies to other behaviors that might seem, on their face, like “pure” politics. In fact, there is no such thing as pure politics: it is precisely because actions have multiple real-world consequences that people become politically conscious in the first place. Politics is, in the end, simply an acknowledgment that all consequences of decisions must be taken into account. If a particular decision leads to a result that most participants find technically satisfying, but involves a change in power relationships that leaves key people feeling isolated, the latter is just as important a result as the former. To ignore it would not be high-minded, but shortsighted.

– Karl Fogel, Producing Open Source Software

Bugzilla 1,000,000 Bug Sweepstake Results

Milestone bugzilla.mozilla.org bug 1,000,000 was filed on 2014-04-23 at 01:10 ZST by Archaeopteryx (although rumour has it he used a script, as he also filed the 12 previous bugs in quick succession). The title of the bug was initially “Long word suggestions can move/shift keyboard partially off screen so it overflows” (a Firefox OS Gaia::Keyboard bug, now bug 1000025), but has since been changed to “Celebrate 1000000 bugs, bring your own drinks.”

The winner of the sweepstake to guess the date and time is Gijs Kruitbosch, who guessed 2014-04-25 05:43:21 – which is 2 days, 4 hours, 33 minutes and 5 seconds out. This is a rather wider error, measured in seconds, than the previous sweepstake, but this one had a much longer time horizon – it was instituted 9 months ago. So that’s an error of about 0.95%. The 800,000 bug winner had an error of about 1.55% using the same calculation, so in those terms Gijs’ effort is actually better.

Gijs writes:

I’m Dutch, recently moved to Britain, and I’ll be celebrating my 10th “mozversary” sometime later this year (for those who are counting, bugs had 6 digits and started with “2″ when I got going). Back in 2004, I got started by working on ChatZilla, later the Venkman JS debugger and a bit of Firefox, and last year I started working on Firefox as my day job. Outside of Mozilla, I play the piano every now and then, and try to adjust to living in a nation that puts phone booths in its cycle paths.

The two runners-up are Håvard Mork (2d 14h 50m 52s out) and Mark Banner (8d 8h 24m 36s out). Håvard writes:

My name is Håvard Mork. I’m a Java software developer, working with Firefox and web localization to Norwegian. I’ve been involved with localization since 2003. I think localization is rewarding, because it is a process of understanding the mindset of the users, and their perception of IT.

I’m surprised that my estimate came that close. I spent almost an hour trying to figure out how much bug numbers grow, and estimate the exponential components. Unfortunately I lost the equation, so need to start over for the 2,000,000 sweepstakes…

Mark writes:

I’m Mark Banner, also known as Standard8 on irc, I work from home in the UK. I came to Mozilla through volunteering on Thunderbird, and then working at Mozilla Messaging. I still manage Thunderbird releases. Alongside those, I am working on the Loop project (formally Talkilla), which is aiming to provide a real time communications service for Mozilla products, built on top of WebRTC.

Gijs will get a Most Splendid Package, and also a knitted thing from Sheeri as a special bonus prize! The other winners will receive something a little less splendid, but I’m sure it’ll be worth having nevertheless.

Who We Are

Two weeks ago, I posted about Who We Are and How We Should Be. I wrote:

But before we figure out how to be, we need to figure out who we are. What is the mission around which we are uniting? What’s included, and what’s excluded? Does Mozilla have a strict or expansive interpretation of the Mozilla Manifesto?

Here is my answer.

I think Mozilla needs to have a strict/close/tight/limited (whichever word you prefer) interpretation of the Mozilla Manifesto. To quote that document: we need to focus on “the health of the Internet”. We need to work on “making the Internet experience better”. We need to make sure “the Internet … continue[s] to benefit the public good”. As well as the 10 principles, the Manifesto also has a Mozilla Foundation Pledge:

The Mozilla Foundation pledges to support the Mozilla Manifesto in its activities. Specifically, we will:

  • build and enable open-source technologies and communities that support the Manifesto’s principles;
  • build and deliver great consumer products that support the Manifesto’s principles;
  • use the Mozilla assets (intellectual property such as copyrights and trademarks, infrastructure, funds, and reputation) to keep the Internet an open platform;
  • promote models for creating economic value for the public benefit; and
  • promote the Mozilla Manifesto principles in public discourse and within the Internet industry.

Some Foundation activities—currently the creation, delivery and promotion of consumer products—are conducted primarily through the Mozilla Foundation’s wholly owned subsidiary, the Mozilla Corporation.

I think that’s an awesome summary of what we should be doing, and I think we should view activities outside that scope with healthy suspicion.

It seems to me that this logical fallacy is common:

  1. Mozilla supports awesome things X and Y.
  2. I, and many Mozillians, also support awesome thing Z, and we use the same type of language to talk about X, Y and Z.
  3. Therefore, Mozilla does/should support awesome thing Z.

It can also appear as:

  1. Mozilla is an activist organization.
  2. I am an activist, and I’m in Mozilla.
  3. Mozilla does/should support me in all my activism.

Given the diversity of Mozillians, these cannot be good logic if applied equally and fairly. Mozilla would end up supporting many mutually-contradictory positions.

Some people believe so strongly in their non-open-web cause that they want to use the power of Mozilla to attain victory in that other cause. I can see the temptation – Mozilla is a powerful weapon. But doing that damages Mozilla – both by blurring our focus and message, and by distancing and discouraging Mozillians and potential Mozillians who take a different view. Those who care about Mozilla’s cause and about other causes deeply may find it hard to resist advocating that we give in to the temptation, but I assert that we as an organization should actively avoid promoting, or letting anyone use the Mozilla name to promote, non-open-web causes, because it will be at the expense of Mozilla’s inclusiveness and focus.

We are Mozillians. We need to agree on the Mozilla Manifesto, and agree to disagree on everything else.

bugzilla.mozilla.org Stats At 1,000,000

Thanks to glob, we’ve got some interesting stats from BMO as it crosses the 1M bug mark.

Statuses

UNCONFIRMED   23745
NEW          103655
ASSIGNED       8826
REOPENED       3598
RESOLVED     640326
VERIFIED     220235
CLOSED         1628

Resolutions

RESOLVED

DUPLICATE    119242
EXPIRED       10677
FIXED        303099
INCOMPLETE    30569
INVALID       58096
MOVED            27
WONTFIX       36179
WORKSFORME    82437

VERIFIED

DUPLICATE     64702
EXPIRED          27
FIXED        108935
INCOMPLETE     1746
INVALID       17099
MOVED           150
WONTFIX        6105
WORKSFORME    21471
  • Total bugs fixed (RESOLVED/FIXED + VERFIED/FIXED): 412034
  • Total duplicates: 183944

Bugs Filed Per Day (April)

2014-04-01    519
2014-04-02    531
2014-04-03    620
2014-04-04    373
2014-04-05    133
2014-04-06    132
2014-04-07    544
2014-04-08    622
2014-04-09    597
2014-04-10    571
2014-04-11    467
2014-04-12    156
2014-04-13    170
2014-04-14    573
2014-04-15    580
2014-04-16    574
2014-04-17    619
2014-04-18    356
2014-04-19    168
2014-04-20    118
2014-04-21    445
2014-04-22    635
2014-04-23    787
2014-04-24    562
2014-04-25    498
2014-04-26    173

Busiest Days Ever

2013-12-30    1360 (bulk import from another tracker)
2013-12-29    1081 (bulk import from another tracker)
2008-07-22    1037 (automated security scanner filing bugs)
2012-10-01    1013 (Gaia bugs import)
2014-02-11    805
2014-04-23    787
2014-02-04    678
2013-01-09    675
2013-11-19    647
2014-04-22    635

User Activity

  • We think the earliest bug filed by someone who is still involved with Mozilla is bug 283, which was filed by Wan-Teh Chang on 1998-04-29.
  • 2263 people who logged into Bugzilla at some point in April (i.e. are active users) have filed more than 10 bugs.
  • The most active user by far is bz:
    Bugs filed           4351
    Comments made      148493
    Assigned to          4029
    Commented on        56138
    QA-Contact              8
    Patches submitted    8080
    Patches reviewed    14872
    Bugs poked          66215
    

(You can find these stats about yourself by going to your own user profile. If you are logged in, you can search for other users and see their stats.)

Top 10: Assignees

nobody@mozilla.org         349671
mscott@mozilla.org          16385
bugzilla@blakeross.com      15056
asa@mozilla.org             13350
sspitzer@mozilla.org        11974
bugs@bengoodger.com         10995
justdave@mozilla.com         4768
sean@mozilla.com             4697
oremj@mozilla.com            4672
mozilla@davidbienvenu.org    4273

Top 10: Reporters

jruderman@gmail.com          8037
timeless@bemail.org          6129
krupa.mozbugs@gmail.com      5032
pascalc@gmail.com            4789
bzbarsky@mit.edu             4351
philringnalda@gmail.com      4348
stephen.donner@gmail.com     4038
dbaron@dbaron.org            3680
cbook@mozilla.com            3651
bhearsum@mozilla.com         3528

Top 10: Commenters

tbplbot@gmail.com          347695
bzbarsky@mit.edu           148481
philringnalda@gmail.com     65552
dbaron@dbaron.org           58588
ryanvm@gmail.com            50560
bugzilla@mversen.de         48840
gerv@mozilla.org            48704
roc@ocallahan.org           47453
hskupin@gmail.com           43596
timeless@bemail.org         42885

Top 11: Patches Attached

bzbarsky@mit.edu             8080
dbaron@dbaron.org            4879
ehsan@mozilla.com            4502
roc@ocallahan.org            4397
masayuki@d-toybox.com        4079
neil@httl.net                3930
mozilla@davidbienvenu.org    3890
timeless@bemail.org          3739
brendan@mozilla.org          3659
bugs@pettay.fi               3530
wtc@google.com               3411

Top 11: Reviews

roc@ocallahan.org           15581
bzbarsky@mit.edu            14869
neil@httl.net                9424
jst@mozilla.org              8352
dbaron@dbaron.org            8103
benjamin@smedbergs.us        7272
mozilla@davidbienvenu.org    6198
dveditz@mozilla.com          5983
asa@mozilla.org              5499
mark.finkle@gmail.com        5346
gavin.sharp@gmail.com        5126

PDX Biopsy

(Those who faint when reading about blood may want to skip this one.)

On Tuesday, I went down to London to have the biopsy for the PDX trial in which I’m taking part. The biopsy happened at the Royal Marsden hospital in Chelsea on Wednesday morning. It was a CT-guided needle biopsy, which means that they use a CT scanner in near-real-time to guide a hollow needle towards the lump to be sampled, and the sample extraction needle is then passed down that needle to take multiple samples.

At least, that’s what happens when it all goes well. :-)

The target, I found out on the day, was an isolated tumour in the top corner of my left lung. As they were biopsying my lungs, which are not a stable target, I had to both stay very still, and achieve a consistent size of “held breath”, so that when they moved the needle or did a scan, everything was in pretty much the same place. I was placed on the CT scanner table, and they used a lead-or-similar grid placed on my chest to find the optimum point of entry. They then injected generous quantities of local anaesthetic (a process which itself stings) and started inserting the needle. After each movement, they stopped, slid me into the scanner, told me to take a standard breath, and used the scan to see where the needle was and whether the track needed correction.

All went fairly smoothly until the needle passed through the outer wall of the lung itself. At this point, I started bleeding into my lung, which (although I tried to suppress it) led to significant amounts of convulsive coughing. They had to use suction to remove the liquid from my mouth. One nurse said afterwards that she thought they might well have abandoned the procedure at this point. In someone as young as me, this complication at this point is fairly rare. Of course, coughing so much, I was not able to hold still or take the standard breath, and it was dangerous to move the needle any further.

After a couple of minutes, I managed to get the coughing under control, although later I opened my eyes for a short time and saw blood spatters all over the inside of the CT machine! Once I was stable again, they were able to continue inserting the needle and were able to get 8 good “cores” of sample for use in the PDX trial.

However, a final whole-chest scan revealed that all that jerking about had given me a small pneumothorax, which is where air gets into the pleural space, between the lung and the chest wall. So I had to stay there for longer while they inserted a second needle into a different part of me and attempted to suck out the introduced air. This took less long, and was mostly successful. Any remaining air should, God willing, be reabsorbed in the next week or so.

Towards the end, I asked what my heart rate was; they said “66″. That’s the peace of God in action, I thought. The nurses joked that we should measure the heart rate of the surgeon! :-)

I was sent to the recovery room and then to the Clinical Assessment Unit. After 3 hours, they did a chest X-ray, then after another 2 hours another one, to check that I was stable and the remaining tiny pneumothorax was not growing. It wasn’t, so they let me go home. But I have another X-ray in a week, here in Sheffield, to make sure everything is OK and I’m fine to fly to the USA the following Monday :-)

Awesome Article on Browsers

James Mickens on top form, on browsers, Web standards and JavaScript:

Automatically inserting semicolons into source code is like mishearing someone over a poor cell-phone connection, and then assuming that each of the dropped words should be replaced with the phrase “your mom.” This is a great way to create excitement in your interpersonal relationships, but it is not a good way to parse code.

Read more.

Patient-Derived Xenografts

In my last post, I mentioned that I’ve been asked to take part in an interesting study to help develop a new form of cancer therapy. That therapy is based on Patient-Derived Xenografts (PDX). It works roughly like this:

  1. They extract a sample of your tumour, and divide it into two bits.
  2. They take one half, and implant it under the skin of an immune-deficient (“nude”) mouse. The immune deficiency means the mouse does not reject the graft.
  3. If it grows in the mouse, once it’s large enough they remove it and implant it into a second “generation” of four mice.
  4. They keep going for four generations, so at the end you have about 64 mice. It turns out that if you can get a tumour to grow for this long, it is acclimatised to the mice and will grow forever if required.
  5. Next, they take the other half of the sample and do a deep genetic sequence on it, along with one of a normal bit of me.
  6. They “diff” the two sequences to find all of the mutations that my cancer carries.
  7. Some of those mutations will be “driver” mutations, responsible for the cancer being cancerous, and others will be “passenger” mutations, which happened at the same time or subsequently, but are just along for the ride. They try and work out which are which.
  8. If they can identify the driver mutations, they look and see if they have a treatment for cancers driven by that set of mutations.
  9. If they do, they feed it to the mice.
  10. If it works in the mice, they give it to me.

As you can imagine, there’s a lot that can go wrong in this process. The biopsy samples could be bad, the tumour may not grow in the mice, or it may not grow for long enough, they may not be able to figure out which mutations are drivers, if they can there may not be an agent targetting that pathway, if there is it might not work in the mice, and if it does it might not work in me! So it would be wrong to trust in this for a “cure”. As before, my life is in the Lord’s hands, and he alone numbers my days. But I hope that even if it does not result in a cure for me, the knowledge gained will help them to cure others in the future.

I have significant involvement only at the beginning and (if we get there) the end. To start the process, it was necessary to provide a tumour sample via biopsy. That happened in London yesterday, and the rather eventful experience will be the subject of my next post.

Cancer Update

Last November, and again this month, I had CT scans, and it turns out my cancer (Adenoid Cystic Carcinoma) has been growing. (If you haven’t known me for long and didn’t know I have cancer, the timeline and in particular the video might be a useful introduction.) I now have lumps of significant size – 2cm or larger – in both of my lungs and in my liver. It has also spread to the space between the lung and the chest wall. It normally doesn’t cause much bother there, but it can bind the lung to the wall and cause breathing pain.

For the last 14 years, we have been following primarily a surgical management strategy. To this end, I have had approximately 5 neck operations, 2 mouth operations, 2 lung operations, and had half my liver, my gall bladder and my left kidney removed. Documentation about many of these events is available on this blog, linked from the timeline. Given that I’m still here and still pretty much symptom-free, I feel this strategy has served me rather well. God is good.

However, it’s now time for a change of tack. The main lump in my left lung surrounds the pulmonary artery, and the one in my liver is close to the hepatic portal vein. Surgery on these might be risky. So instead, the plan is to wait until one of them starts causing actual symptoms, and to apply targetted radiotherapy to shrink it. Because my cancer is “indolent” (a.k.a. “lazy”), it can have periods of activity and periods of inactivity. While it seems more active at the moment, that could stop at any time, or it could progress differently in different places.

There is no general chemotherapy for ACC. However, at my last consultation I was asked to take part in a clinical trial of a new and interesting therapeutic technique, of which more very soon.

A friend texted me a word of encouragement this morning, and said he and his family had been reading Psalm 103. It’s a timely reminder of the true nature of things:

The life of mortals is like grass,
    they flourish like a flower of the field;
the wind blows over it and it is gone,
    and its place remembers it no more.
But from everlasting to everlasting
    the Lord’s love is with those who fear him,
    and his righteousness with their children’s children –
with those who keep his covenant
    and remember to obey his precepts.

Psalm 103:15-18

10 Year Blogaversary

10 years ago today, I started blogging.

At the time, I thought I was rather late to the blogging party. In hindsight, it seems not. Since then, through one change of host (thanks, Mozillazine!), there have been 1,463 posts (including this one), and 11,486 comments. Huge thanks to everyone who’s read and/or commented (well, if you commented without reading, not so much) in the last 10 years. It’s uncertain whether I or the blog will last another 10 (the Lord is in control of that) but here’s to however long it is!

Who We Are And How We Should Be

“Every kingdom divided against itself will be ruined, and every city or household divided against itself will not stand.” — Jesus

It has been said that “Mozilla has a long history of gathering people with a wide diversity of political, social, and religious beliefs to work with Mozilla.” This is very true (although perhaps not all beliefs are represented in the proportions they are in the wider world). And so, like any collection of people who agree on some things and disagree on others, we have historically needed to figure out how that works in practice, and how we can avoid being a “kingdom divided”.

Our most recent attempt to write this down was the Community Participation Guidelines. As I see it, the principle behind the CPGs was, in regard to non-mission things: leave it outside. We agreed to agree on the mission, and agreed to disagree on everything else. And, the hope was, that created a safe space for everyone to collaborate on what we agreed on, and put our combined efforts into keeping the Internet open and free.

That principle has taken a few knocks recently, and from more than one direction.

I suggest that, to move forward, we need to again figure out, as Debbie Cohen describes it, “how we are going to be, together”. In TRIBE terms, we need a Designed Alliance. And we need to understand its consequences, commit to it as a united community, and back it up forcefully when challenged. Is that CPG principle still the right one? Are the CPGs the best expression of it?

But before we figure out how to be, we need to figure out who we are. What is the mission around which we are uniting? What’s included, and what’s excluded? Does Mozilla have a strict or expansive interpretation of the Mozilla Manifesto? I have read many articles over the past few weeks which simply assume the answer to this question – and go on to draw quite far-reaching conclusions. But the assumptions made in various quarters have been significantly different, and therefore so have the conclusions.

Now everyone has had a chance to take a breath after recent events, and with an interim MoCo CEO in place and Mozilla moving forward, I think it’s time to start this conversation. I hope to post more over the next few days about who I think we are and how I think we should be, and I encourage others to do the same.

Using Deja Dup (Ubuntu Built-In Backup) with rsync.net

This is one of those posts which is trying to save other people the hassle I’ve had.

Ubuntu One is shutting down. So I want to switch some backups over to use my rsync.net account. With U1, I used Ubuntu’s built in backup system, which is based on a program called Deja Dup. I would like to use that program with rsync.net too.

However, Deja Dup auto-prepends a “/” to the beginning of the path you give it. (There’s a bug on this behaviour.) And I don’t have root on the rsync.net server. (A good thing.)

So, in order to use Deja Dup with a server where you don’t have root, you need to find and give it a full path. Execute:

ssh 42@ch-s001.rsync.net pwd

(where 42 is your user number, and ch-s001 your server name) to find out the path to your home directory, and then, in the Deja Dup settings, prepend that to the name of the directory you want to store your backups in. You’ll also need to set up passwordless login.

You’ve Been Trolled

(Troll (v.): to say something with the aim of provoking an angry reaction which benefits you.)

On , an American company called Honey Maid (company slogan: “This is Wholesome”) released a new commercial. It features a number of families and children in a very positive light, including a family of two men. Here’s the video:

Soon after came the calls for a boycott.

A few days later, a Facebook friend linked to this video, which you absolutely should watch in full:

So, if you were someone who called for or joined this protest, what did you achieve here? Let’s consider. You got to look angry and intolerant – even if you didn’t use language like that depicted in the video, everyone will assume that you did. You got to look weak – it’s now clear that even companies whose core market is supposed to be the All-American family with traditional values have no problem taking an explicit stand for same-sex marriage, because they think it’ll be a net win for their sales figures. And you got to look fearful and patronised – what they did is the approximate equivalent of patting you on the head and saying “There, there, dear, don’t be scared, it’ll all be alright in the end.” You gave the company a ton of free publicity, and they got to look enlightened and forward-looking.

And the crowning achievement of the trolling, the pièce de résistance, was the fact that there was a shot of a mixed-race family somewhat later in the original, and they included that in the “bits people didn’t like” section of the follow-up video, right after showing the gay couple. So you all look racist, too – even if none of you had any issues with the promotion of that type of family.

I’m pretty sure they didn’t think of this after the commercial was published; it was set up in advance. They knew this was going to happen, and you played right into their hands. As bits of marketing go, I have to say “well played”.

So, here’s my advice. Public expressions of outrage (something you picked up from the other side’s playbook anyway) clearly don’t work any more, if they ever did. When a company like Honey Maid can troll you to get a quite predictable reaction and lots of free publicity, here’s the lesson: you need new tactics. This isn’t working.

21st Century Nesting

Our neighbours have acquired a 21st century bird’s nest:

Not only is it behind a satellite dish but, if you look closely, large parts of it are constructed from the wire ties that the builders (who are still working on our estate) use for tying layers of bricks together. We believe it belongs to a couple of magpies, and it contains six (low-tech) eggs.

I have no idea what effect this has on their reception…

Copyright and Software

As part of our discussions on responding to the EU Copyright Consultation, Benjamin Smedberg made an interesting proposal about how copyright should apply to software. With Chris Riley’s help, I expanded that proposal into the text below. Mozilla’s final submission, after review by various parties, argued for a reduced term of copyright for software of 5-10 years, but did not include this full proposal. So I publish it here for comment.

I think the innovation, which came from Benjamin, is the idea that the spirit of copyright law means that proprietary software should not be eligible for copyright protections unless the source code is made freely available to the public by the time the copyright term expires.

We believe copyright terms should be much shorter for software, and that there should be a public benefit tradeoff for receiving legal protection, comparable to other areas of IP.

We start with the premise that the purpose of copyright is to promote new creation by giving to their authors an exclusive right, but that this right is necessary time-limited because the public as a whole benefits from the public domain and the free sharing and reproduction of works. Given this premise, copyright policy has failed in the domain of software. All software has a much, much shorter life than the standard copyright term; by the end of the period, there is no longer any public benefit to be gained from the software entering the public domain, unlike virtually all other categories of copyrighted works. There is already more obsolete software out there than anyone can enumerate, and software as a concept is barely even 50 years old, so none is in the public domain. Any which did fall into the public domain after 50 or 70 years would be useful to no-one, as it would have been written for systems long obsolete.

We suggest two ideas to help the spirit of copyright be more effectively realized in the software domain.

Proprietary software (that is, software for which the source code is not immediately available for reuse anyway) should not be eligible for copyright protections unless the source code is made freely available to the public by the time the copyright term expires. Unlike a book, which can be read and copied by anyone at any stage before or after its copyright expires, software is often distributed as binary code which is intelligible to computers but very hard for humans to understand. Therefore, in order for software to properly fall into the public domain at the end of the copyright term, the source code (the human-readable form) needs to be made available at that time – otherwise, the spirit of copyright law is not achieved, because the public cannot truly benefit from the copyrighted material. An escrow system would be ideal to implement this.

This is also similar to the tradeoff between patent law and trade secret protection; you receive a legal protection for your activity in exchange for making it available to be used effectively by the broader public at the end of that period. Failing to take that tradeoff risks the possibility that someone will reverse engineer your methods, at which point they are unprotected.

Separately, the term of software copyright protection should be made much shorter (through international processes as relevant), and fixed for software products. We suggest that 14 years is the most appropriate length. This would mean that, for example, Windows XP would enter the public domain in August 2015, which is a year after Microsoft ceases to support it (and so presumably no longer considers it commercially viable). Members of the public who wish to continue to run Windows XP therefore have an interest in the source code being available so technically-capable companies can support them.