DevAssistant 0.7.0 – Hello World!

It’s been more than a half year since we got that little idea to create a piece of software that would help developers with everyday repetitive tasks. Nothing really new, nothing really unseen. We’ll just write couple of scripts, glue them together with Python and be done with it.

Turns out it’s not as simple as that :)

And so, after more than half a year, we have a growing project, we’re creating a website for it and I’ll probably no longer write about DevAssistant on my personal blog, since we have this one. And most importantly, some people actually use DevAssistant!

DevAssistant

So what is DevAssistant? Going back to that first idea we had, it was supposed to be a set of scripts (Bash, Python, whatever) that would kickstart projects in various languages. We kept the idea of “kickstarting new projects”, but we also added “working with existing projects” and “preparing environment for work with upstream projects”. These are now the basic three use cases we’re working with.

The actual assistants aren’t Bash or Python scripts anymore, they are Yaml files with a defined structure. I think it is fair to say that we have invented our own scripting micro-language based on Yaml (how crazy is that?) that gets interpreted by DevAssistant core (written in Python).

Why did we need to do this? We needed to centralize functionality like logging, Github repos manipulation etc., which meant:

  • Doing everything in one language

or

  • Defining some sort of interface between core and the scripts, which would probably be even more insane and very hard for maintenance and script writing.

We chose the first option. And since not all people want to use Python, we had to create something language agnostic, so there it is. And it’s fairly simple, too.

How Assistants Work

So how do the assistants work? For each of the three use cases mentioned above, we have a set of assistants, that can have subassistants, etc. For example, we have the “kickstarting new projects” use case, for which we have assistants like python or ruby. But there is nothing like “just a Python project”, so python assistant has subassistants like django or flask. If you want to create a Django project by DevAssistant, you just need to run terminal and type

da crt python django -n newapp

where crt refers to the usecase (we abbreviate “create” as “crt”, the other two usecases are “mod” as “modify” and “prep” as “prepare”), python and django are the assistants and -n newapp specifies the name of the new project. This not only sets up the project, but also installs dependencies and initializes a Git repo inside the project directory. When used with correct options, this can also create a repo on Github and push your sources there (-g) or import the project into Eclipse (-e). That’s a whole lot of work for just one line in terminal! Just remember, every time you want to know your current options, use -h or --help to see what DevAssistant has to offer.

In the newest version, 0.7.0, we also have a GUI prototype that allows you to do all the stuff from a nice Gtk+ graphical interface. This version has received major updates in commandline interface as well as in internal structure. The internal shuffling will continue for 0.8.0, but Yaml assistants will most likely not be affected by this, so if you write an assistant that works in 0.7.0, it should also work with 0.8.0 and newer versions, possibly up until version 1.0.0.

Looking Forward

As already mentioned, we’ll be doing some internal code shuffling, but that’s pretty boring. On the more exciting end, we’re preparing some cool features like:

  • Central repository for assistants, that would allow you to share your custom assistants with the world.
  • Integration with docker.io for deployment.
  • Improved documentation with tutorials about writing assistants.
  • Support for platforms other than Fedora/CentOS/RHEL (did I mention that we currently only support these?).
  • And more…

All in all, we’ve got a lot of work ahead, but we’re looking forward to it. If you use DevAssistant, consider telling us your impressions, either by writing to our mailing list (which doesn’t exist yet, but we’re working on it), comming to our IRC channel (#devassistant on freenode) or opening a bug on our Github project page.

Happy hacking!

4 thoughts on “DevAssistant 0.7.0 – Hello World!

  1. I noticed that it’s hard to find your site in google, i found it on 17th spot, you should
    create some social bookmarks to rank it in google and increase traffic. I had the same problem with my blog, your should search in google for – Insane google ranking boost – it helped me a lot

  2. Aside from Programming, there is a requirement for a DevAssistant for Documentation.
    We could benefit from a set of tools that are geared to documentation.

    • Hi Leslie,
      I’m not sure what exactly you have in mind. We’ve been, for example, communicating with fedora-docs team about creating assistants that would kickstart templates for Fedora documentation chapters. Is that what you mean?

Leave a Reply to BennyY Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>