Open Source Platform
for interconnected virtual worlds

Naali Dependency Policy

From Rex community wiki

Selecting Library Classes

The following is the policy regarding selection of library classes within Naali.

As Naali is an application written in C++ and Qt, preference should be made for classes that exist already within the C++ standard or within Qt:

  • When modifying an existing module, preference should be made for re-using the same classes already found within the module.
  • When adding new functionality, standard C++ or Qt should be preferred to custom-made classes, or those from other libraries such as PoCo or Boost.
  • When adding new functionality, standard C++ should be preferred to Qt classes where the functionality is comparable.
  • Objects should be QObjects where beneficial or appropriate; such as classes that act as a model which might be exposed via reflection to interested observers.
  • Objects should use Qt slots/signals and other Qt features where it is beneficial or appropriate; such as interacting with Qt GUI or other Qt utility classes.
  • Functionality from custom or outside classes that duplicate Qt functionality can be introduced with rationale why the customer or outside class is superior or necessary.

Exceptions

  • Classes which are in Boost and are likely to become standardized within C++ itself may be considered the same as "standard C++". When they become standardized, they should be migrated from boost to std name spaces.

Licensing

  • Licensing and Copyright declarations cannot be removed from 3rd-party code. If a new license is included as part of a code drop, it must be added to the root directory in version control.