lonnieezell / Bonfire

Jumpstart your CodeIgniter web applications with a modular, HMVC-ready, backend.
http://cibonfire.com
1.39k stars 524 forks source link

0.7.1, MX Loader, and Bonfire-Next - For Discussion #1049

Closed mwhitneysdsu closed 10 years ago

mwhitneysdsu commented 10 years ago

Given #956, #979, #993, #1018, and possibly other issues (and one or two of those issues may not be directly related, but I can't be sure), and the addition of the repo for https://github.com/ci-bonfire/Bonfire-Next, I'm considering whether the loader changes in 0.7.1 should be reverted.

As I see it, the existing Bonfire repo could maintain compatibility with 0.7 (to whatever extent makes sense), so existing sites would have a code base they can rely on. We could back-port useful features from Bonfire-Next, but, once Bonfire-Next has a stable release, it would be considered the preferred code base for new sites, while the existing Bonfire code base would be primarily targeted at maintaining older sites, and transitioning those sites to Bonfire-Next.

I've been maintaining my own site on the MX Loader (from 0.7) with most of the changes from 0.7.1 back-ported to my project. The only issues I can foresee would be with features I'm unaware of in the new loader or changes that I have not back-ported simply because they were made primarily to fix issues with the new loader. I did modify the MX Loader on my site to load BF_Lang, BF_Model, and BF_Security from the /bonfire/core directory (or anything else with a BF_ prefix, though /application/core classes can override them).

I'll have to go through the changes made to CodeIgniter itself to see whether I've ported those (and, if not, whether I should). This would probably also determine whether the MY_Loader and MY_Router files that load the MX_Loader could be moved into the /bonfire/core directory (instead of the /application/core directory).

I guess my question is simply whether this sounds like a path worth taking to the other people out there using Bonfire.

boblennes commented 10 years ago

I haven't had issues with the 0.7.1 loader. Having several apps, I would prefer if a branch was kept around for a while - that is, unless it's a near seamless switch to the 0.7 loader.

Btw, what happened to Lonnie's new loader, wouldn't that be better than the old one?

lonnieezell commented 10 years ago

@mwhitneysdsu I have though of reverting the Loader changes in 0.7.1 myself, but hadn't done it yet. I agree with your earlier discussions that it seemed to be causing more problems in the long run so reverting would be good.

I did find a MUCH cleaner way to get the separation of Bonfire from everything else with standard HMVC code. Well, close to standard, anyway. The biggest solution was overriding the Loader's constructor to add BFPATH into the search path arrays for everything. You can see that in the Bonfire Next MY_Loader file. This did require a few small additions to the HMVC code itself, but I'm not too concerned about being able to upgrade that since he hasn't made any changes in around a year, IIRC.

lonnieezell commented 10 years ago

Oh, and HMVC's controller supports the BaseController's autoload array (and more than we currently do) out of the box. I hadn't realized that previously, but it negates the need for one of the BaseController methods we implemented after my Loader changes.

lonnieezell commented 10 years ago

Oh, and @boblennes to answer your question, the new Loader is in place in the 0.7.1 branch already.

As long as the Bonfire Modules class is kept in place the port back should be near seamless.

mwhitneysdsu commented 10 years ago

@lonnieezell Maybe we should archive the 0.7.1 branch somehow (I'm still not great with git terminology or determining the best way to do something like this) before reverting the changes, in case people do have issues with the going from 0.7.1 back to the MX Loader. However, I don't anticipate significant issues, given that we were primarily just trying to get it to behave the way the MX Loader did.

@boblennes Personally, I spend most of my time working on 1 site (though it was consolidated from 20-something sites over the last 2 years). I think the primary things that prompted me to open this issue are:

  1. My site still can't run with the 0.7.1 loader (though it's getting better, and some of the issues are more the fault of my site than the loader itself; I was, after all, learning PHP, CodeIgniter, and Bonfire when I started building this site, and I have been fixing those issues as I find them).
  2. I saw that the Bonfire-Next repo appeared to be using MX Loader.
  3. It becomes increasingly difficult to determine whether specific issues are related to the loader if I can't replicate them in my environment.
lonnieezell commented 10 years ago

Good idea, @mwhitneysdsu, I've created a new branch archives/0.7.1 to hold the current develop branch (along with some pull requests that I accidentally merged into master recently).

I don't see any problems, either, as long as we keep the new Modules library and don't break that. Though, come to think of it, that just came around in 0.7.1 so we don't technically have to, but I think we should since quite a few people use the develop branch.

mwhitneysdsu commented 10 years ago

The Bonfire modules have all been updated to use the library, but I copied the functions from the library into my MX/Modules class because the library is loaded by /bonfire/core/Router.php.

tolusonaike commented 10 years ago

Late to the party,

Awesome idea!

mwhitneysdsu commented 10 years ago

I believe I've merged everything pretty well, but there are still 1 or 2 items I know need to be fixed (interaction between the Loader and the Template library).

940b8a872fb20d2a3cb3f0b8618c1c35181fd96c