Heart of any open source project is development (in a broad sense, covering programming, but also all other parts which are necessary to create good software, design, documentation, etc.). That's the creative, the productive part. Doing it in a way which is accessible to others is a challenge with amazing benefits if solved in a good way.
The following stepping stones form the path of development. They are not in a specific order. Each project will pick and arrange them in a way that is suitable to them.
A technical need during development with a social benefit.
Set expectations, also in code.
E.g. coding style through tools.
Create them transparently, document them properly, be reliable and predictable, sign them.
Be conscious and explicit about your dependencies so that you know with whom you have to work and your users know what to expect and what to watch out for.
It's easier if people can apply what they already know, e.g. following standard git work flows.
Power is in combination of projects and components with dedicated purposes. Use open standards to make it composable. To foster collaboration. To make it easy to share and remix.
Building software can be one of the biggest obstacles to contributions. Make it simple. Document it well.