I have a query regarding the GPLv3 license of NodeBB and commercializing my final product



  • Hi,

    I am a novice web developer and currently still in the process of improving my skills. I want to develop a project that I want to hopefully commercialize later. I am interested in using NodeBB(Open-source option) as the forum for my larger project.

    1. If I incorporate NodeBB into my project, would I have to open-source my entire project or just the derivatives of NodeBB that I use?

    2. Am I allowed to commercialize my project while using NodeBB? Are there any restrictions imposed on the user that I need to be aware of?

    3. Does NodeBB offer a more permissive licensing option for a one-time fee to individuals and startups? (I would be self-hosting)

    Thank you.


  • Global Moderator

    IANAL this is my interpretation of the GPL. There are probably better summaries if you search for them.

    1. You'd only have the open-source any modifications you make to the code of NodeBB core that is licensed under the GPL.

    2. You're allowed to sell your product as long as you obey the terms in the GPL, including the above.

    3. I believe so. Contact sales@nodebb.org for licensing information.


  • Community Rep

    @boson_96 said in I have a query regarding the GPLv3 license of NodeBB and commercializing my final product:

    Am I allowed to commercialize my project while using NodeBB? Are there any restrictions imposed on the user that I need to be aware of?

    Of course, the GPL is specifically to allow and promote the commercialization of derivative works. Think about Red Hat Linux, Ubuntu, Fedora, and other products that are GPL'd, but that you can buy, and that are not the originators of the GPL'd code (or all of it.)

    There are no user restrictions, that is also a key feature of the GPL.


  • Community Rep

    @boson_96 said in I have a query regarding the GPLv3 license of NodeBB and commercializing my final product:

    Does NodeBB offer a more permissive licensing option for a one-time fee to individuals and startups? (I would be self-hosting)

    No, they cannot. Because the GPL is as permissive as it possible already in that scenario. It's impossible for any license to be more permissive in the scenario where you are self-hosting.

    The first restrictions, of any type, on hosting come only with an Affero license, which is not the case here. So you are completely unrestricted when it comes to self hosted.


  • Community Rep

    @boson_96 said in I have a query regarding the GPLv3 license of NodeBB and commercializing my final product:

    If I incorporate NodeBB into my project, would I have to open-source my entire project or just the derivatives of NodeBB that I use?

    Neither. What "you use" is not impacted by the GPL. What you "distribute" is when the GPL comes into effect. So you can modify the code however you like, as long as you never redistribute it, without any restrictions.

    If you redistribute (commercialization is irrelevant, free or paid isn't a factor under the GPL) then any coupled code that you have is also under the GPLv3. Anything uncoupled (like via an API) can be licensed as you see fit.


  • Community Rep



  • @scottalanmiller Thanks for your detailed response. I have a few more queries if you could please help me with those too:

    1. What exactly is considered 'distribution' in the case of GPL v3? My project would be an online marketplace and I want to use NodeBB as the community forum for my platform. Would making my NodeBB-based forum available to customers of my website be considered 'distribution'?

    2. Since the customers would already have an account with my overall website and they would use the forum without logging out, would that mean that my website is 'coupled' with NodeBB?


  • Community Rep

    @boson_96 said in I have a query regarding the GPLv3 license of NodeBB and commercializing my final product:

    What exactly is considered 'distribution' in the case of GPL v3?

    Exactly what it sounds like... when the product is distributed. If you distribute something, someone gets a copy of it. For example, if you have a pamphlet and you distribute it, it means someone else has taken physical possession of a copy of it.


  • Community Rep

    @boson_96 said in I have a query regarding the GPLv3 license of NodeBB and commercializing my final product:

    Would making my NodeBB-based forum available to customers of my website be considered 'distribution'?

    No, because there is no distribution. That's use, which is very different. No one has gotten a copy, in any form, of the product in your example.

    It's not someone trying to play linguistic tricks. It's very down to earth. Running software yourself, or giving someone else a copy of software to run however they want, are very different activities. Use vs. distribution.


  • Community Rep

    @boson_96 said in I have a query regarding the GPLv3 license of NodeBB and commercializing my final product:

    Since the customers would already have an account with my overall website and they would use the forum without logging out, would that mean that my website is 'coupled' with NodeBB?

    No. Coupled means that the code (of which there is none in this case) cannot be used without the GPL'd code.


  • Community Rep

    Think about this in practical, extreme terms. Linux is GPL'd. Android is Linux. The things that you are concerned about would mean that someone looking over your shoulder on a train and reading your screen would violate the GPL. Obviously, that isn't true.

    And think about your OS. Thousands of pieces of software under GPL and similar licenses will be also running to make all of this possible. Linux, the database, the NodeJS system, libraries, proxies, caches, web servers, etc. You are able to use all of those because they are under the GPL.

    The things that you are concerned about would make every user, of every computer, phone, microwave, etc. have to go out and acquire a license to use everyday items. It wouldn't make any sense.

    GPL has literally zero restrictions on use. None whatsoever.



  • @scottalanmiller I am just concerned about its 'virality' clause. That if for some reason my program is considered to be distributed, I would have to open source the entirety of it.

    1. I have read that if the server sends javascript to the user's browser, that is considered 'distribution' under GPL. Is that true?

    2. Would the manifests and service workers of progressive web apps be considered distribution? Since they store a little bit of cached data on the user device itself?


  • Community Rep

    @boson_96 said in I have a query regarding the GPLv3 license of NodeBB and commercializing my final product:

    I am just concerned about its 'virality' clause. That if for some reason my program is considered to be distributed, I would have to open source the entirety of it.

    Of course, but that's a reference to distribution, not running, software. Remember, this is the most well known and most used license on the planet with literally billions of users using it daily without problems.


  • Community Rep

    @boson_96 said in I have a query regarding the GPLv3 license of NodeBB and commercializing my final product:

    I have read that if the server sends javascript to the user's browser, that is considered 'distribution' under GPL. Is that true?

    It is, yes. But what goes to the browser is already visible source and, by definition, loosely coupled to the server back side. If your concern is that people will be able to read and use your JavaScript, you are already out of luck because JS is sent "open" to the browser and there is very little that you can do to control it because it's a pushed distribution.

    So if you are trying to lock down the GUI piece of code, you are already conceptually in a problematic position. And no license is going to protect you.

    If you are concerned about the code showing the information in the browser somehow making server side code be forcibly open sources, you are not understanding coupling. In browser code cannot be tightly coupled to server code. HTTP is an API call between them guaranteeing that there is no coupling.


  • Community Rep

    @boson_96 said in I have a query regarding the GPLv3 license of NodeBB and commercializing my final product:

    Would the manifests and service workers of progressive web apps be considered distribution? Since they store a little bit of cached data on the user device itself?

    Where data is stored is not relevant. The code you put onto the end user's device, being part of a web page, will need to be GPL'd, but like any other part of a web page, this doesn't change the licensing on the server side.


  • Community Rep

    Think of it another way, WordPress is GPL'd. If you run WordPress on IIS on Windows, it doesn't cause Windows or IIS to become open source. They are not tightly coupled, they don't have intermingled code. They aren't codependent.

    The GPL is extremely simple to follow. It's really all common sense based on the goals. The idea is that you can use the software anyway that you want to with no negatives or concerns. You can modify and learn from the software all that you want to, no limits or concerns.

    You only have to GPL your own code when you've created a derivative work AND distribute that work to people (not use it, distribute it.)


  • Community Rep

    In terms of code, what's running in a web browser is a separate piece of code from what is running on the server. The two are independent. They might be made by the same person, at the same time, meant to work together, but they are independent. Each one is a different code base, different application, running on different machines. They talk to each other through a communications API (using HTTP in most cases.)

    What goes out to the browser is getting distributed and is always open (meaning readable by the end user.) You cannot have secrets in that code, because it is not compiled or secret, it's wide open and always visible. So while you can have different licenses involved, you can't keep anything there secret. So that GPL can be viral in that code base should never have an impact on you and no one in the real world cares about it.

    On the server side, you have different code. Likely in a different language, runtime, and likely even architecture. That code is never distributed because it's not display code.

    If you think of it in terms of ancient client/server apps from the 1980s... if you have data in a database and you make apps that run on desktops that talk to it, and you license those apps under the GPL, that would never imply that because they talked to the database that that database is now GPL'd too.

    If the GPL worked that way, you'd have problems because you'd have a situation where end users, buying software with never having seen code or even knowing what it was, would be forcibly making every product on earth GPL'd by nature of installing them and using them together. It just can't work that way or else installing LibreOffice on Windows would make Windows GPL'd.


  • Community Rep

    @boson_96 said in I have a query regarding the GPLv3 license of NodeBB and commercializing my final product:

    I am interested in using NodeBB(Open-source option) as the forum for my larger project.

    If I incorporate NodeBB into my project, would I have to open-source my entire project or just the derivatives of NodeBB that I use?

    Let's go back to this. This can mean multiple things. I have lots of projects that use NodeBB as their forum, but that doesn't tie them together. Are you planning to actually use NodeBB inside or as a base for your larger application? I don't want to pry into what kind of application you are trying to build but, this feels like a really weird way to approach application design unless you are trying to build a competing forum product.



  • @scottalanmiller Thanks for all your help, you have cleared a lot of my doubts.

    Are you planning to actually use NodeBB inside or as a base for your larger application?

    The main product would be a marketplace platform where users would buy and sell services. Since they would be logged into the website, I also want a forum for them to interact with each other and have discussions. Based on how helpful they are to other users, they will accumulate karma/reputation. That karma would in turn be shown alongside their service listings on the platform, which will help them gain new customers for their services. Would such a system require the forum to be 'coupled' with the rest of the program?


  • Community Rep

    @boson_96 said in I have a query regarding the GPLv3 license of NodeBB and commercializing my final product:

    @scottalanmiller Thanks for all your help, you have cleared a lot of my doubts.

    Are you planning to actually use NodeBB inside or as a base for your larger application?

    The main product would be a marketplace platform where users would buy and sell services. Since they would be logged into the website, I also want a forum for them to interact with each other and have discussions. Based on how helpful they are to other users, they will accumulate karma/reputation. That karma would in turn be shown alongside their service listings on the platform, which will help them gain new customers for their services. Would such a system require the forum to be 'coupled' with the rest of the program?

    It would not. You could couple it, of course, but there's no need to and it would not be natural to. If you do things like communicating through files, sockets, networking, or databases that's not coupling.

    The natural ways to handle this would be to have either NodeBB authenticate users by calling your new system's API or vice versa. That's just the same as being any end user, you don't even have to modify code.

    Unless you are trying to build the marketplace on top of nodeBB, which feels quite awkward as an approach, NodeBB and your marketplace will be two applications that run side by side and share some data. This is totally normal and you aren't the only one using NodeBB as a forum for a product where there is some data passing back and forth.

    Any easy way to think of it is... when you open up your IDE, are you forking NodeBB to make your marketplace? Or are you building your own software, and running NodeBB as well?

    And even if you are writing both in the same language, with the same tools, and put the files in the same repo, that doesn't make it coupled. It's just that unless you are, you can be quite confident that they are not.


Log in to reply
 

Suggested Topics

  • 3
  • 5
  • 18
  • 2
  • 33
| |