Blog

FLOSS Version 2.0 – Combining GNU and Public Domain FLOSS Packages and Licenses

There are many different Free and Open-Source Software (FLOSS) packages to choose from. However, many of them are governed by different licenses. For instance, the GNU General Public License (GPL) or the Public Domain License. In this article, we will cover a couple of ways to combine FLOSS packages and licenses. GNU General Public License […]
PX
Propelex team January 24, 2023 - 4 minutes read

There are many different Free and Open-Source Software (FLOSS) packages to choose from. However, many of them are governed by different licenses. For instance, the GNU General Public License (GPL) or the Public Domain License. In this article, we will cover a couple of ways to combine FLOSS packages and licenses.

GNU General Public License (GPL)

The GNU General Public License (GPL) is a copyleft license that has four freedoms for end users. It is based on the Free Software Definition and was originally written by Richard Stallman. The Free Software Foundation is the owner of the GPL.

Although the GPL was initially designed to protect the free software community, there are problems with it. One of these is that it is very permissive. It allows for mixing of GPL software with other licenses, including classified software. This could lead to compatibility issues and license proliferation. The FSF has developed GPL-compatible licenses.

If you plan on distributing your GPL-licensed software to the public, you must provide a copy of the source code and distribute it under the same terms. Otherwise, you may be in violation of a government contract.

The GPL is designed to ensure that all components of a program are distributed under the same license. However, it also has several restrictions that limit what it does allow.

Public domain

There are some real time complexities associated with the implementation of a public domain FLOSS (Free and Open Source Software) program. One of the biggest hurdles is the requirement to comply with the license if you are going to use commercially available items. However, this can be alleviated by adopting a well thought out licensing strategy. The best way to do this is to implement a formalized internal process. For example, a company could establish a formal agreement with an external company to implement a cross-company repository to ensure consistency in the code’s quality. In addition, it would be prudent to consult legal counsel before embarking on any such endeavor. If you do so, you will be rewarded with a more agile and collaborative organization able to handle the demands of a modern enterprise.

Another good idea is to implement a formalized version control scheme if you have the budget. In this regard, a best practice would be to use a central repository that maintains a consistent set of source files, the result being a more reliable software stack. This, while not as easy to implement as one might expect, is a worthy exercise and one that will be appreciated by both stakeholders and end users alike.

Combining different FLOSS licenses

For the uninitiated, the GPL or GPL compatible is the name of the game. It is a snobfest affair, but if your ooh la la factor is high enough, the sex and the etiquette of your mates is up to par, you are likely to be the only one in your clan who doesn’t have to share a single bathroom and an un-assorted fridge. Of course, if the tee is nailed to the ceiling, it is a good time to unwind before the evening festivities ensue. During these pre-dinner hours, all you need is a good cocktail in hand. Hopefully the etiquette of your friends et al will follow suit! Lastly, there’s no need to rush home after the evening ribbing to claim the sex, unless of course your wife is not the sexiest in the universe, in which case you are out of luck.

Exporting results to a JSON document

Using FLOSS Version 2.0 to export results to a JSON document can be done in two ways. By wrapping objects in an array, or by serializing each value. Both are common methods to export multi-valued fields. However, each of these methods has their own advantages and disadvantages.

The first method, known as the “wrap” method, is a fairly simple way to export to JSON. Objects are wrapped in an array, with each object’s fields represented as doc XML attributes. The resulting file is a JSON-formatted text file. This method requires the corresponding fields_to_export attribute, which defines the columns to be exported.

Another option is to use a service operation. This allows you to create a collection of Entries and return a primitive value. Similarly, you can generate a list of key-value pairs, which you can then pass as an argument to the JSON_OBJECT function. The JSON_ARRAYAGG function is also useful. In addition to converting a single row of results into an array, it will convert the array into a single JSON string.

Work with Propelex

Ready to build AI
into your stack?

Propelex helps teams evaluate, integrate, and scale AI workflows — from MCP strategy to full agentic architecture. Let's find the right entry point for your organization.