Each software offered under the Nyx umbrella is subject to its own license. By using a given piece of software, you implicitly acknowledge that you have read, understood, and accepted the license. Importantly, all software is provided as-is without warranties of conditions of any kind. Refer to the "warranty" sections of each license.
- Nyx is provided under the free software AGPLv3 license, summarized below because it isn't as common as the two other licenses.
- ANISE is provided under the Mozilla Public license.
- Hifitime is provided under the Apache 2.0 license.
Summary of the AGPL v3 License¶
The following should not be considered legal advice. If you have questions about the APL v3 License, you should contact an attorney. Always check with the legal department of your entity prior to using any open-source software as some companies refuse to use any open-source software.
In the following, the term unmodified version corresponds to the officially released and sanctioned version of Nyx linked to from this website, nyxspace.com.
- The AGPLv3 license is a business-friendly license which protects your intellectual property and your research.
- You, as a personal or commercial entity, are allowed to sell data products created from programs that require a modified or unmodified version of Nyx without limitations.
- The license authorizes you to execute a modified version of Nyx without limitation, as long as you do not distribute the software which executes the modified version of Nyx (convey).
- If you distribute software which packages a modified or unmodified version of Nyx to third parties such that they may execute or distribute your software without your supervision or guidance, then your software must be distributed under the AGPLv3 license (propagate). In that case, if your program uses an unmodified version of Nyx, the source code of your software must be made available to those third parties who have access to your software on their explicit request at a reasonable cost. If, however, you propagate your software which uses a modified version of Nyx, then the source code of your software must be made available to public, because Nyx itself is available to the public without limitation.
- The AGPLv3 license encourages you to keep your intellectual property and only distribute/sell the data products from your program which uses Nyx. It also encourages you to share the changes you make to Nyx with the community of users of Nyx.
- If you do not abide by the terms and conditions of this license, Christopher Rabotin reserves the right to terminate your license, revoke your access to Nyx, and file a lawsuit for copyright infringement.
Keep in mind that almost no customer can maintain a value-adding program without your help, so a customer is quite unlikely to become a competitor even if they have access to the source code. Also remember that the world runs on free software: the quasi-totality of servers run GNU/Linux.
To propagate a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well.
To convey a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.
If you would like to discuss the terms of the license, please contact me at christopher [dot] rabotin [at] gmail [dot] com so I can put you in contact with a lawyer knowledgeable on open-source licenses.
The AGPLv3 license is often unfairly and negatively portrayed in industry, so let's go through a few standard questions.
Can I sell results of analyses without disclosing my code?¶
Yes, even if you use a modified version of Nyx, the output of Nyx or programs which use Nyx is not subjected to the AGPLv3 license.
I wrote a program which uses a custom version of Nyx to run large scale Monte Carlo analyses from my laptop. The project was funded by an external company and I will be providing the results of this work (but not the source code to generate the results) to that company. I do not need to release the source code to anyone.
Can I modify Nyx and keep those modifications to myself?¶
Yes, unless you allow other parties to make or receive a copy of that modified version, or of a program which requires that modified version.
Can I sell access to a program which provides analysis results?¶
Yes, and you do not need to publicly release the source if you use an unmodified version of Nyx.
I wrote a super cool cloud-based Flight Dynamics System allowing external parties to plot the status of their constellations and run collision avoidance scenarios. All of the backend work uses an unmodified version of Nyx, but the customers are not directly interacting with Nyx and only receive data products from Nyx. I do not have to release the source code of that application.
Can I sell programs which use an unmodified version of Nyx?¶
Yes, you may create and distribute (for free or for a fee) any program which runs on top of Nyx.
However, the AGPLv3 is a transitive ("viral") license, so you must release your program as AGPLv3 as well. This does not mean that you need to redistribute the code of your program at the time of distribution, it only means that you must provide the source of your program at a reasonable cost upon request by whomever has access to that plugin.
Overall, am I required to release the code developed in a private/academic/industry setting?¶
No, unless you run a modified version of Nyx and are distributing your program to third parties whose use of your program is not under your supervision.
- I wrote a program which uses a modified version of Nyx to run large scale Monte Carlo analyses from my company cloud deployment. The program will be used only within the company. I do not need to make the source code available to anyone because this is considered private use, and is therefore unrestricted.
- I wrote a program which uses an unmodified version of Nyx to run large scale Monte Carlo analyses from my company cloud deployment. The program will be available for use by external parties. I do not need to make the source code available to anyone because I am using an unmodified version of Nyx.
- I wrote a program which uses an modified version of Nyx to run large scale Monte Carlo analyses from my company cloud deployment. The program will be available for use by external parties. Because I am running a modified version, upon request by these parties, and for a reasonable cost (or free and publicly if said parties is the general public), I must make the source code of all programs and scripts required to execute the larger program available.
Results from Nyx caused my customer to crash on the Moon!¶
Oops, that's too bad, please file a bug report. Nyx is provided without warranty of any kind. That said, Nyx makes a point of being thoroughly tested and validated (arguably more than the quasi-totality of GNC software).
As per the LICENSE file which was provided to you with the program, and that you've accepted by using Nyx:
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
Additions and modifications of Nyx are encouraged! They help the astrodynamics industry as a whole. The best place to start is by forking the code, modifying it, and opening a pull/merge request. As per the license agreement, if you hold a patent to the code you add or modify, you thereby grant permission to the users of Nyx to use said patent.
- GPLv3 official FAQ
- Violations of the GNU Licenses
- AGPLv3 source distribution
- Express grant of patent rights?