Data Sheet for Coders: Advanced Package Management
Understand how you can automatically build your Python, Perl or Tcl environment, and then package it for Windows, Linux or Mac – all without requiring language or operating system expertise.
Advanced Package Management For Coders
Python, Perl and Tcl all include native tooling to help you manage dependencies, but they don’t address key issues in the modern development process. If you code or lead a team of coders, you’ve probably run across a number of issues with your existing package manager that have proven to be time wasters at best, and intractable at worst, including:
- Dependency Conflicts – Resolving dependency conflicts (aka “dependency hell”) can be straightforward, or it can be a nightmare.
- Reproducing Environments – Ever needed to update a five year old version of your product for that one key customer? If so, you may have been surprised to find that you can no longer rebuild its development environment.
- Compiling Linked Libraries – With a pressing deadline, you don’t really have the time to create or update a compiler environment just to build a single dependency’s C libraries.
- Works on My Machine Issues – These inconvenient annoyances are unavoidable, suck up time better spent coding, and can even completely derail a release.
Automatically Build From Source Code
More and more, building a language core or its third party dependencies from source code is becoming a lost art. Given the choice, It’s far easier to just just download and install binaries. However, in some cases, binaries may not be appropriate, if:
- Corporate policies require all language artifacts to be built from source for security and/or compliance reasons.
- Exploits, such as similarly named dependencies or hacked author accounts, lead to installing compromised binaries from a language ecosystem’s official repository.
- The latest version of a dependency is only available as source code, or requires patching to eliminate a critical vulnerability.
The ActiveState Platform can automatically build your Python, Perl or Tcl environment while resolving all dependencies (or else providing you with conflict resolution details so you can manually resolve the issue), and then package it for Windows, Linux or Mac – all without requiring language or operating system expertise on the part of the user.
Reproducing a language environment gets more difficult over time as dependencies age and transitive dependencies shift. While artifact repositories help, nothing short of a full VM snapshot can guarantee reproducibility for OS-level dependencies. As a result, you may find yourself in a “can’t reproduce the build” situation when you need to update an older version of your product.
The ActiveState Platform saves a copy of all your Python, Perl and Tcl dependencies, as well as OS-level and other transient dependencies so you can always restore the language environment for your project if it becomes corrupted or outdated, even years later.
Eliminate “Works On My Machine”
When developers build their own dev environments, DevOps is often challenged to create a standard language environment for their CI/CD chain that can accommodate any discrepancies. Even when containers are employed, DevOps may still struggle to ensure the language environment is consistent because most CI/CD vendors provide poor support for custom environments that contain commercial, vendored or otherwise non-publicly-available dependencies.
The result can be inconsistent language environments between developer systems, as well as across dev, test and production environments. If you’re spending too much time troubleshooting these inconsistencies, the ActiveState Platform can help.
It provides all team members with a pre-built environment, as well as tooling that can ensure everyone installs a standard, consistent language environment. When the environment is updated, developers can refresh their system with the latest version via a single command, ensuring they can always stay in sync. Additionally, DevOps can pull the same pre-built environment into their CI/CD vendor’s containers using our State Tool CLI, eliminating typical CI/CD issues with custom environments. Production deployments can be dealt with in much the same way, ensuring consistency across all environments.
Language ecosystems, operating systems, build tooling, and dependencies continually change. Trying to line up all these factors in order to automatically build any arbitrary runtime environment at any point in time is a combinatorially complex problem. While the ActiveState Platform envisions to automate all of this in the near future, our beta can already help you create a Python, Perl, or Tcl runtime that acts as the single source of truth for all developers working on your projects, as well as DevOps managing your CI/CD processes.
At ActiveState, we use the Platform to build not only our popular open source language distributions, but also custom runtimes for our enterprise clients (i.e. builds containing just the language and packages their project requires). As a coder, you are welcome to try the Platform for free and use it for your projects.