Considered offering an Engine?
Howdy! I'm considering Jumpstart Pro for an upcoming project, and it looks great.
The only thing that gives me pause is the upgrade process:
The only thing that gives me pause is the upgrade process:
Keep in mind, the more customization you do, the harder merges will be. Instead of merging from jumpstart, you might want to cherry pick commits or manually apply changes to you repository.
Since I'd have to maintain a fork to get the upgrades, I can see things starting to get potentially unpleasant.
I've noticed some other SaaS-bootstrap style projects distribute themselves as a series of Rails Engines. With this scheme, I can just consume the engine's gem within my app.
I'm wondering if that's something that's been considered as a model for distributing Jumpstart. Having never seen the codebase, there could be some consideration I'm unaware of that makes this impossible. Just thought I might ask.
Thanks!
Hey Matt,
We use Engines for Jumpstart Pro, but we also ship the main app with the integrations already built out for you. My philosophy is there's no reason to buy a template if you have to implement that integration yourself, so we extract what we can, but opt to leave a lot in the main app.
The other problem with Engines is that they abstract the code way too much. If you want to customize how something works in the engine, you've got to override the code somehow, that's counter productive to the product I'm trying to build. When you hide the models, controllers, views, etc in an Engine, where do you override these? Do you reopen the class in initializers to override it? How about making it work properly with code reloading in development? How do you even find this code in the first place? Engines make things more complicated often times.
I want to build a template that's easy for you to turn into your own unique product. I don't want everyone's apps to look or function the exact same. This should be a foundation for you to build your ideas and get out of the way as much as possible.
Engines are a fine feature for some things, but not for others so we're using them purposefully. The payments are all implemented in the Pay gem, and we handle other things in the Jumpstart Engine.
The views and a lot of other code is directly in the Rails app where you'd expect to find it if you were to build this app yourself. That makes it real easy to customize it to your needs and I like it that way.
By not going overboard with Engines, we can keep that balance of making upgrades fairly easy, while also making the product easy to change into what you need. I'm happy to sacrifice upgrading a bit for ease of use and customization.
We use Engines for Jumpstart Pro, but we also ship the main app with the integrations already built out for you. My philosophy is there's no reason to buy a template if you have to implement that integration yourself, so we extract what we can, but opt to leave a lot in the main app.
The other problem with Engines is that they abstract the code way too much. If you want to customize how something works in the engine, you've got to override the code somehow, that's counter productive to the product I'm trying to build. When you hide the models, controllers, views, etc in an Engine, where do you override these? Do you reopen the class in initializers to override it? How about making it work properly with code reloading in development? How do you even find this code in the first place? Engines make things more complicated often times.
I want to build a template that's easy for you to turn into your own unique product. I don't want everyone's apps to look or function the exact same. This should be a foundation for you to build your ideas and get out of the way as much as possible.
Engines are a fine feature for some things, but not for others so we're using them purposefully. The payments are all implemented in the Pay gem, and we handle other things in the Jumpstart Engine.
The views and a lot of other code is directly in the Rails app where you'd expect to find it if you were to build this app yourself. That makes it real easy to customize it to your needs and I like it that way.
By not going overboard with Engines, we can keep that balance of making upgrades fairly easy, while also making the product easy to change into what you need. I'm happy to sacrifice upgrading a bit for ease of use and customization.
Notifications
You’re not receiving notifications from this thread.