Almighty

Almighty is an open source upstream project by Red Hat for end to end application development and management. Developed in Golang and Angular2, Almighty’s vision is to enable any developer to plan, code, test, build and deploy their applications.

Currently, the Project is divided into 4 stages:

  1. Planner
  2. Test
  3. Build
  4. Deploy

Right now the main focus of Almighty is on the Planner stage.

What is the Planner?

The Planner is an aggregation of remote issue trackers like Github, Jira, Trello and Bugzilla.

The aim here is to import issues from these issue trackers and display them on the Planner window. So that it becomes a one-stop for people, even if different teams are using different tools to track issues; a common situation for big enterprises.

Work for the Planner stage is in full swing. In the coming months, we will have a code editor, test environment and deployment tools covered too.

Whenever I start telling these things to anyone, I mostly get two questions:

  1. There are many projects like this, so why is RedHat reinventing the wheel?
  2. But why in Golang??

So for the first question, I’d say that, yes, many projects like this already exist or are under development, but none of them is open sourced!

Apart from this fact, the best feature is the OpenShift’s integration within Almighty. With Openshift on the same application, you don’t need to worry about scale.

As for the question around Go, I might not be the best person to answer that. I have been previously working in Python/ Django. This is the first time I am working in Go. It is a completely new experience, yet the advantages of using Go were visible early on in the project.  Some of the advantages of Go I can relate to are:

  1. Go’s support for concurrency at the language level.
  2. Go’s quick compilation time.
  3. Go’s Error Handling is very efficient.
  4. Go’s ever efficient garbage collection.
  5. Goroutines!!

For the Planner stage, we are using the Goa framework. Goa provides an efficient design first approach for building microservices in Go.

My contribution to the project so far

I have integrated the Github API in the Almighty-core. The code for the same can be found here: Integrating GithubAPI

One of the favourite tasks I worked on was, to filter the work-items(henceforth we will call each issue a work-item) assigned to the logged-in user.

Working on this issue, I learned how to query a JSONB in Postgres. The field  was an array, and that posed a challenge.

After creating the gin INDEX I had to use the @> operator to query the database, hence made support for the related query in Almighty-core. Wola! the task was done 🙂 🙂

You can view my commits to the project so far here: ALM work

 

As for the project, Almighty is going on a super fast pace and its first stage, the Planner has got many features up and running. From work-item linking to adding comments, we have covered it all.

For future updates about rest of the stages in Almighty, stay tuned.

Thanks for reading.

Cheers!!

For the curious ones, here are the links for further references: