First of all I would like to wish everybody a Happy New year. The last year has been a great year for the ChirpStack project and many new features were added. I would like to thank the ChirpStack community for all the changes that have been contributed. Thank you!
With this post I want to give a brief overview of what I’ve been working on the past few months, and what will be released later this year.
When starting the project, I decided to have a Network Server and Application Server component. At the time this was introduced, this made a lot of sense (to me), but more and more this is becoming a bottleneck both for setup as for development. Looking at the setup part, it requires quite a lot of effort when you want to support multiple (and in some cases all) regions. Looking at the development, many (some even very simple) changes required changes to several repositories, slowing down development and making some pull-requests more complex than needed. A few months ago, I therefore decided to start merging the ChirpStack Network Server and ChirpStack Application Server. This code is not yet public, but of course will be made open-source like the current components.
Some of the changes that you are going to see as a user:
- Simplified setup as there is only one service to setup. This also means that there will be just one service to install. Many recurring issues that have been reported were related to connecting the ChirpStack Application Server with the ChirpStack Network Server or database issues because both services were configured against the same database.
- Simplified usage as some of the “bootstrapping” steps will be removed (like adding a network-server).
- Multi-region support The new version will support multiple regions simultaneously, taking away the need to setup a ChirpStack Network Server for each region. This also paves the way for devices that can switch between regions in the future.
-
Many small improvements
- New JavaScript engine (for the payload encoding / decoding)
- Cleanup of the gRPC API (some inconsistencies removed)
- Any many more…
Some of the changes that you are going to see as developer and integrator:
- Single repo Where currently you have to make modifications to multiple repos to introduce a new feature, there will be one repo to deal with which should make it a lot easier to make modifications.
- Test environment You will be able to use the provided Docker environment for both running the test as spinning up a ChirpStack environment for testing. Currently this is not possible as the Docker environments are only intended for running the tests and compiling the binaries.
- gRPC only API Historically the REST API was added in order to support the web-interface. The REST API in the current version is a layer on top of the gRPC API that translates the REST API calls to gRPC calls internally. As the updated web-interface will be using gRPC-web, this REST API translation will be removed from ChirpStack itself. You can still add the REST to gRPC translation layer yourself as an external component.
I hope you are as excited as me about these changes!