Astrum: looking forward

We’re very proud of Astrum and how it’s helped so many developers and designers create great pattern libraries. We’re also proud of how stable it’s been since we launched. In this post, I’ll discuss how we’re planning on doing some big updates to the Vue application that powers Astrum.

Time has flown by!

Internally, we’ve had a very busy period launching our own product, Leeve, and also working very hard on client work. Time has flown by (I’ve been here 6 months already 😱) and with that, the technologies that we use to power Astrum have come a long way. There’s some amazing newer features of Vue that will work well for us. These new features have also encouraged a lot of discussion about Astrum.

These discussions have focused on how we see Astrum evolving into an even more useful tool. What is now possible with Vue simply wasn’t available when we first build Astrum 2 years ago.

We’ve come to the inescapable conclusion that we need to rebuild from the ground up.

A rebuild of the application

Suggestions from the community and our own ideas would benefit from better granular control of the content and data within the Astrum application.

One area that we want to tackle is state. Specifically, the centralisation and control of state. If you’re new to modern JavaScript frameworks, state is an abstracted layer of data that can either be contained within a little component, or shared between many components. Imagine the latter being like a notice board on the fridge. Everyone can see it, but only one person in the house can make changes to it. This keeps a level of predictability and stability, but also total transparency.

We use state like this in JavaScript applications to provide a single source of truth to all of our components. It also makes it much easier to test and debug a project, which is great for the application’s resilience. In our opinion, this will be a great core change to Astrum to enable more complex additions in 
the long-term.

Because of this change in our approach to state, the new application structure will be centred around Vuex. By abstracting state into its own system, we’ll be able to improve speed with a more asynchronous approach to loading components and content. We’ll also be able to toy with ideas such as implementing web sockets to help with live reload and a command-line based node-server.

With this in mind, we’re looking to abstract the logic from components as much as possible, to keep things focussed and hopefully, more maintainable. This should also open up opportunities to introduce different types of patterns, along with pattern-level state and icon systems.

Work is already underway

The rebuild has been discussed, planned and is currently underway. Because of this, we’ll gradually be doing housekeeping around the project in terms of pull requests and issues.

We really appreciate the efforts the Astrum community go to, but unfortunately, some of the pull requests and issues that don’t align with this new rebuild will be closed. This is mainly down to the fact that we don’t want to have to delete your work straight after merging it into the core. We think that would be unfair. We’ll also work on our contributing guide so there’s no animosity about contributing to Astrum. We want to be as transparent as possible about how people can help in the most effective way.

We’re going to start organising the projects section of the repository into smaller sprints that are well labeled. This will all begin once the rebuild is in-place though. We’ll communicate when these issues are ready to be worked on for those who are keen to get involved in the project.

A note on backwards compatibility

One thing we want to reassure the community on is backwards compatibility. Although we’re re-writing the core application—we won’t break existing instances of Astrum.

When you run astrum update you’ll get the new and improved Astrum with all the new features it provides, but everything you’d setup previously will just work as it did before.

Thank you

Lastly, we want to take this opportunity to thank the Astrum community for all of their involvement over the last couple of years. The community helps to make this product as good as it is and our focus is and always willbe making Astrum both feature-rich and portable, so it can be dropped into any web project.

We’ll be periodically updating you all on the progress of the rebuild. As things progress, we’ll be able to let you all know when this will be ready to launch. For now though, we’ve got lots to do, so we’d best get cracking!

If you have any comments or questions about this rebuild, head over to this dedicated GitHub issue. You can also follow us on Twitter @getastrum.