Þ   briarpig  » thorn  » rights


License and permissions for þ are covered on this page. This license covers C++ source code and C++ source code comments. Code in any other language syntax will use another license.

name: mu-babel

license

     This license is called the "mu-babel license", also known as the "BriarPig mu-babel license" for less potential future ambiguity.

     There's no relation to any other license. You must keep a copy of this license (this one or a plain text copy) with source copies.

copyright: always

briarpig

     You must add copyright notice atop each þ source file:

// Copyright (c) 1993-2008 BriarPig (mu-babel license)

     If only part of a file is under þ, you can qualify with "parts":

// parts Copyright (c) 1993-2008 BriarPig (mu-babel license)

     You must also disclose absence of warranty.

warranty: none

no warranty

     The software is provided "AS IS", without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.

notice: public

attribution

     You must credit BriarPig in a publically visible place:

BriarPig was here

     Only attribution is required for a total rewrite.

freedoms: few

copying

     You can copy and distribute unchanged þ copies without fee.

     You can use compiled binaries for anything you like without fee, if you attribute "BriarPig was here."

changes: private

alteration

     You can change your þ copy without fee and use it for any purpose without fee, provided your changes remain private and are never made publically visible.

     Public changes are allowed only under a "rewrites: total" clause below, where all symbols change, not just some.

names: thorn

y prefix

     Global symbols starting with "y" are part of þ's namespace. Do not change code in classes beginning with "y" and do not add new classes. A y prefix is reserved if you use þ.

     (Glyph y is an archaic substitute for þ.)

rewrites: total

derivative works

     You can completely rewrite þ in derivative works if (and only if) you change all symbol names; you must attribute "BriarPig was here" in sources and public acknowledgements:

// BriarPig was here

     But you must change all code symbols: all class and member names must change; and you must lose the y prefix. If you change all symbols, with nary a one beginning with y, you can distribute your version any way you like without fee.

     If some parts remain the same (comments for example) you'll need a BriarPig copyright notice.

clones: okay

renamed

     This license uses the term clone to describe derivative works satisfying the "rewrites: total" clause above, where all symbols are renamed. A clone works alike, with all different names and no global symbols in a namespace starting with lowercase y.

forks: conditional

clones welcome

     You can clone þ using all new names and start your own open source project, running it any way you like. Start a new clone fork and go nuts, as long as all your symbols stay disjoint, and you avoid the y namespace. You stay out of my hair, I'll stay out of yours.

docs: reserved

compose your own

     You may not version þ's docs — only source code. Write your own docs from scratch. You may not use þ's cast of characters. You may not use, rewrite, extend, or translate web page content other than C++ source code and comments.

     A rewrite can use the term thorn, but not þ.

latin1: þ

plain text

     Please write þ instead of þ in plain text character sets without the thorn glyph.

Money is not an objective of this license — it's an incentive to honor terms, since anyone can manage to use the software for free if they avoid distributing changed sources with original names.

names: unique

disjoint

     If you rewrite þ as per the "rewrites: total" clause to create a clone version you can distribute freely, you must ensure your names do not overlap at all with names in þ.

     If you succeed, you are not subject to fee described below. So you should audit names exposed carefully, with a special care to avoid global symbols starting with lowercase y.

fees: penalty

gold

     The fee mentioned below is π3 (pi cubed) troy ounces of gold, due if you distribute þ changes publically without satisfying the "rewrites: total" clause: changing all the code names and avoiding names starting with y. (Why gold? Arbitrary. Dollars sound ugly; even gold is crass. But maybe this is memorable.)

     The fee's purpose is only deterrent: you may not freely ignore a prohibition of partial change instead of total. Fee will be waived for honest mistakes quickly corrected. It might also be waived for slow remedies, as long as you fix things: no partial changes.

     Hopefully the fee will never be collected. The only desired result of this part of the license is absence of þ changes. There must be consequences for lack of cooperation; any company ignoring license conditions needs an incentive.

terms: detail

agreement

     You may only use and distribute þ under this mu-babel license by agreeing with all terms. In exchange for consideration — free use of þ and right to clone derivative works — you agree not to distribute altered þ using original names; you also agree not to use names starting with y in a clone; and you agree to pay the gold fee if partial changes are distributed and not corrected quickly.

     If you change and distribute þ but fail to meet a clone condition — all new names, none starting with y — then you agree to pay the gold fee each year this occurs; you agree to recall products using þ changes; and you agree to cease distribution of changed sources.

     There is no aim for steady revenue. No attempt to entrap folks in error will occur. The only purpose is incenting folks to eschew þ namespace pollution. Please comply with intent to keep þ free and unhindered by random forks and politics. You can avoid fee simply by using new code names; please do so.

safety: care

recommended

     To avoid publishing þ changes in error, you can simply make sure you distribute only mirrors of known old releases. Never expose actively developed code; then you'll rarely have problems.

     Alternatively, you can try the "rewrites: total" derivative works clause from day one and never risk publishing changes to originals; þ may one day include a tool simplifying this step for you. Clone early and often and breathe freely.

repositories: private

forbidden

     þ must not appear in publically visible source code control systems since they aim to manage versioning of code, and þ cannot be versioned without total renaming in a clone. If you want to "patch" þ, you should do it publically only by describing patches; turnkey automatic patches are not okay to distribute.

extensions: obvious

growth

     Over time þ will grow along fairly obvious paths, filling gaps in a matrix of features in buffers, streams, files, pipes, events, gc, memory, editing, caching, collections, etc, common to core systems. It will take a while before this þ release catches up to my past practice.

     If you clone þ and extend it, you do not have first dibs: you agree similar features added to þ later are obvious and likely unavoidable in general outline. You agree such extensions added to þ are not copies of your versions: you waive right of exclusive ownership.

     Assume features common to many dynamic languages will show up as primitives. Try not to play territory games.

contributions: tolerated

under protest

     You can suggest or boost specific additions if you don't nag, and if you assign copyright to BriarPig. I can afford a small amount of public discussion about adopting small, simple gifts, or better yet bug fixes — I'm always interested in bugs you find.

questions: answered

Q&A

     This section anticipates and answers plausible questions, but this Q&A specifies no license terms; it only explains.

     Q. Why no changes? Don't you want to maximize adoption?

     A. No. I want least hindrance despite public free distribution.

     Q. What about contributions? Don't you want help?

     A. No. Help me do what? I'm only publishing trivial parts of my normal toolbox, with a bit extra fleshed out. Would you read my mind? How else would you help publish how I like things done?

     Q. Why an open source license different from all others?

     A. Many open licenses seek managed public co-evolution. Not this one: it says "no change" unless you go your own way. Downsides of network effects (loss of control) cost me more than upsides are worth.

     Q. Gold? Are you serious?

     A. I wish I wasn't. I hate that part of the license. It's hard to imagine someone will push non-cooperation until it applies. I might distribute a safe clone anyone can change myself to minimize grief in getting license compliance. When someone is told "take forbidden partial changes down," some escalation is needed if response is continued non-compliance.