Skip to content

Instantly share code, notes, and snippets.

@alukach
Last active May 10, 2019 14:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alukach/62c44e15b71c73de9a6bffc373fa2319 to your computer and use it in GitHub Desktop.
Save alukach/62c44e15b71c73de9a6bffc373fa2319 to your computer and use it in GitHub Desktop.
A framework for a Volunteer Software Dev program

Organization

The basic idea of this organization is to link up software developers with organizations (from here on out referred to as "partners") that need custom software development.

Motivations

For Developers

Developers may be interested for the following reasons:

  • altruism: wanting to apply their talents to good causes (a feeling they may not be getting from their day job (
  • networking: getting to know and work with others within the development community
  • skill development: junior devs may be seeking more guidance through mentorship. senior devs may be seeking more experience providing mentorship and project management. developers of any skill level may interested in working outside of their typical arena (e.g. frontend developer wanting to gain more experience with backend development)
  • portfolio expansion: a developer fresh out of school or a developer who only works on highly confidential closed-source solutions may be looking to build up a portfolio of publicly available code

For Partners

  • Access to free technical guidance and potentially free software development catered to their needs

Requirements

  • Partners must be legal non-profit status
  • Partners are responsible for all operational costs (e.g. hosting)
  • Code must be licensed under open source agreement
  • Code must be publicly available on GitHub. This benefits the partner by ensuring that its history and codebase is availble in a easily accessed location. Additionally, this benefits the developer by ensuring that it is publicly available as a portfolio piece.

Solution Goals

  • Software should aim to be built against open standards and avoid vendor lock-in when possible. Reasonable exceptions can be made, for instance when looking for compute solutions it may be deemed that the cost advantage of serverless-based solutions outweigh the downsides of vendor lock-in by which they are accompanied. Another example may be authentication, something such as Auth0 may be a reasonable expense given the simplicity and security that it brings.
  • Software should aim to optimize towards low costs and low management needs.

Project Anatomy

Criteria

A project should:

  • have a clear scope
  • have a start and end date
  • have a known budget
  • be a software project (this is not an IT service, no "maintaining X")

Phases

  1. Discovery: Partner provides well-described needs, developers discuss, potentially bring questions back to partner, a team and work plan is formed through brainstorming and investigation
  2. Proposal: A proposed solution (UI mockups, cost estimations, description, time estimation) is provided to partner for approval
  3. Implementation: Developers sprint on solution over agreed upon timespan, ideally utilizing continuous integration and continual communication with partner
  4. Demo/Delivery: Developers demo and deliver solution to partner

Roles

Always:

  • Point of Contact (from Partner)
  • Project Lead (a developer)

Concerns

  • People often don't respect something when it is free. This could arise with Partners not tempering their requests, not giving project planning the attention it requires, and making last-minute or continual changes throughout the development process with little regard to the disruption that this brings. Solution: be very willing and ready to "fire" the partner if it becomes apparent that volunteers' time is not being respected.
  • Developers or partners may abandon a project mid-way. Both parties must understand that they are making a commitment and that they must respect that.

Locality

The idea of this is organization is designed to scale remotely, however it remains to be seen how much in-person contact would be needed between a developer and partner. This should be observed and a determination can be made at a later date whether new chapters would be useful or if this could operate as a single chapter working with remote partners and volunteers.

How this organization operates

Everything about this organization is managed through GitHub. This provides the advantages of training developers how to interact with eachother through GitHub and setting the organization up to be transparent by default. This means that, along with the code written to solve developers problems, the organization itself will be managed through GitHub.

Issues, all the way down

All data concerning the organization's can be stored as a GitHub issue. We'll use tags to categorize these issues.

People

When someone wants to contribute, they'll create an issue that includes a textual description of who they are, what they looking for, etc. We'll then use tags to make these people searchable.

Tags:

  • person
  • person/can-do:design
  • person/can-do:backend dev
  • person/can-do:frontend dev
  • person/can-do:devops
  • person/can-do:be mentor
  • person/wants-to:design
  • person/wants-to:backend dev
  • person/wants-to:frontend dev
  • person/wants-to:devops
  • person/wants-to:be mentor
  • person/wants-to:have mentor
  • person/looking-for:project

Project Requests

A partner can make a request for a project (likely through a front-end form with a bot posting the project as a GitHub Issue on their behalf). Within these issues, developers can volunteer to work on the project, put together a proposal of how the solution achieved.

Tags:

  • project
  • project/needs:design
  • project/needs:frontend dev
  • project/needs:backend dev
  • project/needs:devops
  • project/in-progress
  • project/done
  • project/wont-do

Outreach

Development

Non-Profits

  • ?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment