Start developing with ease.

Main menu

Post navigation

DevAssistant 0.10.0 Released

Dear friends of all things free software, DevAssistant is back with a new release! It has been over two months, and such a time would make you think that something big has been in the works. It has.

All this time, we haven’t been sitting idle with our hands behind our backs, and so we can have the biggest announcement so far: The DevAssistant Package Index is officially on, and you can install packages right from DevAssistant. Not enough? Here’s another one: You can write Assistants in other languages than YAML. Still not enough? We have greatly improved Docker integration and introduced built-in support for Docker container orchestration with Vagrant.

DevAssistant Package Index

Let’s start with the biggest news first. The DevAssistant Package Index (or simply DAPI) was something we wanted to make from the very start. For obvious reasons, really – without it, there is no central place where to look for Assistants, which means that not only is it hard to find what you’re looking for, but you may not even imagine there’s an Assistant for your use case at all. Now that DAPI is online, you can browse the Assistant packages (called DAPs, for DevAssistant Package) on the site, or use the new command in DevAssistant:

da pkg search

This command allows you to browse available assistants. With the help of

da pkg install

you can install them. In the version 0.10.0, this functionality is only available in the command-line interface of DA, but don’t worry, in the next version, there will be a full-featured GUI package browser and installer. There are more commands like info, uninstall/remove, update, and others, which can be explored by running

da pkg --help

Of course, the addition of a package index makes distributing Assistants with the DevAssistant core redundant, so 0.10.0 is the first version which does not contain any Assistants in its core distribution. With the commands mentioned above, you can however easily install the Assistants that you need.

Writing Assistants in Other Languages

One of the loudest complaints against DevAssistant has been that the Assistants are exclusively written in YAML. We have tried to explain and support our decision as much as we could, but the popular demand was so high that we decided to accommodate these wishes, and the result is what we call the DevAssistant PingPong protocol (DAPP). With this protocol, only the bare minimum of an Assistant is necessary to be written in YAML (namely the metadata, dependencies and arguments), while the main run section can be implemented in whatever language you please, as long as you use a library in that language that implements the PingPong protocol.

Since running a PingPong script is in fact just another command of our YAML DSL, you can mix both approaches to achieve best results – use PingPong scripts for hard computation problems and YAML DSL for the rest, all that in one assistant.

Currently, there is only the Python implementation, which we created as a reference, and which is hosted at our GitHub page. If you want to use your preferred language, you only need to implement a very limited set of calls in that library, and then you only need to add that library as a dependency to your Assistant package (DAP), so that other people can run it too.

Docker

As you may have noticed from our previous post, we want to offer good interoperability with Docker, therefore we greatly improved means of manipulating Docker containers in DevAssistant core. With

docker_cc:
image: $IMAGE_NAME

you can create a container, with you may start by running

docker_start:
container: $CONTAINER_NAME

The full DevAssistant/Docker reference with examples can be found at the documentation page. Not only that, you can control Docker containers with Vagrant right from an Assistant too. What you need is the vagrant_docker command runner, to which you supply the command that is to be run.

Other changes

There have been other important changes as well. Probably the most visible one is renaming the modify and task Assistant classes to tweak and extras, respectively. We have received some feedback that the original naming was not clear enough, so we talked to Mizmo, and came up with the new names, which were received much better. If you got used to running da modify ..., though, fear not, you will be able to keep doing so. The old names remain as aliases, but we will not promote them further, and all documentation will explicitly use the new naming.

In 0.10.0, we also address one of the most pressing issues with multi-platform assistants – the ability to limit what platforms an Assistant can be run on. The DA core now interprets the supported_platforms field in the meta.yaml file in your DAP (the Assistant package), and unless the user forces the installation on an unsupported platform, DA will refuse to install this assistant. This also means that any Assistants that depend on this particular Assistant will not be installed either. Of course, even in that the user can override the block manually, but they risk that the desired Assistant will not work.

Speaking of platforms, there is another important addition in the form of the DNF package manager support, which opens a way to run DevAssistant on Fedora in Python 3. Of course, even before, DevAssistant could run under Python 3, but it couldn’t install RPM packages through YUM – as you may know, YUM only works on Python 2, therefore using its resolution API was impossible from a DevAssistant instance being run in the newer version of the interpreter.

More additions have come also in the GitHub department. Many of you have called for the ability of DA to log into accounts that use the two factor authentication, and surely enough, we delivered. Beginning with version 0.10.0, you can log in from both the command line and the GUI into your two-factor protected account. A token will then be created and stored under your name, just like the password-only GitHub authentication works.

This mostly exhausts the list of major changes in the new version – if you want to see the full list, have a look at the Changelog.

Other released versions: 0.9.3

Along with the version 0.10.0, which contains all the improvements mentioned above, a bugfix release 0.9.3 is released, mostly for Fedora 21. This release contains almost all the bug fixes present in the latest release, but doesn’t contain any of the new features. We did this to err on the side of caution, and avoid breaking anything in the upcoming Fedora release, which is in a very late stage already. If you, however, want to enjoy the latest and greatest of DevAssistant in Fedora, please keep an eye out on our Twitter account and this blog, where a COPR repository with DevAssistant 0.10.0 will be announced shortly. You can then install DA from this repository instead of the main system one, which will contain only the bugfix releases.

That’s all, folks, we hope that you will enjoy the new version of DevAssistant. As always, if you find any bugs, have any sort of a suggestion, we welcome all of them. Here’s how to contact us.

Hi Tomas,
I’m actually working on a proof of concept set of assistants that would do just that. It’s at https://github.com/devassistant/devassistant-assistants-djangopoc and does precisely what you say (for Django only ATM), except it uses Vagrant instead of fig. I wouldn’t recommend trying out the POC repo on your computer yet, but I’ll be sure to announce it everywhere when I get it to a usable state.
Stay tuned!