License and Philosophy#

Philote is licensed under the Apache 2 license:

Copyright 2022-2024 Christopher A. Lupp

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

The rest of this page aims to give some context why the Apache license was chosen and what ramifications it has.

Note

I am not an intellectual property lawyer (or any type of lawyer, for that matter). I have tried to put down my interpretations of how Philote’s licensing influences decision making in the context of a larger MDO problem. These should be viewed as commentary and my interpretation; under no circumstances should the following sections be viewed as legal advice. The only thing I can say with legal certainty is that Philote is licensed under the Apache 2 license. If you have have questions or concerns regarind intellectual property, please talk to a qualified legal professional.

Philosophy#

Licensing is an important topic in software, especially for tools that are meant to be used within larger frameworks. Because licensing can be a reason for or against using a piece of software, this section provides a brief overview of the license governing the use of Philote and why this particular license was chosen.

Philote is licensed under the Apache version 2 open-source license. This enables Philote to be used freely, without concerns about copyleft (viral) licensing. While copyleft licenses serve a purpose, in this case, they could stand in the way of adoption of Philote. For example, a proprietary vendor would almost certainly refuse to use Philote if it forced them to distributed their software as open source. At the same time, the Apache license also is a very permissive license that allows you to use Philote in proprietary (commonly referred to as closed source) software.

Ramifications of Using Philote on Licensing#

As mentioned, the Apache 2 license is a pretty permissive, so using Philote within proprietary software does not affect that software’s licensing outside of the requirement to reproduce the above license notice (only within the licensed work, i.e., Philote source). Furthermore, the Apache 2 license is also compatible with the GNU Public License version 3 (GPL 3), probably the most widely used copyleft license, so GPL3 analyses can still be accessed using Philote.

In fact, GPL 3 licensed disciplines are an interesting case that merit discussion. In a monolithic MDO framework, such as OpenMDAO, using a GPL3 code in the context of an optimization problem will require all other licensed software to be GPL compatible (in the event that the problem is distributed to another party). Furthermore, the entire setup script (OpenMDAO is written in Python) must be licensed under the GPL3 (hence the term viral licensing). This might not always be a problem, but could pose challenges if the optimization problem must be shared across organizational boundaries (i.e., sharing with another company), as no proprietary license could be applied at that point.

Using Philote actually alleviates this last case. Because the source code of the GPL 3 software never is combined with others (other than Philote) to create a derivative work. This is true, as the GPL 3 does not affect network communications. As such, the remaining software used in the optimization does not need to be GPL compatible and the optimization problem itself does not automatically need to be licensed under the GPL 3. As you can see, this decentralized approach to MDO has more than just positive technical ramifications. While this is true for GPL 3, please keep in mind that other licenses (such as the AGPL), have other stipulations for which the above is not true.