Development
From OpenCog
This page provides a short overview of software development in OpenCog.
Download, Build, & Install
- Build instructions are located here: Building OpenCog. How to download OpenCog source from Github and compile.
- A guide for users with limited Linux / AI backgrounds can be found here.
- Report build problems at the opencog mailing list.
Tutorials, User Guides, HOWTO's
- OpenCog for Noobs - Easy to follow tutorials about the basics of OpenCog.
- Cookbook - small examples and code snippets on how to perform regular tasks.
- PLN usage - the current way to use PLN within OpenCog (note that this is subject to change, but usage information will hopefully be kept up to date).
- Walkthrough - another PLN+NLP example.
- Hopfield network emulator - using attention allocation dynamics to memorize patterns.
- Tutorial Sessions 2009: with screencasts
- Setting up the Unity3D world
Getting Involved
- Information on how to Volunteer
- Read the OpenCogPrime:WikiBook, note the sections on atoms, nodes, and links.
- Check recent development updates and current goals at Discussion and GSoC 2012 Ideas Page. Visit our GSoC Page.
- Read background information at Publications; review the section System Documentation below.
- Join the IRC channel #opencog on Freenode
- OpenCogBuntu is a demo of OpenCog that can be booted from a DVD or USB stick. If you have Ubuntu already you can run the install script as explained on Building OpenCog on Ubuntu.
- You can start with some Quick tasks that need to be done, or for more ambitious there are some Not so quick tasks.
System Documentation
The AGI Summer School 2009 had lectures explaining many of the ideas in OpenCog, which are available online at http://agi-school.org. Major components of the core framework, listed in order of complexity/layering:
- AtomSpace - Overview of OpenCog's core data store.
- Atom types - List of atom types currently documented/in use
- Atomspace Visualization
- Scheme - The scheme shell/repl loop/scheme language bindings/programming interface
- Python - Python programming interface
- Web interface - RESTful web access/programming interface.
- Pattern matcher - Performing queries against the AtomSpace
- ECAN - Attention allocation
- NLP pipeline - the current state of affairs in the natural language processing pipeline.
- PLN - probabilistic reasoning.
- ComboReduct - Internal programming language to represent patterns/skills; Reduct reduces it to a normal form.
- MOSES - Meta Optimizing Semantic Evolutionary Search. Evolves programs in Combo.
- Embodiment - the Open Pet Brain, Perception Action Interface, Unity 3D, etc.
- OpenPsi (Embodiment) - Motivation & Planning
- Fishgram -- Frequent Interesting Subhypergraph Mining (greedy pattern mining for the Atomspace)
Specific subtopics can be found in various categories, such as the Category:OpenCog Developer's Guide or Category:Embodiment.
Development Guidelines & Tools
- Development standards - Code formatting and development practices
- Set-up a QT Creator Project for OpenCog
- Buildbot instructions - How to control automated builds
- File bugs at Github.
- We run a buildbot for continuous integration testing. If you have a always-on machine around you can set up a buildslave to help us test on different platforms.
- Unit tests are strongly encouraged for any new code. We also use coverage testing to keep track of what code needs more thorough testing. A great beginners task is to design tests that will improve our coverage statistics.
Future Planning
There are several architectural design tasks planned for OpenCog. Some are a long way off, while others are more of a priority. However, there have been discussions on these topics and so records are kept here to avoid rehashing the same arguments when we DO come to implementing these tools.
More
More on the Talk:Development page!