By Daisie Huang
👋 You: You're starting a project that you hope will be adopted and used by your entire community, or at least a bunch of your colleagues and friends. You may already have an idea of what the product will look like in the end, and maybe you're already thinking about what tools you'll be using.
❓Why: Before you start building things, it's a good idea to think about the choices you have in deciding how and when and where your community will interact with your project. Do you foresee using many contributors and developers? Do you think that your project will primarily be used as a research tool by individual researchers, or is it meant to be a community resource that aggregates contributions by many researchers? Your answers to these questions may shape your choices on infrastructure.
👟 Take a step back! Before you start making decisions about your favorite technology stack or development platform, you should think about the infrastructure and trajectory of your project.
Questions to ask yourself
1. How will the project develop over time?
A project may need different infrastructure at different stages of growth. It's hard to predict a project's needs ahead of time, but planning for growth with a solid infrastructure strategy (and a governance plan) will set you up for success.
Check out these links to find resources that will help you adjust to your project's changing needs:
- Mozilla Open Leadership's Open Canvas / Lean Canvas tool for scoping a project, users, and stage of growth (blog post | tutorial)
- An introduction to agile software development models and methods
- How to set up continuous integration
2. Where should your project live?
If you're developing a research tool, consider who your future users will be. Are they tech-savvy researchers who will be comfortable with installing software on their own computers? Will your users have consistent internet access? Do they primarily do their research on their own computers, through a separate server, or directly on the Web? If you're developing a mobile app, will your users have internet access while they're using your app? Will a significant number of users be expected to contribute code changes?
If you're developing a community or a community tool, consider how often your users will interact with each other and in what ways. Are they primarily interacting with each other through code fixes and data contributions? Are they going to be sharing personal experiences with each other? Will there be in-person meetups, and if so, how many and how often? Can community calls and online meetings substitute for in-person interaction? How interactive do you expect your web presence to be?
3. How will the community relate to the project?
It's useful to consider your community values from the beginning. If you put this off until problems emerge, it will be much harder to decide how and if to enforce unspoken values.
- Design Thinking Process Guide - guide to approaching design thinking problems, from the Institute of Design at Stanford
- Design Thinking Handbook - open handbook that walks readers through the design thinking process
- Design Kit - free pdf Ideo field guide to human-centered design
- Open Source Design Community - GitHub community for open source design logos, resources, and templates
- Open Source Design Materials from Mozilla - Mozilla’s GitHub repository for the open design process, featured in their blog
- Design Method Toolkit - toolkit of hands-on exercises for ideation, concept, prototyping, interviewing, and more
Norms and conduct resources:
Codes of conduct
- Public Lab Code of Conduct
- ROpenSci Unconf Code of Conduct
- ROpenSci Developer Guide
- Mozilla Science Lab guide to developing community guidelines
Norms and ethics for open source communities