I'll be building my first managed package as part of a client project. Because we're writing it on behalf of another company, eventually it will be released under a namespace that belongs to them, and at some point in the future on AppExchange under their name. By spring/summer of this year they'd like to see it available for private distribution to a few of their customers.
I've got some Salesforce development experience behind me, but have had zero opportunity to explore Salesforce DX because it has never been appropriate for the partner projects I've been brought into. With this project though, we do have the choice of starting from scratch using either a traditional "develop in a DE org, then migrate to beta packaging org, then finally to golden" flow, or going full DX and diving into 2nd-generation packaging.
The fact that the app won't belong to us could be a minor complication. Our devs are not going to have CRM licenses on our client's business org. My understanding is that with 2nd-generation packaging you need to link the namespace to one Dev Hub and then it can't be moved.
Anyway I just wanted to read the room on this. I'm embarking on this project at a time when older development tools (like the original Force.com IDE) are being neglected while newer ones are still pretty bleeding-edge. What's a dev to do? Is a DX approach fully-baked enough to actually use to put out a product in the near term? Possible pitfalls of taking that route and/or doing it the "old way"?
If we go with DX are there multiple divergent ways to do this?
EDIT, 2019-08-28: Just an update. We built the package for the customer using SFDX and 1st-generation packaging. It has now passed Security Review and is on AppExchange! 🎉 So that's been a very interesting experience.
At the moment, Winter '20 is slated to be when 2GP goes GA. We have not yet seen documentation of how to transition to 2GP but we look forward to seeing more.