Last November, we gambled when we introduced Perfect to the world. As the first freely available server-side Swift web server and development toolkit, our timing was pinned to the hope Apple would follow through on an earlier pledge to open source their Swift programming language. Thankfully, they did 10 days later. Shortly afterward, thousands of developers expressed their interest in Perfect. Despite their enthusiasm, though, many voiced their unhappiness about the General Public License (GPL) we chose for it. After much internal discussion and contemplation, we have decided to change the Perfect license from the Affero General Public License (AGPL) to Apache immediately.
Our initial research led us to believe that a GPL-flavoured license would strengthen the Perfect community by requiring people to share any improvements they made to it. Our intent was simple: the likelihood of someone changing Perfect for internal or personal use only was low unless they were a large corporation looking to do things at scale. If a small developer were using Perfect, they wouldn't change it, so they would never have issues using it. If a large organization was to use it and made it "their own", our view is they should give back to the community or purchase an enterprise license from us. The AGPL, we thought, would reduce any perceived threats to our small team, and the growing Perfect community who have worked hard to make Perfect a reality.
We realize now this is an outdated perspective.
Over the last couple of months, we have taken the time to consult informally developers, academics and computer programming instructors, and business leaders at Apple, Facebook, LinkedIn, Pivotal, and more. Those discussions convinced us it was necessary to make this switch.
Confusion Abound over the AGPL
Linus Torvalds said it best: "There is no upside to pushing freeloaders away.” Certainly, value is created by community contributions – but also if more people are running Perfect in the wild. The more people who stress-test it, no matter how large or small, the faster and better the product will evolve organically.
We additionally believed, given our reading of the AGPL, that it suited us well since Perfect is server-based. It would ensure that a single corporate entity wouldn’t push us aside without making a contribution of some sort. Our lawyers stroked their chins, clucked their tongues, and wholeheartedly agreed. At that time, an AGPL made sense.
You know the proverb about “good intentions.” Clearly, most developers that read the AGPL were confused by our intent. They thought (and possibly correctly so) that their projects might become restrictively entangled. This confusion has come up in conversations, in tweets, in emails, on phone calls. Given this reaction by so many developers, one fact is clear: there are multiple readings of the AGPL, and the stricter one’s reading, the further away from our original vision and goals we found ourselves. Defining the lines of our intent proved to be a challenging issue and a distraction.
The deeper we thought about it, the more confusing it became. I have countless explanations attempting to justify the AGPL in my inbox, but it was not enough to make it easy to use. My favourite remark was from one of our writers who said: "much of the criticism we’re facing will not be quelled by any amount of flowery prose."
Red Hat Founder’s Sage Advice
The eureka moment, however, came when I was sitting in a small office with Bob Young, the founder of Red Hat, discussing how we could explain the importance of the GPL in our context. His advice was simple and powerful. To paraphrase: "make sure the license isn't a roadblock. If developers are confused by it in the slightest, it's getting in the way.”
The simplicity of GitHub’s pull request has killed the GPL. We want people to play with Perfect, screw with it, and recommend improvements so we can strengthen and enhance it. Plus, Swift is licensed under Apache, and Perfect is Swift. It's a no-brainer.
We appreciate the contributions everyone has made to date. We hope developers will take note that we have heard them, acted upon their recommendations and that they will continue to consider using Perfect for their future projects.
I am especially grateful to all of the developers who contacted us directly to share their thoughts on this matter. Their aim was to help us without being difficult or mean-spirited. We owe you all a debt of gratitude.
We aren't perfect. But we'd like this project to be.