DEV Community

Cover image for 🔥Must Notes When Using Open Sources 🧩
Truong Phung
Truong Phung

Posted on • Edited on

🔥Must Notes When Using Open Sources 🧩

1. It's about licensing

When building new applications, services that take avantage from Open Source. One of the most important things we must take care of is Licenses, especially when we build closed-source, proprietary apps.

Let's take an example. Assuming that we're trying to chose a suitable RDMBS for our new service. Among potential choises, some prominent ones could be MySQL and PostgreSQL. Considering their Licensing, we got following notes.

  1. MySQL license

    • MySQL is free for commercial use under the - GNU General Public License (GPL). This means you can use, modify, and distribute MySQL for free as long as your application is also - open-source* and complies with the GPL license terms.
    • However, if you want to integrate MySQL into a closed-source or proprietary application, you might need a commercial license from Oracle (the company that owns MySQL) to avoid the obligations of the GPL, such as releasing your source code.
    • In summary, with MySQL we can only use it free when we open-source our dependent project, otherwise we must have a license from Oracle
  2. PostgreSQL license

    • PostgreSQL is free for use in closed-source applications. It is released under the PostgreSQL License, which is very similar to the MIT License. This means:
    • You can use, modify, and distribute PostgreSQL without paying any fees.
    • You can include PostgreSQL as part of a proprietary, closed-source application without the need to release your application's source code.
    • The license does not require you to open-source your software if you use PostgreSQL as part of it.
    • PostgreSQL is considered a permissive open-source database, making it an excellent choice for both open-source and proprietary software.

2. Some of common software licenses

Here are some of the most common software licenses, including both open-source and commercial licenses:

  1. MIT License

    • Type: Permissive
    • Key Features: Allows users to use, copy, modify, merge, publish, distribute, sublicense, and sell copies of the software.
    • Restrictions: Requires attribution (i.e., keep the original license and copyright notice).
  2. GNU General Public License (GPL)

    • Type: Copyleft
    • Key Features: Users can use, modify, and distribute software under the same license.
    • Restrictions: Requires derivative works to be licensed under the same GPL license. Users must make the source code available if they distribute the software.
  3. Apache License 2.0

    • Type: Permissive
    • Key Features: Allows users to use, modify, and distribute the software, with explicit grants of patent rights.
    • Restrictions: Requires attribution and a copy of the license, as well as notice of any modifications.
  4. BSD License (2-Clause and 3-Clause)

    • Type: Permissive
    • Key Features: Allows users to use, modify, and distribute the software.
    • Restrictions: Requires attribution. The 3-clause BSD license also includes a clause that prohibits using the name of the project or contributors for promotion.
  5. Mozilla Public License (MPL) 2.0

    • Type: Weak Copyleft
    • Key Features: Allows users to use, modify, and distribute the software, but modifications to MPL-covered code must be made available under the same license.
    • Restrictions: Source code changes must be shared under MPL, but can be combined with other proprietary or permissively-licensed code.
  6. Creative Commons Licenses (CC0, BY, BY-SA)

    • Type: Varies (public domain, permissive, copyleft)
    • Key Features: More often used for creative works like documentation or images rather than software. CC0 is a public domain dedication, while BY requires attribution.
    • Restrictions: Varies based on the license type; BY-SA requires derivative works to use the same license.
  7. Eclipse Public License (EPL)

    • Type: Weak Copyleft
    • Key Features: Similar to the MPL, it allows for usage, modification, and distribution but requires modified files to remain under EPL.
    • Restrictions: Modifications must be open source if distributed, but can be combined with proprietary software.
  8. Proprietary Licenses

    • Examples: Microsoft Software License, Adobe End User License Agreement (EULA)
    • Type: Commercial/Proprietary
    • Key Features: Allows use of the software under specific conditions defined by the company.
    • Restrictions: Users cannot modify, distribute, or sometimes even inspect the software's source code.
  9. Public Domain (e.g., Unlicense, CC0)

    • Type: Public domain dedication
    • Key Features: Puts software into the public domain, allowing anyone to use, modify, or distribute without restrictions.
    • Restrictions: None, but not suitable for projects requiring some level of protection or attribution.
  10. GNU Lesser General Public License (LGPL)

    • Type: Weak Copyleft
    • Key Features: Allows software to be linked to proprietary software, as long as modifications to the LGPL-licensed component itself are open-sourced.
    • Restrictions: Requires modifications to the LGPL library to be made available, but allows linking with closed-source software.

These licenses differ in how they handle distribution, modification, and attribution requirements, offering varying levels of freedom and restrictions.

3. Licenses for closed-source, proprietary apps.

For a closed-source, proprietary app, licenses that do not require you to disclose your source code are suitable. Some common licenses for this purpose include:

  1. MIT License: While primarily used for open-source projects, it allows others to use, modify, and distribute the software freely, even in proprietary applications, without having to disclose their source code.

  2. Apache License 2.0: Similar to the MIT license, it allows for use in closed-source projects, with additional patent protection. It does not require the distribution of the source code.

Otherwise you would have to pay for one of following licences.

  1. Proprietary License: You can purchase a proprietary license from vendors like Oracle (for MySQL), which allows you to use their software in a closed-source manner.

  2. Commercial License: Many companies offer commercial licenses that explicitly permit closed-source use and may include additional support or features.

If you found this helpful, let me know by leaving a 👍 or a comment!, or if you think this post could help someone, feel free to share it! Thank you very much! 😃

Top comments (0)