I'm inclined to accept this RFC, except perhaps with minor changes. It
would be nice if I could get some comments on it from someone other
than me or Daniel, but if nobody else has anything to say, I will just
accept it.

-- Tim Starling

On 11/10/13 03:40, Rob Lanphier wrote:
> Hi folks,
> 
> I think Daniel buried the lede here (see his mail below), so I'm
> mailing this out with a subject line that will hopefully provoke more
> discussion.  :-)
> 
> This is an RFC we originally conceived at the Hong Kong Wikimania
> architecture discussion.  The notes from that are here:
> https://www.mediawiki.org/wiki/Architecture_guidelines/Meetings/Wikimania_2013#Changes
> 
> There has been discussion on this RFC here, so far only between Tim and 
> Daniel:
> https://www.mediawiki.org/wiki/Talk:Requests_for_comment/TitleValue
> 
> It would be good to get some other voices in that conversation.
> 
> Rob
> ---------- Forwarded message ----------
> From: Daniel Kinzler <[email protected]>
> Date: Tue, Oct 1, 2013 at 10:18 AM
> Subject: [Wikitech-l] RFC: TitleValue
> To: Wikimedia developers <[email protected]>
> 
> 
> [Re-posting, since my original post apparently never got through. Maybe I 
> posted
> from the wrong email account.]
> 
> Hi all!
> 
> As discussed at the MediaWiki Architecture session at Wikimania, I have 
> created
> an RFC for the TitleValue class, which could be used to replace the 
> heavy-weight
> Title class in many places. The idea is to show case the advantages (and
> difficulties) of using true "value objects" as opposed to "active records". 
> The
> idea being that hair should not know how to cut itself.
> 
> You can find the proposal here:
> <https://www.mediawiki.org/wiki/Requests_for_comment/TitleValue>
> 
> Any feedback would be greatly appreciated.
> 
> -- daniel
> 
> 
> PS: I have included the some parts of the proposal below, to give a quick
> impression.
> 
> ------------------------------------------------------------------------------
> 
> == Motivation ==
> 
> The old Title class is huge and has many dependencies. It relies on global 
> state
> for things like namespace resolution and permission checks. It requires a
> database connection for caching.
> 
> This makes it hard to use Title objects in a different context, such as unit
> tests. Which in turn makes it quite difficult to write any clean unit tests 
> (not
> using any global state) for MediaWiki since Title objects are required as
> parameters by many classes.
> 
> In a more fundamental sense, the fact that Title has so many dependencies, and
> everything that uses a Title object inherits all of these dependencies, means
> that the MediaWiki codebase as a whole has highly "tangled" dependencies, and 
> it
> is very hard to use individual classes separately.
> 
> Instead of trying to refactor and redefine the Title class, this proposal
> suggest to introduce an alternative class that can be used instead of Title
> object to represent the title of a wiki page. The implementation of the old
> Title class should be changed to rely on the new code where possible, but its
> interface and behavior should not change.
> 
> == Architecture ==
> 
> The proposed architecture consists of three parts, initially:
> 
> # The TitleValue class itself. As a value object, this has no knowledge about
> namespaces, permissions, etc. It does not support normalization either, since
> that would require knowledge about the local configuration.
> 
> # A TitleParser service that has configuration knowledge about namespaces and
> normalization rules. Any class that needs to turn a string into a TitleValue
> should require a TitleParser service as a constructor argument (dependency
> injection). Should that not be possible, a TitleParser can be obtained from a
> global registry.
> 
> # A TitleFormatter service that has configuration knowledge about namespaces 
> and
> normalization rules. Any class that needs to turn a TitleValue into a string
> should require a TitleFormatter service as a constructor argument (dependency
> injection). Should that not be possible, a TitleFormatter can be obtained 
> from a
> global registry.
> 
> 
> 
> _______________________________________________
> Wikitech-l mailing list
> [email protected]
> https://lists.wikimedia.org/mailman/listinfo/wikitech-l
> 
> _______________________________________________
> Wikitech-l mailing list
> [email protected]
> https://lists.wikimedia.org/mailman/listinfo/wikitech-l
> 



_______________________________________________
Wikitech-l mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to