Announcement
· Oct 11

InterSystems Package Manager (IPM) v0.9.0 Beta

InterSystems Package Manager 0.9.0 Beta

I am excited to announce the upcoming release of InterSystems® Package Manager (IPM) version 0.9.0. This has possible impact for all users of IPM and we would welcome the community’s feedback prior to release.

How can I get involved?

As an important note, this is a beta and not yet recommended for use in production. You can find the latest v0.9.0-beta.x release at https://github.com/intersystems/ipm/releases. Under assets, there’s a file named zpm-0.9.0-beta.x.xml. Download this and then load it with $System.OBJ.Load(filename,"c"). If you find any issues, please report them at https://github.com/intersystems/ipm/issues.

When will version 0.9.0 be released on the Open Exchange?

December 16, 2024 (ultimately; we slipped on this a bit due to holidays and some unexpected late-breaking issues)

What has changed?

The most significant change is the restructuring of the codebase and rename of all classes, from %ZPM to %IPM. This isn’t expected to impact most users of IPM but if you have packages that extend or reference package manager classes, they will need to be updated. The %IPM package is mapped to the namespace-default routine database on installation, with the option (but no longer the requirement) to make it available instance-wide; the latter is done automatically on upgrade from earlier IPM versions that were available instance-wide. There are several reasons for this change:

  • InterSystems is taking real ownership of this code, so the naming should move out of a space reserved for users.
  • Code living in IRISSYS – such as classes prefaced with %Z – gets some special security exceptions that we don’t want IPM to have.
  • A package mapping approach allows different versions of IPM to run in different namespaces on the same instance. This is helpful if multiple distinct applications are running on the same instance because they are now able to update IPM independently.
  • The original %ZPM package structure was based on some early design intent that is now outdated. Renaming was also an opportunity to make the class names and package structure more intuitive.

We have added automation around testing of the most popular Open Exchange packages, which gives us confidence that the rename and numerous other changes do not have widespread functional impact.

Why is this release important?

It’s helpful to provide a bit of history here. From 2016-2018, I led a team building a package manager for use in development of InterSystems HealthShare® products and InterSystems IRIS® for Health. Our objective started out as revolutionizing the installation and upgrade process for HealthShare, but quickly shifted to taking an enormous, monolithic ObjectScript codebase and making it more modular; a package manager goes a long way to help with that. At the same time, Evgeny Shvarov saw a need for providing a standard way to define and distribute InterSystems ObjectScript-based projects from the open-source community. A package manager is the right tool for that job, too. So Evgeny and team forked the HealthShare package manager, and different teams continued to develop the two projects independently for many years. The community and Evgeny’s team made amazing contributions to ZPM, but most of InterSystems direct investment was in the HealthShare package manager, from within the HealthShare development team. Unsurprisingly, there was significant divergence between the two codebases due to differing needs and use cases, and each package manager was ahead of the other in different ways. We have finally finished reconciling the two, bringing together the best of both, and the release of InterSystems Package Manager 0.9.0 finally marks the point where we just have one package manager. Going forward, investment from InterSystems development in IPM will benefit the community (rather than just HealthShare development), and we are ready to reengage with the community that has driven so much innovation in the past. This work has been a long time coming and has gone through a few changes in ownership, but I am now the architect for IPM, with Bob Kuszewski serving as product manager.

What’s coming next?

We have a lot of big things we'd like to do. These include a focus on improved documentation, catching up with industry standards around software supply chain security, better support for publication and distribution of different artifact formats (such as deployed code targeting multiple versions), and eventually adding options to enable IPM at instance installation and namespace configuration time. We want to hear from you, too, whether that's here or through GitHub issues or discussions.

Known Issues

In general, you can see the latest known issues here: https://github.com/intersystems/ipm/projects/8

If any particularly notable new issues are discovered, I’ll update this post.

Discussion (7)5
Log in or sign up to continue