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.
-
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
-
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:
-
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).
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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:
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.
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.
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.
Commercial License: Many companies offer commercial licenses that explicitly permit closed-source use and may include additional support or features.
The above is the detailed content of Must Notes When Using Open Sources. For more information, please follow other related articles on the PHP Chinese website!

Stored procedures are precompiled SQL statements in MySQL for improving performance and simplifying complex operations. 1. Improve performance: After the first compilation, subsequent calls do not need to be recompiled. 2. Improve security: Restrict data table access through permission control. 3. Simplify complex operations: combine multiple SQL statements to simplify application layer logic.

The working principle of MySQL query cache is to store the results of SELECT query, and when the same query is executed again, the cached results are directly returned. 1) Query cache improves database reading performance and finds cached results through hash values. 2) Simple configuration, set query_cache_type and query_cache_size in MySQL configuration file. 3) Use the SQL_NO_CACHE keyword to disable the cache of specific queries. 4) In high-frequency update environments, query cache may cause performance bottlenecks and needs to be optimized for use through monitoring and adjustment of parameters.

The reasons why MySQL is widely used in various projects include: 1. High performance and scalability, supporting multiple storage engines; 2. Easy to use and maintain, simple configuration and rich tools; 3. Rich ecosystem, attracting a large number of community and third-party tool support; 4. Cross-platform support, suitable for multiple operating systems.

The steps for upgrading MySQL database include: 1. Backup the database, 2. Stop the current MySQL service, 3. Install the new version of MySQL, 4. Start the new version of MySQL service, 5. Recover the database. Compatibility issues are required during the upgrade process, and advanced tools such as PerconaToolkit can be used for testing and optimization.

MySQL backup policies include logical backup, physical backup, incremental backup, replication-based backup, and cloud backup. 1. Logical backup uses mysqldump to export database structure and data, which is suitable for small databases and version migrations. 2. Physical backups are fast and comprehensive by copying data files, but require database consistency. 3. Incremental backup uses binary logging to record changes, which is suitable for large databases. 4. Replication-based backup reduces the impact on the production system by backing up from the server. 5. Cloud backups such as AmazonRDS provide automation solutions, but costs and control need to be considered. When selecting a policy, database size, downtime tolerance, recovery time, and recovery point goals should be considered.

MySQLclusteringenhancesdatabaserobustnessandscalabilitybydistributingdataacrossmultiplenodes.ItusestheNDBenginefordatareplicationandfaulttolerance,ensuringhighavailability.Setupinvolvesconfiguringmanagement,data,andSQLnodes,withcarefulmonitoringandpe

Optimizing database schema design in MySQL can improve performance through the following steps: 1. Index optimization: Create indexes on common query columns, balancing the overhead of query and inserting updates. 2. Table structure optimization: Reduce data redundancy through normalization or anti-normalization and improve access efficiency. 3. Data type selection: Use appropriate data types, such as INT instead of VARCHAR, to reduce storage space. 4. Partitioning and sub-table: For large data volumes, use partitioning and sub-table to disperse data to improve query and maintenance efficiency.

TooptimizeMySQLperformance,followthesesteps:1)Implementproperindexingtospeedupqueries,2)UseEXPLAINtoanalyzeandoptimizequeryperformance,3)Adjustserverconfigurationsettingslikeinnodb_buffer_pool_sizeandmax_connections,4)Usepartitioningforlargetablestoi


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Linux new version
SublimeText3 Linux latest version

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),
