Description
What C4Social now defines to me seem like a sub-process of the development method: the more technical-oriented flow of how maintainers and contributors can ensure a larger role for community involvement.
Yesterday I looked at a bunch of projects that use C4 in some form or other, and they had some things in common: the project deliverables (i.e. the product) were all quite technical components, and as such the target audience were mostly Developers who - when reading through a list of Problems - would be able to more or less accurately weigh and understand the ins and outs, pros and cons, and impact of validating a problem and adding an implementation to address them.
C4 to me seems tailored to this type of project + audience.
The weight of the process is in the first 2 steps now: Problem definition and validity check. This is not just technical, but there's a world of product development considerations involved here, especially for products where the UX/UI and evolution thereof are an important part of project success.
These first 2 steps encompass requirements elicitation and product design, where the interests of a range of stakeholders that are part of the community need to be considered. Doing this in an issue that is later closed may not cut it (though a 'Definition of Done' may ensure that user and design docs etc. are updated).
Having different stakeholders with their own needs, plus the requirement for the process to be 'Social' to me indicates that these two steps are more involved: there's a larger process to them. Some examples:
- Say in the community there's overwhelming consensus that a certain Problem, a feature request, is valid. Members involved are mostly Fedizens with diverse backgrounds. Great! They are 'the customer', so they expressed their need. But now a single "other stakeholder" steps in, adding from their perspective:
- Developer: "This violates our KISS and YAGNI, and need to keep stuff easy-to-use for other devs"
- Developer: "This would complicate our architecture and codebase, would need overhaul and redesign"
- Designer: "This clutters the UI, does not fit UX and product principles. Product will lose direction and focus"
- QA: "This will deteriorate the NFR's we set to adhere to. This will be too high maintenance burden"
- etcetera ..
These are a bit contrived examples, but who wins? You might argue that in the 2-step loop a consensus is reached, but it is quite involved and many of these considerations may just not be understood by a non-technical audience. There might be a need for rules where one stakeholders arguments can overrule a majority.
Other example of more intricate process is where a Problem is too large in scope (an Epic really, not just a User Story) and needs to be broken down, maybe even into 10 or more sub-Problems. Now you have dependencies on your hands that need to be managed. You'll get a backlog that needs to be prioritized. And while you are implementing them, new and independent Problems may become related and there's even more dependencies to consider (e.g. to avoid considerable tech debt).
I am not advocating to write complex sub-flows to the process. Maybe capturing these things in some clear rules and guidance is all that is needed. All I'm saying is that the single diamond decision-making step is now the place where most "Social community engagement" takes place.
Update: 2 more concrete examples.. imagine that both Signal and Keybase were both C4Social projects.
- Would BDFL decisions be overruled? In Signal in order to "protect NFR's" the backend is centralized, and no third-party clients are allowed to interact in the core network.
- Would scope creep and project direction be fully organic? Keybase went from verified identity provider to DM + filesharing social network. It caused a shift in audience that was interested in it.
- Could the project be hijacked by a high influx of certain stakeholders to the community? Both Signal and Keybase are peddling with cryptocurrencies to the horror of many (majority?) in their user base. What if an active community of cryptofans embrace your project for adoption, and immediately outnumbered the existing active members in your community