Last September we announced Otto as a single solution to develop and deploy any application. Otto provides a high-level Appfile which describes an application, and leverages the rest of the HashiCorp tools to build development environments, provision and configure infrastructure, and lastly package and deploy the application.
Today we are decommissioning Otto and ending active development and maintenance. This is motivated by several reasons, but primarily we felt the core abstractions and the out-of-box functionality of Otto did not meet our initial goal.
At HashiCorp, new projects begin by defining a precise scope. This is in line with our Tao of HashiCorp and enables us to reason about the core architecture of the project and the various trade offs that we must make in solving any given problem. Otto was an ambitious project, and the audacious goals made it very hard to define a precise scope. We knew that Otto would leverage the HashiCorp tools, providing a higher level abstraction, rather than implementing an alternative to our existing tools.
Otto's development and prototyping revealed previously unknown challenges. While many of those challenges were addressed, and equal number uncovered architectural limitations of the tool. This was the initial signal that Otto's design was flawed.
Given these challenges, we elected to focus our attention on the supporting HashiCorp tools. Without an opportunity to redesign the core abstractions, our efforts would be wasted working directly on Otto. Instead of leaving Otto to languish in the open, we are decommissioning it. This provides us the opportunity to rethink the design and implementation of Otto. With this change we will be close sourcing Otto, however a tarball of the current master will be hosted from the Otto homepage.
We continue to believe that empowering developers and providing higher levels of abstraction is critical, but providing the right abstraction is more important that just having one. HashiCorp will continue to focus on tools like Vagrant and Nomad which are used by developers to develop and deploy applications, while we continue our research into new and more capable abstractions.