Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

Shouldn't index.php be licensed as AFL rather that OSL? #1944

Closed
AgentConundrum opened this Issue · 9 comments

4 participants

@AgentConundrum

My understanding of the new licenses is that the core of CodeIgniter is going to be licensed under the Open Software License, which is a copyleft license, while files comprising a users application are to be licensed under the more permissive Academic Free License so that users aren't forced to share their code.

I realize that there isn't a lot in index.php that would be considered application specific, but I do think it would make more sense that this file be licensed under AFL for those settings which are intended to be user configurable.

Another option would be to split the file into two separate files, with the user configurable sections under an AFL license, and the non-user configurable sections under the OSL.

@narfbg
Owner

@derekjones I think you might want to take a look at this one.

@derekjones

tl;dr - Changing or even adding simple assignment statements would not trigger the reciprocal license requiring that you share those changes.

Slightly longer version:

User configuration settings are not significant enough pieces of code to attain copyright, so technically statements like $system_path = 'system'; are not subject to copyright, and therefore can't be licensed.

Where the license of the index.php file might be an issue is if you are making significant changes to the existing logic (e.g. improving environments handling), or adding a lot of new logic. And in that case, the license is correct, those changes should trigger reciprocity. But overall I don't think one would want to put a lot of additional logic there.

If you have a specific example in mind I'd be happy to walk through it with you, maybe you're thinking of a scenario I've not considered.

@AgentConundrum

Thanks for clarifying, Derek. I guess my confusion came from a misunderstanding of when copyright/derivative works are created. I assumed, apparently in error, that I couldn't modify the file at all without having to redistribute it.

My post was largely concerned with ensuring that anything that could be considered to be routinely changed as part of an applications development should have as permissive a license as possible. I touched on this when I suggested that the config parts of index.php be separated out entirely (e.g. replace the entire section with include startup_config.php).

As long as we're talking licensing, however, I do have some concerns about the sublicensability of AFL-3.0. In blog posts and other media, I've repeatedly seen EllisLab and/or you personally say that the AFL-licensed parts can be relicensed/sublicensed under whatever terms you choose to publish the rest of your application, but I have no idea how that can be true given the "does not contradict" portion of the derivitive works provision. That would seem to me, not being (or wanting to be) a lawyer, to say that you couldn't release these config files, error pages, etc. under, for example, an MIT of BSD license, since they don't include things like the patent provisions.

I admit, of course, that I could be seriously misunderstanding these things. It's also probably a purely academic exercise anyway, given that EllisLab isn't particularly likely to sue someone over config files and error page templates (though the latter would certainly be considered copyrightable, unlike config settings), but that sort of ambiguity would make certain people squirm.

@AgentConundrum

@derekjones Not really, since that talks entirely about the OSL where I was asking about the AFL components. Actually, it raised an extra question for me when it talked about adding the 'Powered by CodeIgniter' link in the footer, since I didn't think simply using CodeIgniter to build a website was considered a distribution.

(I fear this thread has veered off a bit from its original purpose.)

@derekjones

Sorry I thought your root question was more with respect to EllisLab's opinion on satisfying reciprocity.

So my personal understanding of AFL's "does not conflict" has to do with the Licensor's rights and remedies over the originally licensed work, i.e. you couldnt relicense the work under terms that add obligation to EllisLab or attempts to wrest our rights away that we retain by licensing under AFL. Let me do some more research on that topic, as its been awhile since I looked into it.

@AgentConundrum

For the most part, it's pretty straightforward to me:

  • stuff in the /system directory is OSL and any modifications to it need to be distributed as such.
  • stuff in the /application directory is, for the most part, the developers own stuff and can be licensed however they choose

The only two outstanding questions for me, based on my current understanding are:

  • For the few files that are licensed under AFL - grep tells me there are 20 of them - error views, config files, and the 'welcome' bits that everyone deletes anyway - am I still able to choose my own license for it, or am I limited to only a select few which have the same or greater restrictions to the AFL? Simple assignment statements might not trigger copyright, as you said, but creating your own error_* view pages certainly would be non-trivial modifications. I suppose you could probably even call them original works (i.e. not derivitive of the ones that come with CI) given how little of the originals would remain.

  • Does simply running an application on a webserver constitute a distribution? In other words, does every application which uses CI have to link back to this GitHub repo/the codeigniter.com downloads page/a locally downloadable copy of the source?

@ivantcholakov

It seems to me that index.php has too much code. Here is a specific implementation of mine:

<?php

/*
 * --------------------------------------------------------------------
 * LOAD THE IGNITION FILE
 * --------------------------------------------------------------------
 */
define('IGNITER', realpath(dirname(__FILE__).'/system/cms/libraries/core/igniter.php'));
require IGNITER;

/*
 * --------------------------------------------------------------------
 * LOAD THE BOOTSTRAP FILE
 * --------------------------------------------------------------------
 *
 * And away we go...
 */
require APPPATH.'core/MY_CodeIgniter.php';

/* End of file index.php */
/* Location: ./index.php */

A similar simple file in CodeIgniter would not cause worries about licensing. It works for me, but I am not sure whether this approach would be suitable for all the use-cases.

@ivantcholakov

If you are interested, I am able to make a demo repository to show this implementation in motion.

@narfbg narfbg closed this
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.