Permissionless Development and Noncommercial

I’ve been thinking a lot about Indie Code Catalog and terms for some of my own software projects that I want to offer through Artless Devices. I’d appreciate some thoughts and gut reactions on a standard deal with perms along these lines:

End Use Dev Tool Distributed Component Service Component
Noncommercial Free Free Free Free
Kids’ Projects Free Free Free Free
Trial Free Free Free Free
Indie Projects N/A Pay when Paid Pay when Paid Pay when Paid
Commercial Pay Upfront Pay Upfront Pay Upfront Pay Upfront
Definitions

“End Use” means you just run the software, as you might play a game. “Dev Tool” means you run the software to make other software. “Distributed Component” means shipping as a library or framework as part of installed or embedded software. “Service Component” means running as library or framework as part of SaaS.

“Pay Upfront” means you’re not licensed for free. You have to buy a license to use beyond trial. “Pay when Paid” means you’re pre-authorized to use and even resell, but you have to pay for licenses once you start getting paid, on advertised terms and pricing. “Indie Project” means projects under the same kind of deal: open code, noncomm free, commercial paid.

Fundamentally, I feel noncommercial-free, commercial-paid with open code best reflects the change we need in the industry. Those taking money in should be paying over to the devs whose work they build on, and we shouldn’t have to forfeit the quality and process benefits of openness to get there. But striking out with non-comm terms has been a pretty lonely road to date. It’s hard for it to feel like a movement, rather than just a growing trend of ever more disconnected data points.

I think part of that was the framing trap License Zero fell into. Depending on how it’s presented, it can feel like dividing software developers into castes: those who sell and those who buy. The insight underlying the short-lived “strictEq” rebranding was that every dev buying a business-use license is a potential seller of business-use licenses, too. The new deal is just. Sound financial footing is just as important for the projects I depend on as for my own projects.

That addresses the individualistic part of the story, striking out from the pernmissive-open pack. But I don’t think it addresses another key regression in the collective experience: noncommercial projects don’t allow permissionless development like permissive and copyleft projects do. There isn’t the same accretive, network-growing effect to feel a part of as with permissive or even strong-copyleft code.

You can’t take a noncommercial dep and make more noncommercial projects with it if you also want to sell commercial-use licenses. That’s a business, and therefore commercial. So you have to go buy a commercial license for the dep first. Big-picture, you might be working with that deps’ developers to make noncomm licensing more of a thing. But in lived individual experience, the more noncomm succeeds, the more often you’re across from other noncomm devs on licensing deals.

The solution isn’t just to make noncomm devs a posse, and have them give each other free passes to use each other’s work. That’s the exact opposite of the principle we’re after. But there’s nothing to stop us making follow-on development permissionless to start, subject to a requirement to pay across once money’s being made. We can charge royalties, rather than requiring a full license fee upfront. Give permission to commercialize up-front, but require payment later.

Hence the idea for the new deal outlined in table up top:

  • keep giving folks who can’t or shouldn’t pay free use
  • keep allowing free trials, since that’s good business and is going to happen whether we allow it or not, putting the code out there
  • keep requiring big commercial and proprietary users to buy licenses
  • but carve out a special deal for other devs doing the same kind of business, which lets them use, build on, and distribute without asking permission first, so long as they pay if and when they make money

The hardest part of implementing that deal in license terms is going to be the mechanisms for determining pricing and terms that fellow indies can rely on. But we’ve got quite a lot of learning from Big Time and XLC to draw on there.

But more generally:

  • Does this approach make sense as a movement-building tool?

  • Does Pay when Paid make sense for all categories of uses—tool, distributed, and service?

Agreed.

I’m not terribly worried about that one, though.
I see things moving in the right direction, with dissatisfaction with the status quo growing on its own.
I think it matters more to be well positioned to take advantage of that trend, than to worry about how to instigate dissatisfaction further.
The current system is broken, and people are coming to that realization regardless of whether we proselytize or not.

I don’t think that has to be the case.
I’m a fan of saying: if you’re a library/component developer, you can use my non-comm library however you want, and if someone uses your code (and thus, transitively, mine), they are the ones who need to pay.
Library makers get to re-use each others’ code cost-free because “the end user” (i.e. some company) will be the one footing the bill.

Treat that the same way you treat an Indie Project (i.e. Pay when Paid).

Royalties sounds great.

That’s in the vicinity of what I’m been thinking about.
I don’t care about charging devs; I care about charging people making bank and not contributing back into the commons (whether code or $$$).
I say: let devs re-use whatever you write for free (so long as they’re not making money directly), and then calculate the fee for all the non-comm deps and charge the end user who is making money.
If a dev makes a product, charge them.
If a dev makes a library (that depends on yours), charge whoever uses their libraries.
Devs don’t have to pay one another, unless they make a product which is not itself a component/library.

