django-wiki / django-wiki

A wiki system with complex functionality for simple integration and a superb interface. Store your knowledge with style: Use django models.
https://demo.django-wiki.org
GNU General Public License v3.0
1.82k stars 569 forks source link

License Question #454

Closed Keilan closed 9 years ago

Keilan commented 9 years ago

Hey all,

Great work on the wiki - it was quick and easy to install and looks great out of the box. I've got a question on your GPLv3 license - does including the wiki on a commercial public facing Django site require the entire site to be open sourced? Or would it comply with the license if I only made the wiki portion of the site available and the rest remained under copyright?

benjaoming commented 9 years ago

Hi,

Thanks for the question... just, please ask these sort of questions on IRC or the mailing list!

guidelines

You can use the wiki on a public commercial site. You can also write plugins.

But if you modify the code and distribute a modified version, you have to also publicize those changes.

Best, Ben

Keilan commented 9 years ago

Thanks for the help Ben, and my apologies about posting in the wrong place.

tony commented 8 years ago

@benjaoming Why can't the question be addressed here? It directly affects developers.

Most other django projects are permissively licensed. This is one of the few exceptions I could find.

The demo looks great, unfortunately a majority of my projects can't use LGPL/GPLv2/3.

benjaoming commented 8 years ago

@tony I like GPLv3 and would wish more projects used it... this discussion is not something I want to engage in here as an issue, rather on the mailing list and IRC.

Also, why can't your projects use LGPL/GPLv2/3 ? Are you modifying code and redistributing it without disclosing the modifications? I have a hard time imagining that :)

If you bundle django-wiki into something that you redistribute, there might be an issue, but otherwise it's totally free and very permissive. E.g. you can use django-wiki on a website that you've developed for some customer. You can even modify it for that particular customer. I'm not an expert, so I can't tell the exact subtle difference between a single deployment and an actual distribution.. but you can probably find out by asking around if this is relevant for you.

tony commented 8 years ago

I like all licenses. Anyone who creates a project should be able to pick the license they think is best.

Over the years I've made other issues where I discuss GPL at length. https://github.com/urwid/urwid/issues/41#issuecomment-30979846 https://github.com/ScottDuckworth/python-anyvcs/issues/32#issuecomment-28528142

It's not about my personal taste. In many organizations we can't incorporate virally licensed code.

If you bundle django-wiki into something that you redistribute, there might be an issue, but otherwise it's totally free and very permissive.

In the GNU sense, the spirit of the GPL doesn't really apply in this context of this software, there's no binary blob since it's python. Wiki's are for users and python has fully viewable source.

As far as licenses go, MIT/BSD/Apache projects, which comprise most python projects, cannot accept GPL contributions.

0485a3f0-691a-4878-9f4e-346c61d0f0a1 Image credit: Morin et al., A Quick Guide to Software Licensing for the Scientist-Programmer, DOI: 10.1371/journal.pcbi.1002598. / https://blogs.apache.org/OOo/entry/collaboration_is_in_our_dna

The reason that, in the context of Django / Python, MIT/BSD/Apache is so ominous is there's little benefit to get from (L)GPL.

That said, GPLv2 works out well for Linux. Even then, it gets complicated, Linus doesn't approve of GPLv3.

The takeaway isn't a license isn't bad or good per se. It often depends on the context of the project. If python compiled to metal - I'd be more interested in GPL licenses since there's no certainty what's happening in binary blobs.

E.g. you can use django-wiki on a website that you've developed for some customer. You can even modify it for that particular customer.

I used drupal for a few years and tried it. I actually can tell you this analogy didn't work out well. There was concern that deploying the source code to a customer's service would be considered distribution. It ended up complicating things quite a bit for us.

benjaoming commented 8 years ago

There was concern that deploying the source code to a customer's service would be considered distribution. It ended up complicating things quite a bit for us.

I take the concern serious, and I think it's fair to dig into the problem of the blurry lines between deployment and distribution.

I guess I seek some sort of legal protection in GPL. But not a protection from someone using django-wiki in a commercial way. Rather, from someone taking advantage of open source to create a closed-source product without contributing back to the ecosystem. Same arguments as Linus uses about GPLv2. If you use django-wiki and improve it, that's great, but changes should at least be submitted back. I don't know if the TIVOisation stuff is applicable.

