Tuesday, September 30, 2014

Community Architecture Report - Duality

What is it?


Helpful Links:

Duality is a 2d Open Source modular game engine.  The engine provides a visual editor, is highly extensible, and is written in C# and backed by OpenGL.  If you'd be interested in developing 2d games with an engine like this check Duality out here: http://duality.adamslair.net/

The project aims to create a fully functioning, highly adaptable, efficient open source game engine for game developers to use.

Brief History

Development on Duality (according to the website) was started in 2011.  The actual first GitHub commit was July 21, 2013.  The most recent GitHub commit was authored about 4 hours ago from the moment that this sentence was written.

Who Approves Patches?

Despite the high amount of commits and changes submitted to Duality, actual patches do not go through until they are approved by the single entity known as "Adamslair" - aka all patches must be approved by 1 person.

Who Has Commit Access?

Although people can freely submit commits, only 3 people have had their patches accepted.  These people are: 

Who has the Knowledge?

Overwhelmingly, the knowledge and information for this project is stored inside the mind of Adamslair the primary developer.  The 2 contributors listed above BraveSirAndrew and fireDude90 also likely have some unique knowledge on the project.

Calloway Coefficient of Fail?

The Coefficient of Fail that we calculated using this test: http://hfoss-fossrit.rhcloud.com/static/books/tomspotcallaway-howtotellifyourfossprojectisdoomedtofail.pdf was a 265...being that this is above 135, this would be described as "So much fail, your code should have its own reality TV show."

Turnover in Core Team?

Short answer - no.  The core team is basically 1 man.  He is the lead developer, contributor, and basically complete creator of this project.  Overtime it is nice to see that the other 2 contributors mentioned above managed to patch 4 commits to the engine, but no real changes to this 1 man team.

BDFL?

Adamslair is indefinitely the benevolent dictator for life, of this project.

Front End Back End Work?

Essentially all work done both front end and back end is done by Adam.  Aside from Adam, fireDude90 implemented a feature affecting both the front and back end of the program, and contributor BraveSirAndrew worked on the front end with his 3 commits.  BraveSirAndrew also fixed a couple of bugs.

Bugs?

Unfortunately, because of the infinitesimally small development team, this project has encountered many bugs.  Most of these bugs look like they fall in the genre of improving things by making them more efficient.  The head developer also appears to want people to just use his engine more.  All bug fixes must go through Adam.  Adam also is in charge of quality control and appears quite hesitant to accept any contribution, unless it meets all of his standards.

Trending Project Participation?

Although actual outside contribution to the project is very low, the project has been forked 56 times and has 233 stars.  This implies that the project is actually very trending and people see a lot of potential in it.  The game engine itself appears very polished and far into the development process which probably accounts for why people like it so much.  Not to mention the fact that the main developer Adam constantly works to update the project.

Raptor Test?

This project would be doomed if the BDFL Adam were eaten by a Velociraptor for numerous reasons.  In this project, basically all of the knowledge both unique and not, is held by Adam.  Also, Adam is currently the only person who oversees the project in terms of accepting bug fixes and patches and knowing the requirements to really get a patch through.  If Adam were eaten by a Velociraptor, the game engine could probably still prosper because it seems far in development, but it's likely that evolution of the project would completely halt.

Git by a Bus?

Being that the lead development team consists of one BDFL and 2 minor contributors, it is very likely that the project would not survive if this collection of people was hit by a bus.

Onboarding?

Luckily, there is an official onboarding process for this project.  The lead developer is very responsive to anyone who contacts him, and he seems eager to have people contribute to his project.  The project also has its own wiki and readme file to introduce people to the project.  Having said that, the project seems pretty complex so it may take some time to really get involved in it.

Documentation?

Documentation for this project is limited.  Most of the documentation is about how the game engine can be used as opposed to how people can modify and adapt the source of the engine.  There is a wiki and a website for the game engine and people are encouraged to contact Adam for any questions.  A lot of bugs and issues are documented well, so there are things to work on.  There are not many code examples.

Contact

If I ever found myself needing any kind of information on this project of any kind, I would contact Adamslair - http://forum.adamslair.net/ via his forums, or on GitHub.

Structure and Opinion

Based on all of the above, I would say the structure of this development community is based around a single ruler in the entity that is "Adamslair".  This is a monarchical structure and all decision making is done by Adam.  Personally, I think this is not a very ideal architecture for an Open Source project, as although Adam appears to be opening up his project for others to contribute, I don't think he does a great job providing them with enough up front information to get started, and it appears to be pretty difficult to get a patch through to the core project.  I can see reasons for making an architecture like this for example, if it is an architecture built around a very personal project that one would show great pride and possession in, but I don't think I would like to work on a project like this.  I think the biggest problem I would have working in this type of structure would be that I would feel that I would be putting in a lot of work for no reason because it is unlikely my contributions would actually make it through to the core - that's if I even managed to fix one of the many complex bugs.


No comments:

Post a Comment