One piece of advice I got when porting my SaaS to Enterprise (on-prem) was NOT to create an "enterprise" branch in the source code, but instead just use one big GIANT flag such as
an environment variable "ENTERPRISE". Two branches SaaS and Enterprise will lead to pain down the road while at the outset it may seem like a good approach.
Tom: what tools did you use to build the OVF Enterprise image? How would you approach it today?
Second, did shipping all source code in plain text to enterprise clients concern you? My application was in PHP, so the source was not compiled. My thinking was, have an Enterprise License Agreement that basically says, "you can't modify, disassemble, or distribute the source code."
> Second, did shipping all source code in plain text to enterprise clients concern you?
In the early days we ran the Ruby code through an obfuscator (which came along with its own set of problems), since we offered a downloadable free trial and didn't know how paranoid we needed to be. Still, much of the codebase remained unobfuscated (CSS, scripts, etc). The hardest part was trying to discourage legit customers not to mess directly with the code, as it made upgrades nearly impossible to manage. To avoid this, we focused on building extensibility APIs into the product that would be useful for all customers. Our licenses, of course, also stipulated the things you mentioned, but hackers will be hackers, so we had to deal with some interesting circumstances from time to time.
> Our licenses, of course, also stipulated the things you mentioned, but hackers will be hackers, so we had to deal with some interesting circumstances from time to time.
Could you share two of your favourite stories related to this?
> One piece of advice I got when porting my SaaS to Enterprise (on-prem) was NOT to create an "enterprise" branch in the source code, but instead just use one big GIANT flag such as an environment variable "ENTERPRISE".
Yes! YES! Amazing advice! You’ll save yourself a lot of horror by doing this from the start. Listen to the podcast for a big discussion on this topic.
> Tom: what tools did you use to build the OVF Enterprise image?
Early on it was a mostly manual process too inefficient to even discuss (shudder). Then we moved to a Vagrant-based solution to make upgrades from any version to the latest version more streamlined. Since then a lot has changed, and I’m not sure what the toolchain GH uses today is.
> How would you approach it today?
See another answer here for thoughts on Replicated and how their tooling can do all this and way more for you.
Tom: what tools did you use to build the OVF Enterprise image? How would you approach it today?
Second, did shipping all source code in plain text to enterprise clients concern you? My application was in PHP, so the source was not compiled. My thinking was, have an Enterprise License Agreement that basically says, "you can't modify, disassemble, or distribute the source code."