I have a gem that has been growing for a while (e.g. mygem). There's a
lot of experimental stuff being added. So I'd like to have a mygem-core
which has the basic stuff that should be stable and fairly frozen. Then
i can quickly respond with a fix, rather than wait for the other changes
to stabilize.
I prefer to:
1) Keep the original gem name
2) Make a plugin system and move the fast-moving parts into plugins. The core gem should automatically load plugin gems.
The other stuff can go into mygem-extra or mygem-utils and
mygem-experimental. Some of it may move from "experimental" to "util" or
"extra" as the API stabilizes.
Give each experiment a reasonable name and release them as separate gems, especially if you're not interested in maintaining or exploring them forever. This allows you to hand them off to more-interested maintainers or abandon them without breaking API.
I am not clear what the best way is. Do i keep the original gem name and
make it implicitly the "core" removing all other stuff from it. Or
should i create new gems for these 3 or 4, meaning that the original gem
(name) will no longer exist.
Should i keep it in one git repo within the same directory structure
(meaning multiple gemspec files). Or divide/clone it into separate
github repos. However, I am hoping that even across these gems the root
directory will still be my gem.
Use separate repositories for separate gems. You can create an organization for your repositories on github.
Will dividing the gem lead to other problems ?
Splitting up a gem won't lead to other problems by itself.
To save yourself a possible hassle, avoid having = dependencies between the pieces. An = dependency forces you to release at least two gems at once if you want both pieces to be using the latest code. Instead use ~> to specify a version range that is acceptable.
Use a good tool like Hoe to manage the releases of your many gems. A good tool makes releasing easy, so an update that affects three of your gems will not be tedious and should take only a few minutes, not an hour or more.
···
On Nov 10, 2011, at 1:31 AM, Rahul Kumar wrote: