Difference between revisions of "Platform Developers"

From Sirikata Wiki
Jump to navigation Jump to search
(Make each heading one level higher to get nicer formatting - section lines make things a lot clearer)
Line 1: Line 1:
 
<big>''Platform Developers Starting Page</big>
 
<big>''Platform Developers Starting Page</big>
  
=== Sirikata Platform Developers ===
+
== Sirikata Platform Developers ==
 
The core of Sirikata is a platform for building virtual world applications.  This means that we don't produce any single virtual world and there is no resulting "product."  Sirikata, at its core, is a set of interfaces and protocols for building virtual worlds.  We also implement many of these interfaces, some with multiple variations to support the demands of different applications.  If you're interested in building an application on top of Sirikata, for example a game, by writing scripts for objects and using Sirikata's infrastructure to handle things like user logins, content distribution, and rendering, then you are an ''Application Developer''.  Sirikata is in its early stages and not quite ready for applications to be built on top of it yet.
 
The core of Sirikata is a platform for building virtual world applications.  This means that we don't produce any single virtual world and there is no resulting "product."  Sirikata, at its core, is a set of interfaces and protocols for building virtual worlds.  We also implement many of these interfaces, some with multiple variations to support the demands of different applications.  If you're interested in building an application on top of Sirikata, for example a game, by writing scripts for objects and using Sirikata's infrastructure to handle things like user logins, content distribution, and rendering, then you are an ''Application Developer''.  Sirikata is in its early stages and not quite ready for applications to be built on top of it yet.
  
 
If you're interested in helping define these interface and protocols as well as building implementations of them, then you're in the right place.  This page describes how the project is setup, how to get in touch with the developers, and how to start contributing.
 
If you're interested in helping define these interface and protocols as well as building implementations of them, then you're in the right place.  This page describes how the project is setup, how to get in touch with the developers, and how to start contributing.
  
=== Communication ===
+
== Communication ==
 
Developers stay in touch via a number of mechanisms:
 
Developers stay in touch via a number of mechanisms:
 
