Skip to content

Problem Statements and Design Goals

Eivind Arvesen edited this page Oct 13, 2015 · 2 revisions

Problem statement

The problem of remembering what projects one is currently working on, as well as what older inactive ones one has previously worked on, might be familiar to many developers. Switching between several projects might in some cases also be cumbersome, so some might end up with several terminals running for different projects.

Additionally, when starting to work on a project, one often performs several actions to get everything up and running. Not only is there no good reason one should have to perform these manually, but the setup procedures of older projects might be lost to time - if one didn't have the foresight to write some notes, or to save a shell script.

The impact of these problems might fall somewhere between a nuisance (repetitive actions) and a big problem (not knowing how to get a legacy project and its development environment up and running).

A good solution would automate any setup, in the vein of the project management features of popular integrated development environments.

Design goals

The following can be thought of as driving principles for a this project:

  • Allow users to seamlessly change between projects
  • Display the currently active project
  • Give users the tools to automate repetitive tasks required to set up a development environment - like setting environment-variables, activating virtual environments, upgrading software packages and pulling changes from version control repositories
  • Give users feedback on any action - but do not be verbose
  • Show informative feedback upon failure; explain what went wrong, and what the user can do to attempt to rectify the situation
  • Fail gracefully; unexpected events should not break the program
Clone this wiki locally