I’m sufficiently out of tune with most people that I don’t know if that will overcome the resistant many show.
However, I’m of the belief that patience is the best form of persuasion.
FOSS is the status-quo with overwhelming mind-share, but it seems to me that things are changing.
I don’t know when we’ll reach the tipping point, but I think when we have a viable method to implement a post-FOSS world, and we have enough projects that have successfully adopted it and shown that it’s viable, it’s only a matter of time until we get rapid adoption.
We’re basically telling people: you can get all the benefits of FOSS, but without the drawbacks.
The way I see it, it’s only cultural inertia which stands in our way, and that wall is already showing cracks.

I think Pay Upfront works better if you can promise support (and perhaps other perks) as part of the package, and Pay when Paid can work for the scrappy startup/project which can get by with just code and documentation and can afford all the nice stuff later when the $$$ rolls in.
I don’t think the use that will be given to the software should determine how you charge for it, but rather the status of the company/project.
Each model can be ideal for a different company, depending on how deep their pockets are.

1 Like

Really appreciate your thoughts!

“This takes time” has certainly crossed my mind. I was grateful to read it again. And I do see signs of both a broader awakening and an evolving attitude toward paying models. This feels especially connected to how often developers are getting exposed to a broader spectrum of models when it comes to other kinds of content online, from videos to board games and live streams.

At the same time, it does seem to take a certain level of spunk—or long-steeped disillusion—to make the jump from “MIT All the things!” to “I do good work. Pay me accordingly.” A lot of folks coming to that point are also pretty burned out. They aren’t necessarily born or awakened entrepreneurial types. They’re kind of getting forced, often on their way to “giving in”, taking a job, and giving up on public hacking so much.

I’d like to catch people earlier. I’d like to catch people before they’ve gotten singed. I suspect stronger social support could help there a lot.

1 Like

Here’s a draft of a license implementing the ideas brought up here. This was actually much easier to get down than I expected.

The key sections are “Indie Projects” and “End of Life”. End of Life implements an automatic fallback to permissive licensing if the developer stops offering commercial-use licenses. “Indie Projects” defines “indie project” for all kinds of creative work, not just software, and gives them free pass until they reach $15,000 lifetime revenue.

I didn’t actually see a need to go into guaranteeing paid licenses on published terms or pricing, because of the way those two sections work together. If a project goes permissive, indie projects obviously don’t need to buy licenses. Until then, potential indie-project users can look and see what they’re offering. The untrapped risk is a timeline like this:

  • Indie Project A offers licenses for $10.
  • Indie Project B adopts Project A.
  • Indie Project A ups pricing to $100,000.
  • Indie Project B crosses the $15k threshold, and has to buy a license.

But the incentive this creates is that Project B wants to buy a long-term license for Project A as soon as possible, to lock it in. If they’ve got the resources, that’s exactly what we want them to do.

Draft License

Indie Code License Development Draft

Project: {{name}}, {{description}}

Website: {{permalink}}

Purpose

These terms let you use and share this software for free for noncommercial purposes, short commercial trials, and fledgling fellow indie projects. These terms also require you to give the developer credit.

Acceptance

To receive a license under these terms, you have to agree to their rules. Those rules are both obligations to the developer and conditions to your license. Don’t do anything with the software against any rule you can’t or won’t follow.

Noncommercial

You may use the software for noncommercial purposes for free.

Personal use for research, experiment, and testing for the benefit of public knowledge, personal study, private entertainment, hobby projects, amateur pursuits, or religious observance, without any anticipated commercial application, counts as use for a noncommercial purpose.

Use by any charitable organization, educational institution, public research organization, public safety or health organization, environmental protection organization, or government institution to advance its institutional mission counts as use for a noncommercial purpose.

Kids’ Projects

You may use this software for free if you are below the legal age of adulthood where you live, usually eighteen years, or an adult helping a child with a project.

If you start using the software on a project as a child, you and adults helping you can keep using the software for free on that project for an extra year after you become an adult.

Commercial Trials

You may use the software for free for brief trial periods to verify that the software works as described, such as by running on test data or integrating with a test system. You may not try the software on production systems or distribute the software to customers.

Indie Projects

You may use the software for any fellow indie project for free until that project reaches $15,000 in lifetime revenue, and then for an additional 60 calendar days.

The dollar figure is United States dollars as of 2020. Adjust it for inflation according to the United States Bureau of Labor Statistics’ consumer price index for all urban consumers, United States city average, for all items, not seasonally adjusted, with 1982–1984=100 reference base.

An indie project:

  1. may be software or another kind of work covered by intellectual property

  2. is published online in the best form for reuse and making changes, such as source code or other original source files

  3. is licensed to everyone to use for free for noncommercial purposes

  4. is available to use for commercial purposes for a fee or other compensation

  5. may define or clarify “noncommercial purposes” somewhat differently from these terms

End of Life

If the developer stops offering commercial-use licenses for sale via the website for 90 calendar days in a row, or publishes an announcement on their website that they will no longer offer commercial-use licenses, you can use the software for free for any purpose, under your choice of these terms or those of the Blue Oak Model License 1.0.0.

