How to deal with lots of different customizations in a code base? -



How to deal with lots of different customizations in a code base? -

we created web app utilize saas business. simple customizations can done through css overwrites , simple plugins.

however, have number of bigger "enterprise" customers "enterprise" demand customization. these customizations include changes ui, new screens, different screenflows, different backends, new features never go main app, new features may go main app in future , , forth.

for kind of bigger changes app maintain forks per customer. in fork alter things need. codebases maintain on diverging , merge , cherry-pick things master maintain them date of import stuff happens in main development tree.

it works wonder how scale in long term. wonder best way handle such customers high demand customization.

i see 3 options.

extreme modularization

this instance atom editor does. in atom done through plugin , defined interfaces.

the benefit of customizations can done isolated. don't need big fork rather multiple smaller sub components need forking , assemble via different package.json.

this comes downside of complexity. when comes ui stuff need have solid interfaces hooks build on. wonder if works atom, works complex ui. , after all, github doesn't face challenge of having maintain lots of different versions of atom customized different customers. in improve position? in end comes downwards maintaining plenty of forks instead of couple of ones.

git branches

this today. branch, rebase, merge, cherry-pick allow git grunt work , pray things not diverge much.

feature flags

i'm quite torn on one. many companies github flickr utilize feature flags extensively. asana mentioned utilize them roll out features subset of customers. in theory sounds quite if hide customizations behind feature flags , leave peaceful , in harmony 1 mutual code base. can create sure unused features striped out final compilation. emberjs does, too.

but others warn feature flags really bad maintainability in long run , should used temporally tool until feature proves stable. if utilize feature flags hide customizations have maintain them long time.

how tackle problem?

customization code-organization modularity

Comments

Popular posts from this blog

formatting - SAS SQL Datepart function returning odd values -

c++ - Apple Mach-O Linker Error(Duplicate Symbols For Architecture armv7) -

php - Yii 2: Unable to find a class into the extension 'yii2-admin' -