* '''Mailing List''': [http://groups.google.com/group/platformtalk Developer List], [http://groups.google.com/group/platformtalk/topics Archives].  Use for discussion about the platform architecture, protocols, and implementations.  Patch sets can also be sent to this list for review and application if you do not have core commit access.   
 
* '''Mailing List''': [http://groups.google.com/group/platformtalk Developer List], [http://groups.google.com/group/platformtalk/topics Archives].  Use for discussion about the platform architecture, protocols, and implementations.  Patch sets can also be sent to this list for review and application if you do not have core commit access.   
Line 14: Line 14:
 
A note on the mailing list: this particular list is intended for '''developer talk only.'''  We don't specifically separate mailing list traffic for application and platform developers since the overlap is significant and often useful, but we'd prefer to see general or art related topics go to the appropriate mailing list: it will actually reach the right people and you're more likely to get a good response that way.  See the [[Main Page]] for information about other mailing lists.
 
A note on the mailing list: this particular list is intended for '''developer talk only.'''  We don't specifically separate mailing list traffic for application and platform developers since the overlap is significant and often useful, but we'd prefer to see general or art related topics go to the appropriate mailing list: it will actually reach the right people and you're more likely to get a good response that way.  See the [[Main Page]] for information about other mailing lists.
  
=== Working with Sirikata ===
+
== Working with Sirikata ==
 
Because Sirikata is a large project, getting involved can be a bit daunting.  This section's goal is to guide you through your first steps in getting involved.  You most likely want to follow the steps in the order presented here: get familiar with the architecture, get the code building, learn more about the specific piece you want to implement/improve/extend, and then work on actually contributing back.  If you're not sure what you want to help out with yet, this process should hopefully give you some ideas, and the [[CodingProjects|coding projects]] projects page or a discussion with current developers can help you pin down exactly what to work on.
 
Because Sirikata is a large project, getting involved can be a bit daunting.  This section's goal is to guide you through your first steps in getting involved.  You most likely want to follow the steps in the order presented here: get familiar with the architecture, get the code building, learn more about the specific piece you want to implement/improve/extend, and then work on actually contributing back.  If you're not sure what you want to help out with yet, this process should hopefully give you some ideas, and the [[CodingProjects|coding projects]] projects page or a discussion with current developers can help you pin down exactly what to work on.
  
==== Architecture ====
+
=== Architecture ===
 
Sirikata's architecture is still being actively developed, so be aware that the available information may fall out of date.  To get started with the code, you likely only need a small bit of global knowledge to understand how the big pieces fit together, and then more detailed local knowledge on the parts you're actually developing on.
 
Sirikata's architecture is still being actively developed, so be aware that the available information may fall out of date.  To get started with the code, you likely only need a small bit of global knowledge to understand how the big pieces fit together, and then more detailed local knowledge on the parts you're actually developing on.
  
Line 26: Line 26:
 
To get more familiar with any particular piece of the system, follow the links in the [[System Architecture]] document. In the event that the documentation is incomplete, try contacting the developers directly (and complain that the documentation is missing as well as asking your question).
 
To get more familiar with any particular piece of the system, follow the links in the [[System Architecture]] document. In the event that the documentation is incomplete, try contacting the developers directly (and complain that the documentation is missing as well as asking your question).
  
==== Source Code ====
+
=== Source Code ===
 
Our code is hosted on [http://github.com/sirikata GitHub].  Besides hosting and serving our code for us (thanks GitHub!), they provide a bunch of useful addons - tracking of forks, simple merge procedures, and stats tracking to name a few.  It's not necessary that you use an account on github to develop Sirikata, but you might want to check it out.  Especially if you want to do some experimental development or just work outside the main tree for awhile, its a nice way to easily track the mainline fork.
 
Our code is hosted on [http://github.com/sirikata GitHub].  Besides hosting and serving our code for us (thanks GitHub!), they provide a bunch of useful addons - tracking of forks, simple merge procedures, and stats tracking to name a few.  It's not necessary that you use an account on github to develop Sirikata, but you might want to check it out.  Especially if you want to do some experimental development or just work outside the main tree for awhile, its a nice way to easily track the mainline fork.
  
Line 35: Line 35:
 
For reference, the current core developers have Linux, Mac and Windows machines. Most heavily favor Linux, especially the Ubuntu distribution.
 
For reference, the current core developers have Linux, Mac and Windows machines. Most heavily favor Linux, especially the Ubuntu distribution.
  
===== Developer Preview (Prototype) Code =====
+
==== Developer Preview (Prototype) Code ====
 
 
 
The current incarnation of Sirikata has its origins in a prototype.  This prototype is available as a [[dev preview|developer preview]].  Only the brave will want to check this out; building it is more difficult than Sirikata.
 
The current incarnation of Sirikata has its origins in a prototype.  This prototype is available as a [[dev preview|developer preview]].  Only the brave will want to check this out; building it is more difficult than Sirikata.
  
==== Subsystems and Implementation ====
+
=== Subsystems and Implementation ===
 
* We are starting a discussion on how to implement distributed [[Physics|physics]] on our space servers.
 
* We are starting a discussion on how to implement distributed [[Physics|physics]] on our space servers.
 
* We have just concluded a discussion on the [[TypeSystems|type system]] used in messages and network wire formats.
 
* We have just concluded a discussion on the [[TypeSystems|type system]] used in messages and network wire formats.
 
* This is the resulting [[Protocol|Protocol]] sirikata will use as it stands. We encourage discussion about these builtin commands.
 
* This is the resulting [[Protocol|Protocol]] sirikata will use as it stands. We encourage discussion about these builtin commands.
  
==== How Can I Contribute? ====
+
=== How Can I Contribute? ===
 
If you are looking for some inspiration on how to become involved you can check out our [[CodingProjects| coding projects]].
 
If you are looking for some inspiration on how to become involved you can check out our [[CodingProjects| coding projects]].

Revision as of 01:01, 7 June 2009

Platform Developers Starting Page

Sirikata Platform Developers

The core of Sirikata is a platform for building virtual world applications. This means that we don't produce any single virtual world and there is no resulting "product." Sirikata, at its core, is a set of interfaces and protocols for building virtual worlds. We also implement many of these interfaces, some with multiple variations to support the demands of different applications. If you're interested in building an application on top of Sirikata, for example a game, by writing scripts for objects and using Sirikata's infrastructure to handle things like user logins, content distribution, and rendering, then you are an Application Developer. Sirikata is in its early stages and not quite ready for applications to be built on top of it yet.

If you're interested in helping define these interface and protocols as well as building implementations of them, then you're in the right place. This page describes how the project is setup, how to get in touch with the developers, and how to start contributing.

Communication

Developers stay in touch via a number of mechanisms:

  • Mailing List: Developer List, Archives. Use for discussion about the platform architecture, protocols, and implementations. Patch sets can also be sent to this list for review and application if you do not have core commit access.
  • IRC: #sirikata on irc.freenode.net (logs). Used for real time discussion with developers - quick questions, detailed questions about code, etc.
  • Bugs: Nothing yet, send to the mailing list for now.

A note on the mailing list: this particular list is intended for developer talk only. We don't specifically separate mailing list traffic for application and platform developers since the overlap is significant and often useful, but we'd prefer to see general or art related topics go to the appropriate mailing list: it will actually reach the right people and you're more likely to get a good response that way. See the Main Page for information about other mailing lists.

Working with Sirikata

Because Sirikata is a large project, getting involved can be a bit daunting. This section's goal is to guide you through your first steps in getting involved. You most likely want to follow the steps in the order presented here: get familiar with the architecture, get the code building, learn more about the specific piece you want to implement/improve/extend, and then work on actually contributing back. If you're not sure what you want to help out with yet, this process should hopefully give you some ideas, and the coding projects projects page or a discussion with current developers can help you pin down exactly what to work on.

Architecture

Sirikata's architecture is still being actively developed, so be aware that the available information may fall out of date. To get started with the code, you likely only need a small bit of global knowledge to understand how the big pieces fit together, and then more detailed local knowledge on the parts you're actually developing on.

There are currently two major sources of information about the overall architecture of Sirikata:

  • This 25 min. video gives a high level overview over the Sirikata system architecture.
  • The System Architecture wiki page, which we will try to keep up to date with a similar but more detailed description to that in the video. It will also contain some example use cases to justify our architecture.

To get more familiar with any particular piece of the system, follow the links in the System Architecture document. In the event that the documentation is incomplete, try contacting the developers directly (and complain that the documentation is missing as well as asking your question).

Source Code

Our code is hosted on GitHub. Besides hosting and serving our code for us (thanks GitHub!), they provide a bunch of useful addons - tracking of forks, simple merge procedures, and stats tracking to name a few. It's not necessary that you use an account on github to develop Sirikata, but you might want to check it out. Especially if you want to do some experimental development or just work outside the main tree for awhile, its a nice way to easily track the mainline fork.

To actually get started with the code you'll want to get it from our GitHub repository and then follow the build instructions.

Building Sirikata can be a complicated affair: it's a large piece of complex, platform independent software which leverages a large number of existing packages. Even worse, we currently have a limited number of test systems, generally those that the developers are working on. We would very much appreciate reports of any problems (send to the developer list), or even better would be fixes.

For reference, the current core developers have Linux, Mac and Windows machines. Most heavily favor Linux, especially the Ubuntu distribution.

Developer Preview (Prototype) Code

The current incarnation of Sirikata has its origins in a prototype. This prototype is available as a developer preview. Only the brave will want to check this out; building it is more difficult than Sirikata.

Subsystems and Implementation

  • We are starting a discussion on how to implement distributed physics on our space servers.
  • We have just concluded a discussion on the type system used in messages and network wire formats.
  • This is the resulting Protocol sirikata will use as it stands. We encourage discussion about these builtin commands.

How Can I Contribute?

If you are looking for some inspiration on how to become involved you can check out our coding projects.