Skip to content
Josh Blum edited this page Jan 5, 2018 · 3 revisions

The following is a guide to contributors to encourage a semblance of order.

The top level pothos repository contains the framework library and submodules for the core tookits (blocks, gui, widgets...) Use the top level repository for framework development and clone the appropriate submodule for toolkit development.

The top level issue tracker is used for framework library or "high level" issues. Issues for an individual component can be found in that component's issue tracker. Please use the correct repository to create and comment on issues.

The main Pothos library and most components are available under the Boost Software License (BSL) 1.0. In order to keep it that way, please be conscience of the licensing of external dependencies and code snippets. Copy-left licenses are are only appropriate for component plugin modules, not for the core framework. Permissive licences are preferable to maximize the utility of Pothos for others.

Pothos follows the same copyright model as the Boost project. If you wrote a significant amount of code, anything more than a simple patch or bugfix, append your name, or the name of your organization to the top of the files in question. Proper code attribution signifies the copyright holder's intention to publish the contributions under the specified licensing, usually indicated by the "SPDX-License-Identifier".

The overall goal is to minimize the number of external dependencies required by the core framework. We would like to keep Pothos as easy to install as possible, even if some components may be a pain to install. Therefore, a new dependency is usually a cause for a new component repository. This avoids burdening an existing repository with new dependencies.

Be creative with the plugin registry: If you think a dependency is required to implement a feature in the core library, you can probably add to the API, however the implementation will call into an optional plugin. The optional plugin contains all of the interfacing with the new dependency. Users that dont have the dependency, dont get the feature.