Library Structure - Each library fits a specific category based on its purpose. - Reasoning: - Reduces dependencies by ensuring that libraries can be removed where custom functionality must be defined. - Simplifies application through code and dependency reduction. - Reduces hard drive space requirements through smaller libraries and library removal. - The categories are as follows: - Standards - Defines the standards that all other libraries follow. Intended to be used across multiple applications and to facilitate communication between applications. - Contains the following: - Interfaces - Delegates - Does not contain implementations (no classes, method definitions, etc.). - Depends only on other Standards libraries. - Named "Chernobyl.*" where the "*" is the base name of the functionality. - Likely to be reused over many applications. - Implementation - Defines an implementation of the standards library. - Contains the following: - Interface concretions (classes, structs, etc.). - Methods definitions to be supplied where delegates are expected. - Named "Chernobyl.*.Concrete" where the "*" is the base name of the functionality and ""Chernobyl.*" is the Standard library that the Implementation library is defining the implementation for. - Likely to be reused but additional implementations are also likely. - Extensions - Extension and utility methods that extend the interfaces/delegates. - Depends only on "Standards" libraries. - Named "Chernobyl.*.Extensions" where the "*" is the base name of the functionality and ""Chernobyl.*" is the Standard library that the Extension library is defining the extensions for. - Likely to be reused over many applications. - Configuration - Defines the services available in that configuration. - Defines the setup of one or more implementations. - May depend on any set of libraries. - May be replaced by config files (XML, ini, etc.) and scripts (.lua, .cs, etc.). - Named "Chernobyl.*.Config" where the "*" is the base name of the functionality and ""Chernobyl.*" is the Standard library that the Configuration library is defining the configuration for. - Unlikely to be reused between applications though some common configurations will likely be reused.