A programm is made of code and setup/tweaking.
If you make a program for interconnecting element together (by definition a complex system) it can yield chaotic behaviour. What will be important will not be your code for doing so, but your setup.
You may not want to spread your specific setup, but you can release good brick of your code that may benefit from externalities (the more it has adoption, the more it enforces your position on the market). (virtuous cicle)
You can also release on purpose shitty free softwares blocking the devs from easily be able to use their platform if there are not «pro» of your complex solution... like systemd (vicious circle, the more it is adopted, the more you block competitors)