Usually the open source project are either monoliths or composed of very few components.
Do you think a project with micro-service architecture can become open-source?
Are you looking for a TS monorepo divided into packages and microservices or something else?
Majority of the services are written in Go, and three of them are in Node.
It's not a monorepo at the moment but if it helps we can make it a mono repo, not sure yet though.
Sorry, don’t really do much Go development
All good mate
Yes you can. But the installation documentation will be too long. Resources / servers required will be more. So people hesitate to try.
Solution:
Build installation bot that sets up everything on a single server to start with. Once people know that the software is a good fit, let them invest time to move micro service into different servers.
That's a great idea, or maybe I can provide machine images (e.g. AMI for AWS) that have the entire services running.
What about the contributors? Is it a bad thing or a good thing?
I am sorry. I didn't follow your question completely.
Open source project contributors can do contribution to individual mirco service on GitHub. In GitHub they are all individual projects.
You're right, each service is in a separate git repository, just there are some services (e.g. authorization) that are used by many services.
Maybe I can put the instructions in the repository/service which most of the services rely on and it becomes easier to work on each service individually.
Yes. You should maintain some amount of documentation for each service.
Should 😉
There is another way to reduce installation complexity: containerization.
So Docker or Kubernetes.
For Docker installation, you could provide
docker-compose.yaml.For Kubernetes, it's best to create your own helm chart.
Those are the neatest ways to one-click install complex multi-services OSS.
I think it's entirely possible. Lots of real world open source projects have microservice architectures.
One example is kubernetes, which is a huge open source project involving multiple system components. In their case they chose to organize everything in a monorepo.
Yes, Kubernetes is a complex system indeed. Just this project is not a monorepo.
I'm thinking about a repository which has all the instructions about how to compose the entire project and each service can be in a separate repository.