A question which is bound to come up at some stage is what happens if I change a shared module that another channel depends on and it breaks it?
To avoid this, the best practice is to keep each shared module fairly small and self-contained with a clear purpose. But it’s not the end of the world if you do break another channel with a dependency on a shared module because of this:
- Develop channel A that uses module Foo. Channel A goes into production.
- Develop channel B that uses module Foo. Foo is modified in a manner which breaks Channel A.
- But channel A is not immediately broken since it’s still using the original version of Foo. We still have the original copy of Foo under a previous milestone of Channel A. We only have to fix it when we want to do some changes to channel A.
Having source code control as a built-in part of the platform greatly reduces the problems of shared dependencies.
A lot of careful thought has gone into Iguana’s design to avoid these types of problems.