Difference between revisions of "Guides/Platform Development"

From Sirikata Wiki
Jump to navigation Jump to search
(Initial import from sirikata-docs)
 
(Include the getting started page for platform developers to give more pointers into)
Line 1: Line 1:
 
= Introduction for Platform Developers =
 
= Introduction for Platform Developers =
  
Sirikata is a large system composed of a large number of independent services and components. Adding a new feature or fixing a bug can be a daunting task given the size of the code base. The Platform Developer's Guide provides a roadmap to help you get started.
+
This guide helps you get started working on the code that runs Sirikata -- fixing bugs or adding new functionality to the system, rather than scripting objects in a running system. It provides:
  
The guide tries to provide three things. First, it provides a high-level map of the components of the system and the code base. This should let you understand the pieces of the system, how they fit together, and which component and code you should look at to make your change. Second, each service and component is broken down and described in more detail. This should provide you enough detail to dig into the code for a component and start to make changes. Third, a small set of general tutorials for how to make changes to the system. These are specific to the code base, but not specific to any particular component. The tutorials address issues such as how to create a plugin, how to work with the options system, and how to handle new dependencies.
+
* A high-level map of the components of the system and the code base to help you find our way around the code and figure out what you want to be modifying.
 +
* A breakdown a detailed description of each service so you can find where in a service you need to work.
 +
* A small set of general tutorials. These are specific to the Sirikata code base, but not specific to any component. Look here to understand the code infrastructure and idioms, such as plugin architecture, the options system, and the event system.
  
== Who is this for? ==
+
It's oriented towards the primary C++ code base; for other projects (e.g., KataJS), you'll need to look at their documentation.
  
This document is targetted at developers who will be working on the Sirikata code, rather than just using it's components to deploy a world. If you need to fix a bug in the system or want to add a new plugin (e.g. a new scripting language), then you should be reading this guide. If you want to deploy your own world or learn about scripting objects, you should start back at the :ref:`welcome` document.
+
== Getting Started ==
  
The guide is oriented towards the primary C++ code base. While some of the content (for instance, the :ref:`platform-components`) will be helpful regardless of the code base you are working on, specifics about developing for other implementations should be found in their respective guides.
+
As mentioned above, you probably want to start with one of the three main sections:
  
== Getting Started ==
+
* [[Guides/Platform_Development/Tour of the Code|Tour of the Code]] - A technical tour of the system and the code repositories.
 +
* [[Guides/Platform_Development/Components|Components]] - A breakdown of the services and components of the system, with details of their operation.
 +
* [[Guides/Platform_Development/Tour of the Code|Tutorials]] - A series of tutorials describing certain aspects of the system which aren't specific to any component but which any developer will encounter when working with the system.
  
As mentioned above, you probably want to start with one of the three main sections:
+
== Resources ==
  
* :ref:`platform-tour` - A technical tour of the system and the code repositories.
+
Besides documentation and tutorials, there's a lot of infrastructure around Sirikata and its development, e.g. the code repository, bug tracking, IRC, mailing lists, debugging tools and libraries, and more.
* :ref:`platform-components` - A breakdown of the services and components of the system, with details of their operation.
+
{{:Getting_Started_for_Platform_Developers}}
* :ref:`platform-tutorials` - A series of tutorials describing certain aspects of the system which aren't specific to any component but which any developer will encounter when working with the system.
 

Revision as of 01:19, 26 May 2012

Introduction for Platform Developers

This guide helps you get started working on the code that runs Sirikata -- fixing bugs or adding new functionality to the system, rather than scripting objects in a running system. It provides:

  • A high-level map of the components of the system and the code base to help you find our way around the code and figure out what you want to be modifying.
  • A breakdown a detailed description of each service so you can find where in a service you need to work.
  • A small set of general tutorials. These are specific to the Sirikata code base, but not specific to any component. Look here to understand the code infrastructure and idioms, such as plugin architecture, the options system, and the event system.

It's oriented towards the primary C++ code base; for other projects (e.g., KataJS), you'll need to look at their documentation.

Getting Started

As mentioned above, you probably want to start with one of the three main sections:

  • Tour of the Code - A technical tour of the system and the code repositories.
  • Components - A breakdown of the services and components of the system, with details of their operation.
  • Tutorials - A series of tutorials describing certain aspects of the system which aren't specific to any component but which any developer will encounter when working with the system.

Resources

Besides documentation and tutorials, there's a lot of infrastructure around Sirikata and its development, e.g. the code repository, bug tracking, IRC, mailing lists, debugging tools and libraries, and more.

Map for Platform Development

  • Documentation is very much a work in progress but is a comprehensive overview of what we currently have. Covers just about all the technical aspects of the system, tools and infrastructure around it, and how to work with it. If you're looking for a particular topic, start here.

Getting into the Code

Getting in Touch with Other Developers

  • Need to talk to other platform developers to bounce implementation ideas off them or ask questions about the code? Platform Developer Communication describes how to get in touch with other platform developers, both synchronously and asynchronously.

How and Where to Contribute