Btw, in the early days, I changed the license from GPLv2 to GPLv3 because of an inquiry from an interested organization. I don't think that issues raised by Linus makes the permissive licenses preferrable to GPLv3. As Linus says, "I actually think Version 3 is a fine license".

Maybe you could write a brief FAQ on the GPLv3 issues that you see, and we can put these questions and answers somewhere that people can find them so they can have typical worries resolved easily ?

tony commented 8 years ago

Rather, from someone taking advantage of open source to create a closed-source product without contributing back to the ecosystem.

Django itself is BSD. Wagtail, Django-CMS and Mezzazine are as well. Saltstack is apache2. Werkzeug, Flask, SQLAlchemy all are permissively licensed.

Sony forked FreeBSD 9 into OrbisOS for the PlayStation 4. Nothing was lost - they poured significant investment into writing their own proprietary code to compete on the market and created a great console.

Same arguments as Linus uses about GPLv2.

I contribute to a few GPL projects, the virtues of it don't apply with Django as they with compiled languages or the Linux Kernel.

Django is primarily for online platforms, Its' heavily based on customization through coding, as opposed to configuration.

In some cases, GPL is a hindrance to programmers because, 9/10 times, there's a higher up the programmer reports to in which GPL would be a show stopper:

So I could have all the sympathies the world to GPL, in many cases, it's not the programmer's choice. Some may have the fortune of finding work at a Canonical-like place or academia, but most aren't.

In the case of django-wiki, if it's intended to be used as more of a "django app" like Wagtail / Django-cms, the amount of people GPL push away probably doesn't justify the contributions given back due to the license. I'd even venture to say - in the case of node/ruby/python and other scripting languages, GPL would give you less due to people picking alternatives or writing their own solution in-house. Popular node, ruby, python projects are having no trouble keeping contributions flowing.

If you intend django-wiki to be more a full-service solution like Mediawiki, and not something to be used as an app apart of someone's django project, I could understand the choice of GPL.

benjaoming commented 8 years ago

@tony Your arguments are fair but also still abstract.. I think it would be great for this discussion if there was a specific case in which django-wiki couldn't be used. You or anyone else suffering from a concrete case would be welcome to write a private email and we can discuss whether there is a problem or not, and even the possibility of changing the license of this software. As I said earlier, this was originally GPLv2 and then changed to GPLv3 because of an inquiry about a specific case.

This is a good place to realize that open source is being take advantage of in ways that are very unsympathetic: http://gpl-violations.org/news/

luzik commented 6 years ago

By reading what you wrote here @benjaoming You misunderstanding what GPL is. If you want to protect contribution to this project you should change licence to LGPL.

My personal example: I'am writing a web app. My customer ask me to store this application internal documentation in local wiki. I didn't modify your code, just installed as django app and configured it under /wiki url, but I can't sell this app to my client because of GPL restrictions. I can install this web app on my client server only under GPL licence and I can't do this.

GPL prevents the code from being used in proprietary software LGPL Other developers can borrow and modify the code and re-distribute it as part of their own project, provided that the portion used under the LGPL is re-licensed under the LGPL. Other portions of the project are permitted have other licenses.

Please consider is a GPL really what You want for this project.

benjaoming commented 6 years ago

@luzik

You misunderstanding what GPL is.

Especially since you're using this project in a commercial setting (so supposedly you're a professional), please have the courtesy 1) not to argue this way and 2) to spend time researching and sourcing your claims.

Your example is a case where AFAIK, it's perfectly legal to distribute this application. Selling it doesn't make a difference. You are using the code as is and you are not making modifications or redistributing binary versions. I simply cannot see the problem in this.

If you consider the purpose of GPL, you will be much better guided to understand what it's supposed to protect, encourage and enforce.

benjaoming commented 6 years ago

@luzik

I can't sell this app to my client because of GPL restrictions.

Let's figure this out. I'm here to help resolve this concern.

The simple question that I have to ask is: Why do you think this?

D-link are selling routers with Linux. Dell is selling computers with full distributions of Linux containing all sorts of mixed licenses. Why can you not sell an application to a customer that contains django-wiki?

