We use Basecamp to manage Office 365 CLI. Here is why we decided to do it and how we use it.
Office 365 CLI
Office 365 CLI is a cross-platform command-line tool that allows you to manage various configuration settings of Microsoft 365 and SharePoint Framework projects no matter which operating system or shell you use.
Office 365 CLI is an open-source project that is managed and developed in the open on GitHub as a part of the Microsoft 365 Patterns and Practices initiative. At the moment of writing this article, Office 365 CLI is managed by a team of 4 people: Velin Georgiev, Garry Trinder, Albert-Jan Schot and myself. We're all Microsoft MVPs and 3 of us are also members of Microsoft 365 PnP. We have a vibrant community with wonderful contributors who help us advance the Office 365 CLI with additional features and improvements.
So if the project is built and managed in the open, you might wonder, why do we need Basecamp?
Communicating in an open-source project
If you look at communication about Office 365 CLI you could divide it into three areas: communicating with the community of contributors and users, communicating with the rest of the PnP team, and communication between the project maintainers.
Communicating with the community
Communication with the community is very broad and spans from responding to issues on GitHub to announcing new releases and acknowledging contributions on social media. We strive to keep everyone up-to-date regarding who is working on what, what's coming, when's the next release, and what it will contain.
Communicating with the PnP team
Office 365 CLI is founded under the Microsoft 365 PnP umbrella. Regularly, PnP holds community calls where we update the community about the different projects and any noteworthy developments. Once in awhile there are things that we discuss with other PnP team members regarding new features in Microsoft 365 that could be relevant to us.
Communication among maintainers
Finally, there is us - the maintainers. The majority of our CLI work is visible on GitHub and social media. Behind the scenes however, we coordinate who of us is doing what, how we want to time and formulate particular announcements, how we should respond to a particular feature request, or whether we should consider a particular direction. Us discussing things among ourselves is not meant to hide things from others. It's meant to help us ensure that we - the maintainers are on the same page and understand the steps we're taking, the reasoning behind them, and possible implications before we take them.
So how do we facilitate all this communication?
Communication tools in Office 365 CLI
Before we discuss the different tools that we use, it's important that you keep in mind, that Office 365 CLI is run under the Microsoft 365 PnP umbrella and it's not financially backed in any way. We don't have a budget to spend on tools or anything else, so whatever tools we chose to use are either tools that we can already access or tools that are free.
Right now, all maintainers happen to be Microsoft MVPs. Three of us are a part of Microsoft 365 PnP. It's important for us to give an equal opportunity to all contributors. We want to be able to grow the maintainers' team with anyone no matter if they're an MVP, a PnP team member, or not. This is why we decided not to use any tool that would be exclusive to either of these groups. What's more, we see Office 365 CLI as a product that shouldn't be tied to any individual. Should anyone of us choose to leave the team, they should be able to do it without us losing any information or affecting how we communicate with each other.
Tools for communicating with the community
GitHub does a great job of facilitating communication with the community of contributors and users. To help everyone follow what's changed in the code, we have a clean commit log: 1 PR = 1 commit. Our backlog of work in progress and new ideas is logged and labeled in issues. We assign issues to projects to help everyone understand in which different areas we work in. We use milestones with due dates to communicate releases and their contents. For questions and discussions we originally used Gitter but replaced it with GitHub discussions which allow us to keep all public communication in one place. We publish our documentation on GitHub pages. Finally, we use social media like Twitter, Facebook, and LinkedIn to share important announcements and acknowledge contributors to the whole community.
To facilitate all that, we have a GitHub repo and a Twitter account which both can be managed by all maintainers.
Teams for (PnP) team
Microsoft 365 PnP consists of Microsoft employees and MVPs (with one exception). Because the initiative is facilitated by Microsoft, communication within that group happens in Microsoft Teams. Most of the communication in this group is conversations and we have regular calls to keep each other up-to-date on the different matters related to the projects we coordinate.
Originally, we - the maintainers had a private room on Gitter. We quickly discovered that it was hard for us to keep track of different conversations. The single-threaded view made it hard to respond to or even not to miss messages. Enabling threads only complicated things further. So when we saw that Basecamp offered a free tier, we wanted to give it a try.
How we use Basecamp to manage Office 365 CLI
Basecamp consists of a number of features: Campfire (unstructured chat), Message Board (forum), To-dos, Schedule (calendar), Docs & Files and Automated Check-ins. The only Basecamp feature we don't use is the Email Forwards.
This is a set of features available in the free plan of Basecamp that we use in Office 365 CLI.
Looking at the set of features offered in the free tier of Basecamp, it had exactly everything that we needed. We have regular chats about anything and everything for which Campfire is sufficient.
Whenever we need to discuss something specific, we post a message on the Message Board. This allows us to work asynchronously and not miss anything. While we're roughly in the same timezone, we don't work on the CLI full-time and get to see the messages whenever we have the time for it. Sometimes you could get a reply within a few minutes, sometimes in a day or two. Using the Message Board allows us to have multiple structured conversations in parallel saving us time. When we consider the particular discussion concluded, we archive the message, keeping the Message Board relevant.
Then we have tasks. Right now, we have three lists for tracking tasks: new ideas for commands we want to spec, articles that we want to write, and a generic list for everything else like presentations, social updates, or announcements. Using To-dos we can easily track who's working on what to avoid unnecessary syncing and doing the same work twice. We can also assign due dates to tasks to ensure that it's clear whenever something needs to be done before a specific date (like for the next release).
While it might not always be obvious on the outside, we follow a fixed cadence with our releases and communication. Every week we release a new preview version with new functionality and or improvements. Recently, we've decided to release more frequently to ship new features quicker. At the end of the month, we release a minor version with everything that's been in preview in that month. At the beginning of each month, we share our recent usage stats. Every week, we update an internal backlog with the most important things we're working on, shipped or planned, to keep others in the PnP team informed of the direction that we're heading. Every other week, we update the community with the latest developments in the CLI in the community call hosted by Microsoft 365 PnP. Finally, every other week we have a call with the maintainers' team to discuss any urgent matters we might have at the moment. Basecamp's Schedule helps us to keep track of all these different things.
There are a number of processes that we follow in Office 365 CLI and as I mentioned earlier, we don't want anything to be tied to any single individual. As such, we use Basecamp's Docs & Files to describe the different steps involved with anything related to CLI. Our releases are automated and how we review PRs is public, but there are a few other things that we do, that we want everyone on the team to be able to do if need be.
The final piece of Basecamp that we use is the weekly automated check-in with one single question: Have you seen anything noteworthy for the CLI this week?. It reminds us to keep our eyes and ears open to anything that could help us improve the CLI. We often respond to it with links or comments that we then discuss in more detail either during our sync calls or in the Message Board.
So far, we're happy about using Basecamp and how it helps us stay informed and manage our work.
Why not Microsoft 365
With all of us being MVPs and a part of Microsoft 365 PnP you might wonder: why aren't we using Microsoft 365 to manage the project?
First of all, there is no free Microsoft 365 tier. There is free Outlook for email and calendar, free to-dos, free OneDrive, but it's a pretty disconnected experience and one that focuses very much on an individual rather than a team collaborating on a project.
While we all have a Microsoft 365 account, we didn't want to use them, because it would lead to problems should any one of us decide to leave the team.
We also couldn't use the Microsoft tenant for this, because we don't want to require all maintainers to be an MVP and a PnP team member.
What if we could use Microsoft 365, would we use it instead of Basecamp?
What I personally like about Basecamp is its simplicity. It's meant to help you manage projects and it shines at that. We spent literally not more than a couple of minutes to set it up. The biggest hurdle we came across, if you can even call it that, was turning off email notifications, which is a flip of a button. In Basecamp we get a single dashboard that gives us quick access to everything that we need. Just like that.
Could you achieve something similar on Microsoft 365? Probably. You could set up a Teams team with Planner for tasks, Calendar, and Files. You could have a bot or a flow for the weekly automated check-in. Not sure though how effective Teams conversations would be for both structured and unstructured discussions. Still, the setup wouldn't be as easy and I'm not sure if possible at all in a tenant where you are not an admin.
That being said, if your organization already uses Microsoft 365 and you need a project space for your team, you should stay on Microsoft 365. It makes more sense from the security, data governance, and knowledge management point of view. The features you get are good enough at no additional cost. If you run an open-source project and have no budget, Basecamp's free tier is a perfect solution that just works.
Photo by Scott Graham on Unsplash