Terms with Copies

Make sure that everyone who gets a copy of any part of the software from you, with or without changes, also gets these terms.

Give Credit

Give the software and the developer credit for contributing to projects on which you use the software, so that others can freely and readily find a written notice identifying the software and the developer, by name, as contributing to your project. If the developer is a company, use the company name. Do not do anything to stop others from seeing, sharing, or using credits.

If widespread convention dictates a particular way to give credit for your kind of project, such as by end credit for a film, citation for an academic paper, acknowledgment for a book, or billing for a show, follow that convention. For software provided to users to run on their own computers, give credit in documentation, notice files, and any “about” page or screen. For software run as as a web service for users to access remotely, give credit in a credits.txt file according to https://creditstxt.com.

If the developer provides their name along with the software in a conventional way, such as in software package metadata or on an “about” page or screen, credit that name. If the developer doesn’t provide their name that way, investigate the website for the name to credit. If the developer doesn’t provide a name in either of those ways, you don’t have to do independent research to find a developer name to credit.

On written request from the developer, remove their name, the name of this software, or both, as they ask, from credits for your project going forward.

Excuse

You’re excused for unknowingly breaking Terms with Copies or Give Credit if you take all practical steps to comply within thirty days of learning you broke the rule.

Copyright

The developer licenses you to do everything with the software that would otherwise infringe their copyright in it for any purpose allowed by these terms.

Patent

The developer licenses you to do everything with the software that would otherwise infringe any patent claims they can license or become able to license, for any purpose allowed by these terms.

Patent Defense

If you claim that this or any other software offered under these terms infringes or contributes to infringement of any patent, your license ends immediately. If an organization you work for makes such a claim, your license ends immediately for work for that organization.

This section covers claims against software offered under this version of these terms or any later version by the same title published by Artless Devices LLC or its appointed successor.

Reliability

The developer cannot revoke your license.

No Liability

As far as the law allows, the software comes as is, without any warranty or condition, and the developer will not be liable to anyone for any damages related to the software or these terms, under any kind of legal claim.

After a night’s sleep, I’m struck by how similar this really is to Big Time. Big Time gives a free pass to small businesses, defined by headcount, revenue, and capital. This new license gives a free pass to indie projects, basically a subset of small businesses that are even smaller and running a specific business model.

I love this phrase. Yes it makes sense across all categories.

But yes perhaps this is similar to Big Time. I think the intent and phrasing here is great.

1 Like

I am sympathetic to this, I use a Propserity waiver to waive “indie projects”, and in theory would prefer a license designed to do that over cobbling licenses together.

In practice, three problems would keep me from adopting it:

Adjust it for inflation according to the United States Bureau of Labor Statistics’ consumer price index for all urban consumers, United States city average, for all items, not seasonally adjusted, with 1982–1984=100 reference base.

Neither I nor affected users will ever know what this number is. I won’t because it’s not worth bothering to find out, they won’t because they’re running an indie project without an accountant.

is published online in the best form for reuse and making changes, such as source code or other original source files

I get it, and GNU pioneered it, but there are a lot of “programming cultures” out there and some are less friendly to this. Some projects use my code among other middleware and can’t redistribute the middleware, some projects have an artistic vision and resist letting anyone make modifications, some projects wouldn’t be viable if their code was open due to end user piracy…

I am empathetic to the political angle but practically, it is not something I’d apply in a blanket fashion to my projects.

is licensed to everyone to use for free for noncommercial purposes

also varies a lot. For example, I’d argue that an indie game from a 2-person team is the textbook definition of an “indie project”. And yet the entire business model revolves around charging people to play their game for noncommercial purposes. (Who would buy a game for commercial purposes?)

I really need to find a better way to point out, in the terms, that the language about inflation adjustment is just the standard spec for “do the standard inflation adjustment”. So standard, in fact, that BLS itself publishes an online inflation calculator using that method.

I think this aspect is trying to do too much work. Accounting exceptions, transfers, mergers and acquisitions, extraordinary items and so forth all conspire to undermine adoption, monitoring and enforcement.

I get it’s intended to create a finer mesh to catch all the odd shaped corporations out there, but I am wondering if up to date business data justifies it.

US Business Census Data (2007)

The average business generates $1.1 million in sales, has just over 4 employees and pays an average compensation of $41,000.

When firms without employees are excluded, average sales per firm rises to about $5 million and average number of employees per business is about 20.

Average sales range from $96K to over $25.1 million but average employment only varies from 0.7 employees per business to 107.

About 80 percent of businesses without employees (sole traders) account for just 3 percent of sales.

Firms with employees are obviously much more important than sole traders and so a basic parameter of headcount I think would be strong enough to capture the uses you are likely to be most interested in?

My punt would be to start turning the screw at about anywhere between five and twenty seats?