Skip to content

Software Development Procedures

matjames007 edited this page Mar 12, 2015 · 6 revisions

Draft Software Development Policies and Procedures

SlashRoots Foundation

"To be able to choose between proprietary software packages is to be able to choose your master. Freedom means not having a master. And in the area of computing, freedom means not using proprietary software." - Richard Stallman

Revisions

Author Change Description Date Approval
M. Budram Original Draft Document Created Dec. 5, 2014
M. McNaughton Revision and Suggestions Dec. 29, 2014
M. Budram Inclusion of Narration Jan. 7, 2015

Software Development Processes

The purpose of this section is to create processes that can allow for the establishment of new code or make allowances for changes in an existing code-base. A variety of methodologies exist, but it is the position of SlashRoots that we seek to utilize Agile Processes as it promotes efficient communication, generates maintainable source code, and produces software that is implemented to specification.

So Johnny Appleseed just joined the engineering staff of SlashRoots. He’s fresh out of school and wants to dive right in but at SlashRoots we focus heavily on collaboration and designing for users. This requires adhering to the 5 main design steps:

  • Clear, Concise and Complete Documentation

  • Well maintained and formatted code

  • Ensuring highly resilient and robust code by thoroughly testing

  • Sharing and collaboration using code versioning tools

  • Operating in a secure environment

SlashRoots Developer Toolkit

These tools are the common tools across the developers at SlashRoots:

IDE

pyCharm (MacOS X, Windows, Linux) [https://www.jetbrains.com/pycharm/]

wing (Windows, Linux)

[http://wingware.com/]

Database

Postgresql [http://www.postgresql.org/]

Project Management

Asana [https://app.asana.com/]

Team Chat / Virtual Office

Slack [http://slashroots.slack.com/]

Version Control

Git / git-core / gitk

Github [http://github.com]

SourceTree (MacOS X, Windows) [http://www.sourcetreeapp.com/]

Tortoise Git (Windows, Linux) [https://code.google.com/p/tortoisegit/]

Onboarding

As part of the onboarding process of the SlashRoots Labs the engineer will be provided with an @slashroots.org email address that gives you access to all documentation and resources housed and managed by Google.

In order to enhance the collaboration effort of the team we utilize Slack. Slack is a team communication tool that aggregates most software development tools into one centralized application. This reduces the effort to quickly and effectively show project updates, request meetings and find related notes/documents. This tool aggregates information from the slashroots google drive, Asana project planning tool and versioning applications such as Git.

As a SlashRoots engineer it is important that you actively contribute to open-source projects. Therefore you should have already created an online-based profile for Github. This profile will be used to contribute to SlashRoot’s open-source projects and adds to your own personal credentials as an engineer!

Documents

SlashRoots utilizes the Google document facility to manage all documents including (but not limited to):

  • Business Development

  • Grants

  • Project Requirements/Information

  • Proposals

This would be a good point for Johnny to get up-to-speed with the operations of the SlashRoots Foundation. The development team uses an Agile approach to software development and as a result any changes made to various prototypes during development phases must be reflected by the requirements docs of the project. At all times the project information must remain current.

Using the Google Drive facility ensures that all revisions and changes are tracked and can be monitored to ensure quality and integrity of the document. This is essential when distributing information to third parties.

Research Framework

The research framework is a living document that defines your research themes and questions, but its focus will evolve and narrow over time, first as feedback is gathered from stakeholders, and then even more so over the course of field research.

While not a record of insights or findings, it is reflective of an increasingly sophisticated understanding of

the context, honing in closer to the actual truth as the research unfolds. Over time, more targeted and more detailed questions arise.

In practice, priorities tend to shift from what was originally put on paper. All practitioners know about

the importance of flexibility and striking a balance between planning and operations. The research framework creates a way to adjust to shifting donor and stakeholder priorities, while also keeping the on-the-ground realities in focus.

Clone this wiki locally