Universal Package Managers? Meet the State Tool

As an open source company, ActiveState has a long history of creating, publishing and contributing to open source. And now that the Command Line Interface (CLI) for the ActiveState Platform, the State Tool, has reached its milestone, we’re releasing it to the community via our State Tool GitHub repository.

Written in Go, the State Tool is designed to (ultimately) be a cross-platform, universal package manager for dynamic open source language runtimes. Currently, it supports Python and Perl, and can be installed on Windows, Linux and Mac.

State Tool GitHub Repository

Not Just Another Package Manager

The State Tool is being designed for us: developers, with the goal of resolving all those day to day issues that prevent us from just writing code. Issues we’re currently tackling with the goal of them simplifying them, include:

  • Environment Management, because per project virtual environments are a best practice
  • Secrets Management, because we need a simple way to securely share secrets so we can stop Slacking them (hello Twitter)
  • Cross-Platform Scripting, because some of us are using Windows
  • Dependency Resolution, because resolving dependency conflicts manually is truly dependency hell. By comparison, whenever you add a new component to your runtime environment using the State Tool, every dependency issue that arises is attempted to be resolved automatically, greatly reducing the chance for dependency hell to arise. Read how we do it in our Dependency Resolution Optimization blog post.

Universal Package Manager Written in Go

The State Tool represents the biggest Go language open source project from ActiveState. If you code in Go, there are a number of routines that might be of interest to you, including:

  • Sysinfo – a Go package that will detect the current system’s information, such as the OS, architecture, available compilers, etc. Currently works with Mac, Windows and Linux. 
  • Integration Testing Framework – this is a cross platform framework that currently supports Mac, Windows and Linux. 
  • Secrets and Key Pairs – Go routines that perform client-side encryption. Essentially, allows a user to encrypt a secret and provide a name for it that all others can use so they never see/require the key.

Or you can just start by reviewing the entire State Tool CLI repository.

Open Source Language Package Manager Roadmap

We have big plans for the State Tool, which is really just getting started making your coding life easier. Some of the items we’ll be tackling in the future include:

Embedding the State Tool – A number of organizations have built applications which require one of our ActivePython or ActivePerl distributions to run. Embedding the State Tool will allow users to get up and running with a single command.

Multi-Language Development – Most applications are written in more than one language, forcing organizations to manage multiple tools. Dependency conflicts across languages can also eat up valuable developer time to troubleshoot. As a result, we’ll be iteratively working toward making the State Tool a true universal package manager that delivers a single, consistent interface for all language management tasks, no matter the language.

Environment Management – Working on multiple applications (or multiple versions of a single application) can require different versions of the same library, resulting in conflicts if working directories aren’t well created and maintained. The State Tool aims to revolutionize the way multiple environments are created and managed by automatically creating them on demand for any/all languages required, and making switching between them as easy as typing the name of the project.

CI/CD Optimization – Most CI/CD solutions do a poor job of accommodating custom runtime environments. But by essentially pre-building the runtime and using the State Tool to deploy it seamlessly into your CI/CD containers, you will no longer need to wrestle with custom runtimes across your CI/CD chain. Read our ongoing series of blog posts about how to optimize your CI/CD solution.

And more, but we’re always looking for additional suggestions from our users, as well.

Getting Started with State Tool

Hopefully, all this has piqued your interest in the State Tool. If you want to get more involved, please:

ActiveState & Open Source

Open source benefits everyone by making code freely accessible to help solve more software development, as well as real world problems. At ActiveState, our business has been based on open source for more than two decades. We rely on open source code to create all our solutions, and have provided millions of lines of code back to the community under open source license for them to use. Some of the open source projects ActiveState sponsors and maintains include:

  • Tcl language, which we also host
  • Komodo, our code editor, which continues to have a thriving community of contributors
  • Code Recipes, which includes one of the largest Python recipe stores
  • As well as many employee-created projects

With the release of the State Tool, we hope that together we can make it simple for every developer to install, run and manage any open source language runtime, no matter the OS, dependencies, or languages used.

Related Blogs:

Goodbye PPM, Hello State Tool

Dependency Resolution Optimization – ActiveState’s Approach

Aleks Pamir

Aleks Pamir

Senior Product Manager. Aleks has worked in multiple capacities from hands-on software development to various management leadership positions for over 25 years. With experience in a wide range of technologies including networking, embedded, wireless, mobile, games, operating systems, development tools, database, location, speech and an interest in Machine Learning, he loves finding creative solutions to hard problems at the intersection of technical and business challenges.