👋 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.
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:
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.
Codes of conduct
Norms and ethics for open source communities