# Developers Guide

The VEEOS Library is designed is built using a fairly set structure that allows for great flexibility but also good usability. For the developer there are a number of procedures needed to make operation seamless for the end user. This guide provides details for those who would like to contribute to VEEOS and also may be useful for others who would like to utilize a similar structure for their own libraries.

- Principles
  - Portability
  - Generality
- Development Environment
- Directory structure
- Library Structure
- Documentation
- Build and Publish

### Portability

Since the VEEOS library is intended for usage across a wide spread of environments it is important that it be self-contained and portable as much as possible. Once one includes dependencies on OS or on external programs, portability can easily become a problem. For instance, Active X/dotNET can be problematic for an imported library since they involve references to external code which may or may not exist on the target system and may be in different locations on the target system. ActiveX/dotNET may be more suitable for standalone downloadable programs in the Contributed or Shared areas and should only be added when really needed.

Where external code is needed, one way to maintain portability is to choose small self-contained programs that can be included within VEEOS either as part of the distribution package or, if small enough, within the function/object that uses the external code. To embed binary code within VEE, see the FAQ. Note that this approach requires using standalone code.

### Generality

The most appropriate functions for this library are general purpose, small and well defined, self-contained as much as possible, portable, and potentially usable by many people. Since the library is structured for easy customization by the end user, special-purpose functions can be included as optional modules activated by end users or as new modules added directly by end users.

© 2015-2017. All Rights Reserved. Stan Bischof (stan@worldbadminton.com). Last updated 26 March 2017 12:58.