Go to Post Hey... wait... that looks like a LEGAL bumper configuration! You can't post a photo with a legal configuration... we'd have nothing to talk about! - dtengineering [more]
Home
Go Back   Chief Delphi > Technical > Programming
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
 
 
Thread Tools Rate Thread Display Modes
Prev Previous Post   Next Post Next
  #8   Spotlight this post!  
Unread 25-03-2012, 23:34
carrillo694's Avatar
carrillo694 carrillo694 is offline
Alex Carrillo
FRC #0694 (Stuypulse)
Team Role: Programmer
 
Join Date: Jan 2011
Rookie Year: 2009
Location: New York, NY
Posts: 66
carrillo694 is a jewel in the roughcarrillo694 is a jewel in the roughcarrillo694 is a jewel in the roughcarrillo694 is a jewel in the rough
Re: How does your team architect its codebase?

Another Command-Based Programming team here to chime in -- here's our codebase, for reference:https://github.com/prog694/joebot/

Ziv has already covered the basics of CBP. Ultimately, our team is pleased with this architecture -- we liked the distinction between configurable robot actions (commands) and actual implementations (subsystems).

One thing we did this year was create a series of "fake" subsystems, for debugging purposes. If we wanted to only troubleshoot the Drivetrain and disable everything else, we would replace all of our regular subsystem instantiations with a safe, "Fake" version that simply prints statements instead of actuating hardware.


I will now comment on our software engineering practices, since others have too. We have an unusually large team of [software] engineers, many of whom are unfortunately made anonymous by the orange "prog694" committer in the preceding graph. Our development process is best characterized by the following graph:https://github.com/prog694/joebot/network (click & drag the graph to scroll it.)

We have one guaranteed stable code branch, 'master.' From 'master,' we branch off into a 'develop' branch, where we write all of our untested code.

When someone is charged with implementing a feature, he/she creates a branch off of 'develop' with the prefix 'feature-,' e.g. 'feature-foobar.' Then, when it is time to test this feature on one of our old robots, from that feature branch we branch off into a new branch with the prefix 'debug-', e.g. 'debug-foobar.' In that debug branch, we implement test code that will prove that the feature works.

Finally, once the feature has been tested on old robots to the greatest extent, we merge that 'feature-' branch back in to 'develop' using GitHub "Pull Requests" (example). Because we have so many developers of various skill levels, Quality Control is critical, and so we review every new feature before it is merged with our 'develop' branch.

At a regional, once we have run continuous matches without re-loading code, we merge 'develop' into 'master' and tag that commit, starting with v1.0 and iterating as we improve control over time.

Last edited by carrillo694 : 25-03-2012 at 23:54. Reason: Added clarification.
 


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -5. The time now is 05:10.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi