It’s no surprise that here at StrongLoop we develop our software using agile methodologies, most notably scrum.  Building a next-generation API platform means we have to iterate quickly, change direction just as quickly, and re-prioritize accordingly.

As a startup, we are susceptible to whipsawing based on customer demands, changes in Node and the Node ecosystem, plus the success and adoption of our open-source and commercial products.

For a long time, we’ve been trying to figure out a way to share LoopBack’s direction and roadmap while being able to:

  • Ensure that the direction and roadmap is up to date and current.
  • Transparently show what we’re prioritizing and working on at any given time.
  • Maintain confidentiality for features to support commercial products.
  • Solicit feedback in an ongoing, actionable, and structured way.

We  think we’ve solved all but the last of the set of requirements listed above.

We run two-week sprints and predominantly work in GitHub; however we’ve found tools that integrate with GitHub to be unsatisfactory.

Then we stumbled upon Waffle.io.

If you’re not familiar with Waffle.io, it’s a agile development tool built directly on top of GitHub by a fantastic team at Rally.  With Waffle.io, we have a better way to track work AND now the means to provide transparency on what we’re working on and what we’re prioritizing literally in real time.  We use it to groom and maintain our backlog and track what the team is working on in any given sprint.  The Waffle team continues to add features and address issues: their responsiveness has made all the difference.

Here’s a breakdown of our development process:

The rough LoopBack roadmap is currently on LoopBack’s GitHub wiki.  It represents the themes around which we organize our work.  We have an ongoing discussion on how to get this polished up and updated more easily.

We meet twice a week with members of our product team, folks from the field interacting with customers, and those interacting with the community to discuss all StrongLoop products including LoopBack.

From here, work then flows into the LoopBack Waffle scrum board, show below:

Screen Shot 2015-02-18 at 8.18.38 AM

Themes are taken from the roadmap and story cards at the epic level are put into our Backlog, the first column on the Waffle board. From there, we do grooming every week with story cards that gets bubbled to the next column Top of Backlog. Every two weeks, we do sprint planning and we move story cards from Top of Backlog into a Sprint marked Sprint nn (e.g. Sprint 64). When developers starts working on issues, they take the story cards from the Planning column and move them to the In-Progress column.  As they complete story cards, they create pull requests (PRs), and as they are reviewed, move the cards to the Review column. Once a PR is reviewed, the corresponding story card is marked Done – the last column.  That’s it!

Here’s a re-cap:

Waffle Column

Description

Backlog

Everything that has been discussed and put on the backburner for prioritization from our roadmap

Top of Backlog

Story cards that have been given the highest priority to be considered during sprint planning.

Sprint nn

The current sprint cards that are prioritized but have not begun to be worked on.

In-Progress

The current cards being worked on in the current sprint

Review

Pull requests sent for peer-review before merging changes back onto our master branch

Done

Story cards that have been completed.

All community members can view all items on the Waffle board.  Community members can create new cards and edit cards they’ve created.  Feel free to upvote cards with “+1”. They are all put into the Backlog.  Maintainers with read/write access can update the cards and card status on the board itself.  In the coming weeks we’ll be standardizing our usage of GitHub tags across the LoopBack core repos. If you want to get started participating in the community and contributing to LoopBack remember we have the “Beginner Friendly” tag already in place 🙂

What’s next?

Install LoopBack and get started with designing APIs in Node!