Standing on the shoulders of giants
I have been involved with the foundation since it’s early days when I attended the first London meetup. When I started the hubot-symphony project, I had an account on the public Symphony POD and that was it. Like many open source projects, I started with a selfish purpose, to facilitate moving existing chat bot tools used in my day job onto the Symphony platform as part of evaluating Symphony. Building software to interface with an API without access to the system itself was certainly a challenge for a modern software engineer and I am glad to say the route I took is consigned to history thanks to the Open Developer Platform (ODP) provided by the Foundation. I want to discuss my initial development approach and how that has evolved as the Foundation has matured.
Now, as the project evolves, these quality metrics are visible not just to the project team but also to any current or prospective users which is important in a corporate environment. At this point we’re ready to actually release some code. NPM acts as the centralised artifact registry for Node.js projects so the release process involves creating a GitHub release and publishing to NPM.
This is fully automated by requiring commits to adhere to the semantic versioning concept of defining your changes according to their scope and providing human readable documentation of the change with your commit. The semantic-release project takes this commit data to produce release notes and perform the NPM publish step. With this automation step we can guarantee that each release is fully reproducible as it’s performed by Travis CI and any change which is merged into the master branch and does not break any tests will be released. As a developer this means there’s no build recipe to follow, I can just make my changes and forget about the rest.
With the launch of the Open Developer Platform it became much easier to test and develop the project, and the project team now has access to individual user accounts on the Foundation Developer POD as well as bot accounts which can be used for integration and exploratory testing. If you join the #hubot-symphony room you may find our bot mozart online!
The end result is a software development lifecycle which does not intrude on development and gives both the project team and users a level of transparency and confidence that is hard to beat. If you’re aware of any automation tools that can raise the bar even higher, please let me know in the comments.
Stay tuned for more updates! Want the opportunity to develop a bot, app or integration for the Symphony platform? Join the Innovate 2017 Hackathon on October 3 and show us your skills! Click here to learn more.