|Using emergent||Developing emergent|
This is the place to come to contribute to the development of emergent.
- Build emergent
- How to write a plugin
- How to debug the source
- How to submit a patch
- Merge tracking with subversion 1.5+
- Subversion admin -- developer/admin tasks on svn repository
- Some tips and tricks for using bugzilla for developers
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
- 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
- Packaging for all supported operating systems.