luzik commented 6 years ago
  1. Ok, You're right, I shouldn't make such statements, sorry.
  2. I do not share any source code with my clients, distributing only pyc files when using python. As GPL is mainly targeted to compiled, linked languages like C++ importing python module is the facto like linking it to another library in C world https://www.gnu.org/licenses/gpl-faq.html#IfLibraryIsGPL https://www.gnu.org/licenses/gpl-faq.html#LinkingWithGPL https://www.gnu.org/licenses/gpl-faq.html#SwitchToLGPL

Here is official state about importing: https://www.gnu.org/licenses/lgpl-java.en.html

Compare: https://choosealicense.com/licenses/

luzik commented 6 years ago

Sorry for confusing ..what I wanted to say is that I can't sell it without changing licence to GPL Using GPL'ed software and importing GPL Licensed components is totally different story. Router makers using linux, are obligated to share it's code: https://www.tp-link.com/us/support/gpl-code-center

luzik commented 6 years ago

And on the other hand look here - when you should use GPL for your python software: https://zedshaw.com/archive/why-i-algpl/

If any of this issues are close to your intentions stay with GPL. Just be aware.

benjaoming commented 6 years ago

Hi @luzik

Thanks for sharing information. And thanks for being attentive to the legality. So you are building a closed source + binary distribution and you have included a binary distribution of django-wiki in this? That's a bit extreme and quite unexpected for a Python Django application to end up like this? I have never heard of a similar use case before, and it would also concern me very much if it was common practice to accept this.

And you do not intend to share this code. So django-wiki is helping you produce commercial, closed source code. Are you sure about this direction? Have you researched options for your project to maybe not have to end up like this?

If you are sympathetic towards open source, and the people who work to produce, maintain etc a shared and common good, wouldn't you say that the way you are using it, is in fact undesirable?

People talk a lot about permissive licenses, but in this case it can easily be argued that you should try out a more permissive setup for your application distribution :P

This is an open source project and intends to encourage open source, so I will stay with this argument. Furthermore, it's a wiki, so it's also intended to be a platform which people use to share creative commons stuff.

If any of this issues are close to your intentions stay with GPL. Just be aware.

While I like the article, I disagree that it has to be my right as an author -- there are lots of contributors to (author of) django-wiki. It's just that at this point, it has always been GPL, and it's fine until someone comes a long and wants to do a binary redistribution without open sourcing the result... I do weep a tiny crocodile tear ;) But overall my say in this is definitely that it's not the type of case that should make a project change its license.

Hopefully a bit of firmness from our side can make it easier for you to tell your client or boss or whatever that the way they are organizing their IP should be made more compatible with open source.

luzik commented 6 years ago

My first contribution in big open source project started about 17 year ago. Any time I use open source (even in my commercial software) I contribute to those project if I found it can be improved somehow. Using open source in commercial projects is win-win for both, that's way python, Django and in my humble speculation 80% of python modules using licenses like BSD, MIT, Apache. But you are right and should consider others contribution into this GPL licensed project. Thank You very much for substantive discussion. Nevertheless time for switching to your project alternatives. btw ..nice try switching my company to open-source one :)

benjaoming commented 6 years ago

Using open source in commercial projects is win-win for both, that's way python, Django and in my humble speculation 80% of python modules using licenses like BSD, MIT, Apache.

I think that you are right about this, and I guess the figure is higher than 80%. But this is not a guaranteed outcome... and it needs extra efforts. Community, foundations, sponsorships etc. It is not that companies do not contribute code back per se, but they can really show gross neglect. Take for instance OpenSSL, used everywhere, allowed to fail incredibly. The people who maintained it around Heartbleed were AFAIK, just normal volunteer contributors, and I can only imagine that companies and everyone else would have been better off contributing to this project if they had been forced from the beginning.

benjaoming commented 6 years ago

btw ..nice try switching my company to open-source one :)

I was asking a question actually:

So django-wiki is helping you produce commercial, closed source code. Are you sure about this direction? Have you researched options for your project to maybe not have to end up like this?

There are lots of commercial projects that use GPL software. So I was just wondering if you actually had considered what your options are before asking others to adapt their licenses ;)