Re: Gallery's K3 class name/dir/file conventions (was "Capitalization")

Shad Laws <shad-xpYdmXCiSuZWk0Htik3J/[email protected]> Tue, 26 Mar 2013 18:03:49 +0100
Newsgroups gmane.comp.web.gallery.devel
Message-ID <CA+z51A68W=riedm-i+KTOk+4BkagfZkuk6bF8T3QRWGm=tw0vA@mail.gmail.com>
Yep, that's my thought, too.  I've been earmarking a few things that should
be changed, but have been trying to stay solely focused on translating all
of the class/file names into K3-ese.

Take care,
Shad

On 26 March 2013 17:41, Bharat Mediratta <[email protected]> wrote:

>
> Outstanding.  This advances the issue I've been (slowly!) working on which
> is to sort out the identity provider code.  I suspect that we want to
> overhaul it, but there will be so many other issues that I'd like to get it
> working for now before we redesign it.
>
> -Bharat
>
>
> On Tue, Mar 26, 2013 at 5:57 AM, Shad Laws <shad-xpYdmXCiSuZWk0Htik3J/[email protected]> wrote:
>
>> Hey everyone,
>>
>> I just finished performing the same class/file move/rename/search/replace
>> operation on the user module.  Also, I made some tweaks to the gallery
>> module to reflect this (in particular with IdentityProvider and associated
>> files) and updated PHPass.
>>
>> At this point, I *think* all of the files in the gallery and user modules
>> should talk to each other - all of the interfaces, extensions, classes, and
>> abstractions seem to be consistent between the two!  All of the
>> class/filename changes are documented in the Google spreadsheet.  I've also
>> compiled a little summary at the end of this email.
>>
>> While this process is fresh in my mind and I'm on a roll, I'm probably
>> going to the same thing for the rest of the modules before diving into
>> Formo...
>>
>> Take care,
>> Shad
>>
>> ----
>>
>> How Identity and IdentityProvider got translated (typical cases):
>>
>> Old class: /modules/gallery/helpers/identity.php --> class identity_Core
>> New class: /modules/gallery/classes/Gallery/Identity.php --> class
>> Gallery_Identity
>> Extension: /modules/gallery/classes/Identity.php --> class Identity
>> extends Gallery_Identity
>>
>> Old class: /modules/gallery/libraries/IdentityProvider.php --> class
>> IdentityProvider_Core
>> New class: /modules/gallery/classes/Gallery/IdentityProvider.php -->
>> class Gallery_IdentityProvider
>> Extension: /modules/gallery/classes/IdentityProvider.php --> class
>> IdentityProvider extends Gallery_IdentityProvider
>>
>> How IdentityProvider_Driver stuff got translated (the main driver keeps
>> its class name):
>>
>> Old class: /modules/gallery/libraries/drivers/IdentityProvider.php -->
>> interface IdentityProvider_Driver
>> New class: /modules/gallery/classes/Gallery/IdentityProvider/Driver.php
>> --> interface Gallery_IdentityProvider_Driver
>> Extension: /modules/gallery/classes/IdentityProvider/Driver.php -->
>> interface IdentityProvider_Driver extends Gallery_IdentityProvider_Driver
>>
>> Old class: /modules/user/libraries/drivers/IdentityProvider/Gallery.php
>> --> class IdentityProvider_Gallery_Driver implements IdentityProvider_Driver
>> New class: /modules/user/classes/User/IdentityProvider/Gallery.php -->
>> class User_IdentityProvider_Gallery implements IdentityProvider_Driver
>> Extension: /modules/user/classes/IdentityProvider/Gallery.php --> class
>> IdentityProvider_Gallery extends User_IdentityProvider_Gallery
>>
>> How Group_Definition stuff got translated (removed from main driver,
>> given new class name):
>>
>> Old class: /modules/gallery/libraries/drivers/IdentityProvider.php -->
>> interface Group_Definition
>> New class:
>> /modules/gallery/classes/Gallery/IdentityProvider/GroupDefinition.php -->
>> interface Gallery_IdentityProvider_GroupDefinition
>> Extension: /modules/gallery/classes/IdentityProvider/GroupDefinition.php
>> --> interface IdentityProvider_GroupDefinition extends
>> Gallery_IdentityProvider_GroupDefinition
>>
>> Old class: /modules/user/models/group.php --> class Group_Model_Core
>> extends ORM implements Group_Definition
>> New class: /modules/user/classes/User/Model/Group.php --> class
>> User_Model_Group extends ORM implements IdentityProvider_GroupDefinition
>> Extension: /modules/user/classes/Model/Group.php --> class
>> Model_Group extends User_Model_Group
>>
>> How User_Definition stuff got translated (removed from main driver, given
>> new class name):
>>
>> Old class: /modules/gallery/libraries/drivers/IdentityProvider.php -->
>> interface User_Definition
>> New class:
>> /modules/gallery/classes/Gallery/IdentityProvider/UserDefinition.php -->
>> interface Gallery_IdentityProvider_UserDefinition
>> Extension: /modules/gallery/classes/IdentityProvider/UserDefinition.php
>> --> interface IdentityProvider_UserDefinition extends
>> Gallery_IdentityProvider_UserDefinition
>>
>> Old class: /modules/user/models/user.php --> class User_Model_Core
>> extends ORM implements User_Definition
>> New class: /modules/user/classes/User/Model/User.php --> class
>> User_Model_User extends ORM implements IdentityProvider_UserDefinition
>> Extension: /modules/user/classes/Model/User.php --> class
>> Model_User extends User_Model_User
>>
>>
>>
>> On 25 March 2013 18:08, Shad Laws <shad-xpYdmXCiSuZWk0Htik3J/[email protected]> wrote:
>>
>>> Okay, 1 and 2 are done.  Also, the Google spreadsheet is up-to-date with
>>> all of the changes.
>>>
>>> My search'n'replace operation managed to make about 2800 changes!
>>>  Hopefully that should cut down on wrote tasks down the line :-)
>>>
>>> Take care,
>>> Shad
>>>
>>>
>>> On 25 March 2013 01:17, Bharat Mediratta <[email protected]> wrote:
>>>
>>>>
>>>> All looks good for me.  If you miss a few or get a few wrong it's no
>>>> big deal, we'll be able to figure them out from context and fix them up.
>>>>
>>>>
>>>> On Sun, Mar 24, 2013 at 3:34 PM, Shad Laws <shad-xpYdmXCiSuZWk0Htik3J/[email protected]> wrote:
>>>>
>>>>> Hey Bharat,
>>>>>
>>>>> Woohoo - I think we've finally arrived on the same page!  Good
>>>>> conversation, though... I feel like we both figured out a lot of nuances in
>>>>> the process.  Onward!
>>>>>
>>>>> My roadmap for the near future:
>>>>> 1. Finish moving around the remaining files in the gallery module
>>>>> (tonight)
>>>>> 2. Fire up a module-wide grep to try and autofix as much as I can to
>>>>> avoid changing every class/file name by hand (tomorrow)
>>>>> 3. Do the same thing to the user module (next couple days)
>>>>> 4. Start getting up to speed on Formo (afterward)
>>>>>
>>>>> If it helps your workflow, I can invert the order of 2 and 3...
>>>>>
>>>>> For #2, I could use a little input.  For class names, I'll grep for
>>>>> the following patterns (not yet carefully regex-ized, but you get the idea):
>>>>> 1. class::
>>>>> 2. new Class
>>>>>
>>>>> Also, I'll look for these, but check them one by one:
>>>>> 1. call_user_func, call_user_func_array
>>>>> 2. $classvar::
>>>>> 3. {$foo . "bar"}::
>>>>> 4. new $foo
>>>>> 5. new {$foo. "bar"}
>>>>> 6. class_exists, method_exists
>>>>>
>>>>> Additionally, I'll look for other files (media, views), which I think
>>>>> all occur within double or single quotes.  I may look for View( just to be
>>>>> sure I got all the views.
>>>>>
>>>>> Any others you can think of that'd be useful to grab?
>>>>>
>>>>> Take care,
>>>>> Shad
>>>>>
>>>>>
>>>>> On 24 March 2013 19:34, Bharat Mediratta <[email protected]> wrote:
>>>>>
>>>>>>
>>>>>> On Sat, Mar 23, 2013 at 3:21 PM, Shad Laws <shad-xpYdmXCiSuZWk0Htik3J/[email protected]> wrote:
>>>>>>
>>>>>>> If we're sticking with Kohana's functions and not making a
>>>>>>> wildcard-savvy loader, then this conversation is kinda moot, but for fun...
>>>>>>>
>>>>>>> <pseudo-philosophical tangent>
>>>>>>> I feel like there are three different cases here:
>>>>>>> 1. Not require a rule. (make the wildcard-savvy loader)
>>>>>>> 2. Require a rule. (be opinionated and enforce one way to do it)
>>>>>>> 3. Require a rule and make you define it. (extra line in module.info
>>>>>>> )
>>>>>>>
>>>>>>> While there are certainly arguments why 2 is better than 3, in the
>>>>>>> general case, it seems like 1 could often be better than 2, no?
>>>>>>> </pseudo-philosophical tangent>
>>>>>>>
>>>>>>
>>>>>> It's not clear to me when that would be the case - so I worry that
>>>>>> it's flexibility for flexibility's sake.  I'm ok with that if it doesn't
>>>>>> come at a cost, but in this case it makes the explanation harder.  For
>>>>>> example, it's easier for me to say "create modules/tag/classes/TagEvent.php
>>>>>> and put this in it" vs. saying "create a file in module/tag/classes that
>>>>>> ends in Event.php, like TagEvent.php and put this in it".  I'd probably
>>>>>> just tell people to use TagEvent in that case.  So then most people would
>>>>>> follow this convention - and then what would be the need for a different
>>>>>> option?
>>>>>>
>>>>>> I'm open to this - just want to understand the value proposition.
>>>>>>
>>>>>>
>>>>>>>  I'm a little mixed on this.  Some thoughts:
>>>>>>>> - I can't tell if I like the separate subdir or not.  Frankly, that
>>>>>>>> implies that there's something to separate from, but many modules can do
>>>>>>>> everything they need to do with just and event handler and a block, etc.
>>>>>>>>
>>>>>>>
>>>>>>> Personally, I do.  To me, it has a similar significance to
>>>>>>> Controller or Model, in the sense that the names of their functions have
>>>>>>> special meanings outside of the class itself.  This is not the case, for
>>>>>>> example, for the Tag.php helper, which is why it shouldn't be in any subdir.
>>>>>>>
>>>>>>
>>>>>> I'm definitely coming around to this idea.  I haven't heard a name
>>>>>> that I like, yet though.  "Gallery" is used.  "Module" is too close to
>>>>>> "Model".  "Hook" is the best I've heard but I'm mildly worried that
>>>>>> there'll be cognitive conflict with the fact that some things inside that
>>>>>> directory won't be "hooks" per se (tasks, etc).  But the more I think about
>>>>>> it the more I like it.
>>>>>>
>>>>>>
>>>>>>> I think by now I'm convinced of all points you just made, with the
>>>>>>> sole exception being the separate directory for Gallery-specific stuff.  I
>>>>>>> think it gives a meaningful distinction between it and the other stuff.
>>>>>>>  Also, it'd give us the added benefit of being able to change our mind at a
>>>>>>> later date should someone decide to build an even-more-optimized,
>>>>>>> wildcard-capable loader.
>>>>>>>
>>>>>>
>>>>>> Agreed.  Let's go with Hook for now and then if we come up with a
>>>>>> better name before launch it should be easy to just fix up everything.
>>>>>>  Onwards!
>>>>>>
>>>>>>
>>>>>>> On a semi-related note, how do we feel about underscores in "views"
>>>>>>> names?  I like the idea of adding a teeny bit of hierarchy like you did
>>>>>>> with the Tag example (certainly no more than 1 level), and that removes a
>>>>>>> decent number of them, but not all.  Example: is
>>>>>>> /modules/gallery/views/admin/advanced_settings.php fine?  My vote is yes,
>>>>>>> personally...
>>>>>>>
>>>>>>
>>>>>> Underscores don't seem to mean anything in view names, eg:
>>>>>>
>>>>>>   modules/userguide/views/userguide/examples/hello_world_error.php
>>>>>>
>>>>>> That'd be loaded as "userguide/examples/hello_world_error.php" as far
>>>>>> as I can tell.  I can't find good examples of this - but I also don't think
>>>>>> that it makes sense for it to be "admin/advanced/settings.php" so I also
>>>>>> vote for "admin/advanced_settings.php".  If we find a better model in the
>>>>>> future, renaming all this stuff should be easy and backwards compatible.
>>>>>>
>>>>>> OK!  I think this means it's time to write some code?  I'm going to
>>>>>> get going on seeing if I can sort out the IdentityProvider code...
>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>

------------------------------------------------------------------------------
Own the Future-Intel&reg; Level Up Game Demo Contest 2013
Rise to greatness in Intel's independent game demo contest.
Compete for recognition, cash, and the chance to get your game 
on Steam. $5K grand prize plus 10 genre and skill prizes. 
Submit your demo by 6/6/13. http://p.sf.net/sfu/intel_levelupd2d

__[ g a l l e r y - d e v e l ]_________________________

[ list info/archive --> http://gallery.sf.net/lists.php ]
[ gallery info/FAQ/download --> http://gallery.sf.net ]