>I'm curious how you guys build features for EE. Is it a completely separate Rails project you handle manually to keep base features in sync with the community edition?
It's the same codebase with some additional code. Every few days we merge CE into EE[1], which always ends up with some merge conflicts – though those are getting better as we learn to engineer around them – and its own problems, but it works pretty well. I think this is a great system, even with its drawbacks, if you want to keep the base product as FOSS. Just be aware of the problems you'll likely run into, and avoid implementing any EE-only features that will cause crazy merge conflicts.
>EE is open source but requires a license. Do you just trust companies won't download the source code and run it. Do you have heartbeat code injected somewhere to ping servers that are running EE to homebase?
It has a built-in system for uploading the license and verifying that the license covers the users of the instance. The license (as in the copyright license) says that users cannot use EE if they get around that. We don't have many cases of piracy as far as we know, and don't care too much. No major enterprise customer would realistically pirate software since that'd be a legal nightmare if they were caught.
>I'm thinking of starting a project, charge money but also open-source it. Curious what your strategies are, especially since the project is still greenfield.
Best of luck! It's awesome to see others try to go for this kind of model, I hope it works for you :)
Some others to look at: Sentry, Mattermost, and Code Climate.
[1]: Example of a CE-to-EE merge request: https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/991