User Documentation

A Brief Intro

DevAssistant is developer’s best friend (right after coffee).

DevAssistant ( can help you with creating and setting up basic projects in various languages, installing dependencies, setting up environment etc. There are four main types of functionality provided:


Please be advised that with version 0.10.0, the modify command changes to tweak.

  • da create - create new project from scratch
  • da modify - take local project and do something with it (e.g. import it to Eclipse)
  • da prepare - prepare development environment for an upstream project or a custom task
  • da task - perform a custom task not related to a specific project

The first three of these have shortcuts for faster use: “create” can be shortened as “crt”, “modify” as “mod” and “prepare” as “prep”.

DevAssistant is based on idea of per-{language/framework/...} “assistants” with hierarchical structure. E.g. you can run:

$ da create python django -n ~/myproject # sets up Django project named "myproject" inside your home dir
$ da create python flask -n ~/flaskproject # sets up Flask project named "flaskproject" inside your home dir
$ da create ruby rails -n ~/alsomyproject # sets up RoR project named "alsomyproject" inside your home dir

DevAssistant also allows you to work with a previously created project, for example import it to Eclipse:

$ da modify eclipse # run in project dir or use -p to specify path

With DevAssistant, you can also prepare environment for developing upstream projects - either using project-specific assistants or using “custom” assistant for arbitrary projects (even those not created by DevAssistant):

$ da prepare custom custom -u scm_url

Warning: The custom assistant executes custom pieces of code from .devassistant file of the project. Therefore you have to be extra careful and use this only with projects whose authors you trust.

Last but not least, DevAssistant allows you to perform arbitrary tasks not related to a specific project:

$ da task <TODO:NOTHING YET>

Should you have some questions, feel free to ask us at Freenode channel #devassistant or on our mailing list ( You can also join our G+ community ( or follow us on Twitter (

So What is an Assistant?

In short, assistant is a recipe for creating/modifying a project or setting up the environment in a certain way. DevAssistant is in fact just a core that “runs” assistants according to certain rules.

Each assistant specifies a way to achieve a single task, e.g. create a new project in framework X of language Y.

If you want to know more about how this all works, consult Yaml Assistant Reference.

Assistant Roles

There are four assistant roles:


Please be advised that with version 0.10.0, the modify command changes to tweak.

creator (create or crt on command line)
creates new projects
modifier (modify or mod on command line)
works with existing projects
preparer (prepare or prep on command line)
prepares environment for development of upstream projects
task (task on command line)
performs arbitrary tasks not related to a specific project

The main purpose of having roles is separating different types of tasks. It would be confusing to have e.g. python django assistant (that creates new project) side-by-side with eclipse assistant (that registers existing project into Eclipse).

You can learn about how to invoke the respective roles below in Creating New Projects, Modifying Existing Projects and Preparing Environment.

Using Commandline Interface

Creating New Projects

DevAssistant can help you create (that’s crt in the commands below) your projects with one line in a terminal. For example:

$ da create python django -n foo -e -g

da is the short form of devassistant. You can use either of them, but da is preferred.

This line will do the following:

  • Install Django (RPM packaged) and all needed dependencies.
  • Create a Django project named foo in the current working directory.
  • Make any necessary adjustments so that you can run the project and start developing right away.
  • The -e switch will make DevAssistant register the newly created projects into Eclipse (tries ~/workspace by default, if you have any other, you need to specify it as an argument to -e). This will also cause installation of Eclipse and PyDev, unless already installed.
  • The -g switch will make DevAssistant register the project on Github and push sources there. DevAssistant will ask you for your Github password the first time you’re doing this and then it will create a Github API token and new SSH keys, so on any further invocation, this will be fully automatic. Note, that if your system username differs from your Github username, you must specify the Github username as an argument to -g.

Modifying Existing Projects


Please be advised that with version 0.10.0, the modify command changes to tweak.

DevAssistant allows you to work with previously created projects. You can do this by using da modify, as opposed to da create for creating:

$ da modify eclipse

This will import a previously created project into Eclipse (and possibly install Eclipse and other dependencies implied by the project language). Optionally, you can pass -p path/to/project if your current working directory is not the project directory.

Preparing Environment

DevAssistant can set up the environment and install dependencies for development of an already existing project located in a remote SCM (e.g. Github). For custom projects you can use the custom assistant. Note that for projects that don’t have .devassistant file, this will just checkout the sources:

$ da prepare custom -u scm_url

Warning: The custom assistant executes custom pieces of code from a .devassistant file, so use this only for projects whose upstreams you trust.

The plan is to also include assistants for well known and largely developed projects (that, of course, don’t contain a .devassistant file). So in future you should be able to do something like:

$ da prepare openstack

and it should do everything needed to get you started developing OpenStack in a way that others do. But this is still somewhere in the future...



Please be advised that with version 0.10.0, the task command changes to extra.

The last piece of functionality is performing arbitrary tasks that are not related to a specific projects. E.g.:

$ da task <TODO:NOTHING YET>

Custom Actions

There are also some custom actions besides crt, mod and prep. For the time being, these are not of high importance, but in future, these will bring more functionality, such as making coffee for you.

Displays help, what else?
Displays current DevAssistant version.

Using the GUI

The DevAssistant GUI provides the full functionality of Commandline Interface through a Gtk based application.

As opposed to the CLI, which consists of three binaries, the GUI provides all assistant types (creating, modifying, preparing) in one, each type having its own page.

The GUI workflow is dead simple:

  • Choose the assistant that you want to use, click it and possibly choose a proper subassistant (e.g. django for python).
  • The GUI displays a window where you can modify some settings and choose from various assistant-specific options.
  • Click the “Run” button and then just watch getting the stuff done. If your input is needed (such as confirming dependencies to install), DevAssistant will ask you, so don’t go get your coffee just yet.
  • After all is done, get your coffee and enjoy.

Currently Supported Assistants

Please note that list of currently supported assistants may vary greatly in different distributions, depending on available packages etc.

Currently supported assistants with their specialties (if any):


  • C - a simple C project, allows you to create an SRPM and build an RPM by specifying -b
  • C++
  • Java - JSF - Java Server Faces project - Maven - A simple Apache Maven project
  • Perl - Class - Simple class in Perl - Dancer - Dancer framework project
  • PHP - LAMP - Apache/MySQL/PHP project
  • Python - all Python assistants allow you to use --venv switch, which will make DevAssistant create a project inside a Python virtualenv and install dependencies there, rather then installing them system-wide from RPM - Django - Initial Django project, set up to be runnable right away - Flask - A minimal Flask project with a simple view and script for managing the application - Library - A custom Python library - PyGTK - Sample PyGTK project
  • Ruby - Rails - Initial Ruby on Rails project


  • Eclipse - add an existing project into Eclipse (doesn’t work for some languages/frameworks)
  • Vim - install some interesting Vim extensions and make some changes in .vimrc (these changes will not affect your default configuration, instead you have to use the command let devassistant=1 after invoking Vim)


  • Custom - checkout a custom previously created project from SCM (git only so far) and install needed dependencies