Developing emergent

From emergent
Jump to: navigation, search
Emergent Logo
Main Developer Docs
Crystal Clear app display.png Using emergent Crystal Clear app tutorials.png Developing emergent

This is the place to come to contribute to the development of emergent.

Basic How-To's

SVN Source Code Browser

This shows the latest code under Subversion (SVN), plus revision histories, etc, all within your web browser:

Main Developer Design/Coding Docs

  • Dev Intro -- introduction to development, including the following major topics:
  • Adding a new class -- how to use emergent to manage creation of a new class file (and removing, renaming classes as well)
  • taBase -- this is the main interface for most derived classes -- must understand the elements of this before you can write new code
  • maketa -- the type access system provides automatic type information about most of the objects in the system -- very important infrastructure tech for everything in emergent
  • Coding conventions -- how to format and structure your code to be consistent with the rest of the system.
  • Comment directives -- hints to the maketa type scanner that customize the appearance and function of members, methods, and classes.

Docs on Specific Technical Elements

See Design overview for a comprehensive list -- here are a few key / current things:

  • CMake -- everything about CMake and emergent's next generation build system -- hopefully you don't need to mess with this..
  • Class diagrams for a few class hierarchies
  • Publish to web design -- publishing models to the web
  • Server Protocol -- using emergent in a client / server mode through sockets
  • Plugin design -- the user-extensible dynamically-loaded plugins
  • Lists groups design -- design issues in the use of lists/groups DO NOT USE LISTS/GROUPS FOR PRIMARY USER OBJECTS! -- only for containers)
  • Program design -- design of the Program system
  • Vectorizing -- master page for vectorizing computations, including SSE, CUDA, etc
  • Thread Optimization -- optimizing code for multithreaded computation, especially on recent many-core CPU's
  • Thread Support -- design issues for support of multi-threaded code -- basic thread safety issues, etc
  • CodeCompletion -- behavior and implementation of completion of expressions and completion of other items in text fields
  • Expand design -- new expansion protocol

Development Environments

  • Build Mac Xcode - Browsing source code, stepping through code and debugging (Recommended)
  • Eclipse -- How to develop/debug Emergent using the Eclipse IDE
  • Compile_Times -- how long it takes to build the software on different platforms, for different versions.
  • Old Dev Docs -- older development docs -- historical, minor, etc.

Install and Debug Misc Issues

  • Profiling -- how to figure out where the cycles go..
  • EmergentEmacs - an emacs function that you might find useful for developing emergent

Building packages

  • Packaging for all supported operating systems.

Documentation Generation