Thank you for writing this up, Naftoli.
I edited the abbreviation section ...

Heiko

2009/12/18 Naftoli Gugenheim <naftoli...@gmail.com>

> (Not sure why on Chrome the wiki article page is all centered. Reported it
> to Chrome.)
>
> Can everyone look over the article? Especially everyone "quoted" in it --
> Kris, Jim, DPP, Heiko, and anyone who I may have missed -- can you make sure
> everything represents your opinion correctly?
> Then if there is any disagreement after everyone's opinion is clarified we
> need to make some decisions together.
> This should not take much time, but it's very valuable! Thanks.
>
>
> 2009/12/15 Naftoli Gugenheim <naftoli...@gmail.com>
>
> I compiled much of this thread into
>> http://wiki.github.com/dpp/liftweb/about-naming-conventions in raw form.
>> As we continue to discuss the naming goals and guidelines and vote or decide
>> on controversial goals, that wiki page should become more consolidated and
>> less of a copy-paste of a discussion. :)
>>
>>
>> On Mon, Dec 14, 2009 at 6:32 PM, Kris Nuttycombe <
>> kris.nuttyco...@gmail.com> wrote:
>>
>>> On Mon, Dec 14, 2009 at 12:31 PM, David Pollak
>>> <feeder.of.the.be...@gmail.com> wrote:
>>> > Folks,
>>> >
>>> > Lift allows developers to create web sites that are:
>>> >
>>> > Reliable (which includes secure)
>>> > Maintainable/concise
>>> > Highly interactive
>>> > Easy to build
>>> > High Performance
>>> > Easy to on-board (initial understanding of the APIs)
>>> >
>>> > Lift's APIs should reflect these rank-ordered goals.  Some of these
>>> goals
>>> > are in tension with each other.  For example, easy on-boarding (e.g.,
>>> longer
>>> > method names, more traditional imperative style) is in tension with
>>> concise.
>>> >
>>> > There's also a very diverse Lift community.
>>> >
>>> > I use Emacs for a lot of my Lift coding.  I know folks who use TextMate
>>> for
>>> > Lift coding.  Having long method names assumes the use of an IDE which
>>> has
>>> > name completion.  Lift's APIs must serve both communities.
>>> > People are coming to Lift from Java, Ruby, PHP, and other backgrounds.
>>> > Assuming Scala conventions rather than a "best choice" for naming does
>>> a
>>> > dis-service to the polygots.  Further, most of Scala's API conventions
>>> > except for the collections stuff is not in my opinion that well thought
>>> out
>>> > or consistent.
>>> > Many of Lift's APIs have evolved correctly based on actual usage
>>> patterns.
>>> > For example, the initially counter-intuitive use of apply to set fields
>>> and
>>> > vars works far better than any other mechanism, especially when
>>> chaining
>>> > calls.  I've tried many different mechanisms (e.g., update(), Pascal
>>> style
>>> > :=, set(), etc.) for setting fields and the one that everybody
>>> gravitated to
>>> > was apply().
>>> >
>>> > We also have to consider the existing code base.  I've personally got
>>> 150K
>>> > lines of Lift-code under management.  If we start breaking APIs without
>>> a
>>> > compelling reason, it costs me money and it costs my clients less of my
>>> > time.  What's the impact to various different current users of Lift of
>>> > breaking APIs without a compelling reason (and "I like this name better
>>> than
>>> > that name" or "this name is more consistent" are not compelling
>>> reasons.)
>>> > So, my criteria for any name changes (and this is not open to any type
>>> of
>>> > negotiation and I've been 100% consistent about this since the
>>> discussion
>>> > began) is:
>>> >
>>> > If the name change can be accomplished with a deprecation of the old
>>> name
>>> > without breaking any existing APIs, then the name change can be the
>>> "better"
>>> > name.
>>> > If the name change is internal to Lift or is in a little-used feature
>>> (e.g.,
>>> > Kris's API changes in Loc) such that very few projects will likely be
>>> > impacted by a name change and those that are impacted are sufficiently
>>> savvy
>>> > that they will understand the change and be able to make it in a matter
>>> of
>>> > minutes.
>>> > Any class name or object name change that does not meet the above
>>> criteria
>>> > must be compelling.  For example, we changed from Scala Actors to Lift
>>> > Actors.  This was a substantial amount of breakage, but there were no
>>> > alternatives and the Scala Actor memory retention issues were
>>> materially
>>> > impacting many different sites and we had worked on various attempted
>>> > solutions over a 10 month period.  If we're going to break without
>>> > deprecation and the breakage is going to impact a substantial part of
>>> the
>>> > Lift community, there must be a compelling reason to make the breakage.
>>> >
>>> > On Sun, Dec 13, 2009 at 10:49 AM, Kris Nuttycombe
>>> > <kris.nuttyco...@gmail.com> wrote:
>>> >>
>>> >> To this point, the only goals that have been recommended for this
>>> >> effort are those that I've noted below:
>>> >>
>>> >> >> 1) Remove ambiguity wherever possible! There are a number of places
>>> >> >> where very similar names are used to refer to utterly different
>>> >> >> things.
>>> >>
>>> >> >> 2) As an aide removing ambiguity, consider outlawing or eliminating
>>> >> >> extremely generic names, or else establish a single way in which a
>>> >> >> given name will be used across Lift. Examples are Field, Info,
>>> Holder,
>>> >> >> etc.
>>> >
>>> > In general, this is okay, but if there's a FooHolder that holds a Foo,
>>> > what's wrong with that kind of naming?
>>>
>>> Holder is probably the least problematic of these. The only issue I
>>> have with it is that FooHolder doesn't say anything about why you
>>> might want to have that particular kind of container (or indeed have a
>>> container at all) for a Foo. In some sense, every object that contains
>>> data is a holder - and I don't think "StringHolder" makes much sense;
>>> why does FooHolder?
>>>
>>> >>
>>> >> >> 3) Avoid making the name of the return type part of the name of the
>>> >> >> method. The types should tell the story as much as possible, except
>>> in
>>> >> >> the case where multiple methods varying only in return type would
>>> >> >> exist (illegal overloads)
>>> >
>>> > I'd be interested in understanding what the specific examples are, but
>>> I'm
>>> > not sure I'm on board with this.  Sometimes getLiftResponse is a lot
>>> more
>>> > meaningful than get.
>>>
>>> There were a couple of examples of this in S that I thought were
>>> suspect, but we can address those individually. In general I think
>>> this suggestion boils down to DRY.
>>>
>>> >>
>>> >> >> 4) Prefer Scala-style accessors and mutators.
>>> >
>>> > I disagree.  This is one where I have tried a lot of different
>>> accessors and
>>> > mutators and the current crop is the best of breed.  Sure, it's a
>>> little
>>> > different, but it is much better.
>>>
>>> I'm talking more about the instances where you've got Scala classes
>>> with setX and getX rather than x  and x_= - S is inconsistent and
>>> sometimes uses getX, sometimes uses x
>>>
>>> >>
>>> >> In general, the principle goal of this effort must be improving the
>>> >> clarity of the Lift API for both new adopters and for maintainers. We
>>> >> now have two days before the "goal discussion" closes. If anyone has
>>> >> any additional objectives they'd like to voice before this window
>>> >> closes, please do so now. I'd like to hold a vote on the proposals
>>> >> above as well as any other objectives folks may have tomorrow, so that
>>> >> any -1's can be ironed out before the 15th.
>>> >>
>>> >> Kris
>>>
>>> --
>>>
>>> You received this message because you are subscribed to the Google Groups
>>> "Lift" group.
>>> To post to this group, send email to lift...@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/liftweb?hl=en.
>>>
>>>
>>>
>>
>  --
> You received this message because you are subscribed to the Google Groups
> "Lift" group.
> To post to this group, send email to lift...@googlegroups.com.
> To unsubscribe from this group, send email to
> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=en.
>



-- 
Heiko Seeberger

My job: weiglewilczek.com
My blog: heikoseeberger.name
Follow me: twitter.com/hseeberger
OSGi on Scala: scalamodules.org
Lift, the simply functional web framework: liftweb.net

--

You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en.


Reply via email to