The road ahead, what if a Nulecule really leaves the nest?!

Preface

During the past half year I was involved in the invention and development of the Nulecule Specification and its reference implementation Atomic App. While we have come from a very small team hacking some python code, development of Atomic App is now hosted by the container-tools team of Red Hat.

We have seem some requirements and have had some reality checks, but the goal of the Nulecule Specification remains unchanged:

  • Package once. Run anywhere.

  • Compose applications from a catalog.

  • "MSI Installer for containers".

  • Change runtime parameters for different environments.

With this article I will explore a little deeper on our goals and what we archived. Additionally I will put some more goal on the list, as they have come up over the past iterations [of development].

Current State

The Nulecule Specification itself is undergoing a reality check: we are starting to use it for Red Hat’s own products, like our BitScout’s elasticsearch, but also for products of our ISVs, like Kolab.

We have some requests for extensions and some unclear formulations what have or will be fixed.

During the course of DockerCon talk with other initiatives have been started to explore the opportunities to collaborate.

So in summary: we try to keep the Nulecule Specification alive and validate opportunities to extend it and make it more usable/adopted.

Moving from the specification to the implementation, we have made great progress, Atomic App has a roadmap to it’s GA release, it is shared on github. Some providers (that is platforms atomicapp can deploy to) have been implemented, beside Kubernetes and OpenShift there is a first version of a Marathon provider.

Implementing the Nulecule Specification is on a good track, Atomic App it the reference implementation, and I have experimented with a few aspects of the Nulecule Specification with Grasshopper.

Findings

First of all, it was a hard task to extend the team of three hackers to a powerful and organized group. This is a finding for me: one needs to talk more in person and in detail if such a early handover is to be done.

Getting ISV (or application developers) on the train is also hard. Even though we have provided some examples, there is a need for a walk through style turorial.

The Nulecule Specification is good and kind of complete ™ but it lacks adoption, so we need to get a lot better on the marketing track, a shiny website, more involvement in other communities, more talks… more of eveything!

By now the Nulecule Specification is focused on multi container applications. The aspect of a library of reusable components is widely ignored by now. We need to come back to this and think of it as a quality kickstart for developers. Vašek has started the atomicapp index command, but it lacks… marketing and support by container-tools team.

Integration with cockpit is not receiving enough love, Cockpit is a perfect web based user interface to be the MSI installer part of the Nulecule/Atomic App story, but sometimes things bork…

New Requirements

For me, there is one more thing to do: deeper integration of the Nulecule Specification and application definition. If we take a closer look at how an Atomic App works, we see that the Nulecule is a layer of meta data ontop of the containers themselves. I think we can give a bigger value to persons responsible to deploy and run an application by thighly couple the Nulecule and application description. We could generate parts of the one from the other, we can reuse information present in the application on the Nulecule layer.

Again, I have started some experiments with grasshopper which need to be picked up and brought forward in a more structured way.

Conclusion

To conclude the first year of Nulecule and Atomic App work: it’s hard to kick off a new thing, and it needs a lot of work, on the marketing aspects, on community and collaboration and on technical aspects.

If I want to help with the definition of Application Entity the tight integration of Nulecule and Kubernetes/OpenShift configurations needs to get some more focus.