Hello all.
Let me begin with the caveat that I may be missing something that enables the functionality I am about to describe. If that is true, please let me know and I will adjust my methodology accordingly.
I’m working on setting up a ContentBox site that will involve editing the out of the box security to increase the security of encryption and hashing. In working on this site it occurs to me that one potential issue with being able to edit ContentBox code is the fact that making such modifications to the ContentBox cfcs requires every change be thoroughly documented and tracked (never a bad thing, of course) to ensure that the same changes are made in the future if/when we find a need to upgrade to a future version of the ContentBox core. But I think we all know that when you’re working on a project, especially during those final hours/days before deployment when last minute changes in requirements come in, documentation can be missed or mistakes made in the documentation. Adjusting the framework to facilitate easy upgrades of modified ContentBox sites would greatly increase the sustainability ContentBox sites.
It seems to me that the way to enable this would be to create a mirrored shell of the core framework files that mimics the entire structure of the framework. Ok, now I’ll wait for the shock and laughter to subside as I know this would be a monumental task.
What would it entail? My concept would be that there would be a mirror directory structure containing a blank cfc for each and every cfc in the core. Each cfc would extend its matching, fully coded core file. Each injection, function call, etc. in the core would point to the shell mirror instead of the coded core file. This way, any upgrades would update the files in the core, leaving any modifications made in the shell mirror in tact. Either way a developer would need to work to make their site function properly upon upgrading to the newer version. But if all of the developer’s modifications are in a separate set of files from the out of the box code, I think that would encourage developers to take ContentBox (and ColdBox, for that matter, if the same were done with ColdBox) and really push it further without fear of needing to re-implement modified code every time you upgrade.
I’m curious to hear what others think of this concept?
John