Re: [web2py] Re: Survey: Functionality of the Drop Boxes widget

2010-03-30 Thread Thadeus Burgess
Here are the results from two sources, A) The survey, and B) Listing
of community members speaking for one or the other.

A) Survey - 12 Responses ( No way to determine if anybody spammed responses )

There are no significant differences in usage scales, the hypothesis
is that it only matters for the kind of form, so 50% of the time
they are changing it one way or the other.

Preferences are split 50/50 for zero=None and zero="".

https://spreadsheets.google.com/ccc?key=0AstNNXQhkjU-dE9jS1VHSWdyd08xX2x6NU0yaEs1cnc&hl=en

B) Community Members

I have attached a OpenOffice document containing two columns. The
first column is of community members
speaking for zero=None as the default, along with the date and time.
This does not include any of my posts, though
I am a strong advocate of zero=None. The second column is of community
members arguing for zero="".

This is the general synopsis.

For Zero=""

Having zero=None represents a usability issue, assume the average user
is lazy(stupid) and provide a default
that does not validate, this is to keep them from accidentally
submitting a valid option they did not want.

For Zero=None

Change back to zero=None so old apps act the same, or they want it to
display without the blank option.
The blank option gives values that does not validate. It makes logical
sense to only have values
in the dropdown that validate. zero is an EXTRA feature and should be
turned on EXPLICITLY when needed
instead of turned OFF when not needed.

-Thadeus





On Thu, Mar 25, 2010 at 1:03 AM, mdipierro  wrote:
> Hi Thadeus.
>
> You have two objections. One is procedural and one is more
> substantial.
>
> Procedurally, I can add any feature I consider appropriate. It has
> happened before. It will happen again. In practice, it is my interest
> to keep users happy and in particular other contributors, so if I feel
> something is contentious, I do ask for people opinion. It have done so
> and I will continue to do so. And if I do not ask, you can bring it
> up. And you did well to bring this up.
>
> Now to the substantial objection. The change in question was made
> because I thought it was a good one (and I still think so), because it
> did not break backward compatibility (no application broke, it just
> caused more error messages when users failed to select a value in
> dropbox).
>
> Moreover at the time I did not think it was not going to be so
> contentious. I am not yet even sure it is contentious now, that is
> what you have to prove with the poll.
>
> Changing it back is more problematic because it will cause users to
> accidentally submit forms with default options chosen by the browser
> instead of chosen by the programmer or the user (if no default=... is
> set, the browser will automatically select the first item in the
> options). In my view that is bad software design so it shoud stay as
> it is.
>
> There a number resources on the web that give practial
> recommendations. For example http://www.cs.tut.fi/~jkorpela/forms/choices.html
> says "For a normal 1-of-many selection (apart from the two preceding
> cases), use either a SELECT element  or a set of radio buttons. In
> both cases, make sure a well-defined default is initially selected".
> zero='' provides that option for create forms.
>
> Nevertheless, I do accept the possibility that I am wrong. I have been
> wrong before. Yet you have to prove to me that I am wrong. I
> understand your case and that is not sufficient. I need to know that a
> good majority of the people think that this should be reverted.
>
> For me, backward compatibility means that we do not introduce changes
> that break web2py APIs as documented in published book. For example I
> have said over and over that the new DAL may break SQLCustomType
> because will hopefully provide a better mechanism.
>
> So let me add something new to the discussion:
>
> You mentioned difficulty in changing back the behavior of your apps.
> Here is a simple solution for that. In your db.py, before you use
> IS_IN_DB:
>
> IS_IN_DB2 = IS_IN_DB
> def IS_IN_DB(*a,**b):
>     b['zero']=None
>     return IS_IN_DB2(*a,**b)
>
> (and same for IS_IN_SET). With this piece of code your apps will
> behave as if this change was never introduced and you will not need to
> edit it.
> People who like a message can do:
>
> IS_IN_DB2 = IS_IN_DB
> def IS_IN_DB(*a,**b):
>     b['zero']=T('please choose one')
>     return IS_IN_DB2(*a,**b)
>
> Anyway. I really think the poll should have a deadline. How many votes
> do you have so far? When are you planning to close it?
>
> Massimo
>
> On Mar 24, 10:21 pm, Thadeus Burgess  wrote:
>> I am not sure of the exact time frame that this was introduced
>> (zero='', breaking backwards-compatibility) by it was only a matter of
>> a couple of months ago, not a year. The exact date was "2010-01-03" of
>> this change, 
>> athttp://bazaar.launchpad.net/~mdipierro/web2py/devel/revision/1497
>>
>> Should I point out that
>>
>> A) This was at a time when most who

Re: [web2py] Re: Survey: Functionality of the Drop Boxes widget

2010-03-24 Thread Thadeus Burgess
I am not sure of the exact time frame that this was introduced
(zero='', breaking backwards-compatibility) by it was only a matter of
a couple of months ago, not a year. The exact date was "2010-01-03" of
this change, at
http://bazaar.launchpad.net/~mdipierro/web2py/devel/revision/1497

Should I point out that

A) This was at a time when most who would have had input on this were
on holiday break, and
B) hardly enough time has passed for all community members to properly
test this and
C) I am unable to find a post about proposing the change from
zero=None to zero='choose a value'. I have searched my GMail archive,
as well as the online google groups, and have not found this
documented, I take this to mean it "creeped" in without community
approval.
 D) Must I must I must I resurrect the many posts about this? Massimo,
do a search for zero in the groups, read the posts there is ample
proof of zero=None being an issue.
E) There has been more arguments raised by the community against
zero='' than there has been for zero=''. Refer to item D for
statistics.
F) Must I also point out that this feature was added about a year ago,
and lived as zero=None for approx. 9 months before the change to
zero=''.

This is why the rapid release development of web2py is bad, we never
get a chance to test these features properly in many environments
before they are set in stone and made backwards compatible.

Perhaps there should be a time to live (TTL) for new features and
their default settings? If a new feature is implemented, put it on a 6
month TTL, if by the close of 6 months it has been stable, then add it
as part of the backwards compatibility agreement. This gives ample
time for testing by the whole of the community and all who use this
lovely framework, whilst still following a rapid-release cycle that
has been adopted.

* I am still waiting for a operation definition of backwards compatibility *

-Thadeus





On Wed, Mar 24, 2010 at 10:20 AM, mdipierro  wrote:
> It is not that simple. zero='' was introduced about one year ago
> because of popular demand at the time and very few people spoke
> against it. If you change it now you revert to the behavior you had
> one year ago but most recent applications will change behavior.
>
> This consultation should have a deadline.
>
> Massimo
>
> On Mar 24, 9:43 am, Iceberg  wrote:
>> On Mar23, 2:29pm, weheh  wrote:
>>
>> > Thadeus, it's 6 of one, half-dozen of the other to me. I use both. So
>> > in theory, it doesn't really matter which is the default. Therefore, I
>> > prefer that the default remain whatever it currently is so that I
>> > don't have to change any of my code.
>>
>> To those who use either zero=None or zero='' fifty-fifty, or who
>> always specify zero=something explicitly,
>>
>> Congratulations, because you are lucky enough that you don't need to
>> care the vote result very much. However, in this case, it is not about
>> what you choose, it is about what you believe.
>>
>> First of all, we should know that it was zero=None at the very
>> beginning when this feature was invented. Somehow, later it changed to
>> zero='' or zero='something else' back and forth.
>>
>> Now, do you believe, from the backward-compatible point of view, we
>> should choose a default value which is compatible with the old
>> versions even without zero=... being invented? If you do believe, you
>> should choose zero=None.
>>
>> Do you believe, from a minimum-changing-code point of view, this
>> efficiency appeal should not only apply for you, whom might
>> coincidentally start using web2py after it is in zero!=None era, but
>> also apply for all the developers whom already finish more or less
>> legacy apps even before the zero=... was invented? If you do believe,
>> you should choose zero=None.
>>
>> Do you believe, from a community point of view, we should not allow
>> such a precedent that, an arguable and non-backward-compatible feature
>> creep in, and then stay as-is just because "it already happen anyway"?
>> That is not wise. If you do believe, you should choose zero=None.
>>
>> It is now! Let's just end the debate.
>> I want you to 
>> vote.http://www.collegelax.us/news/wp-content/uploads/2009/01/i-want-you-t...
>>
>> Sincerely,
>> Iceberg
>
> --
> You received this message because you are subscribed to the Google Groups 
> "web2py-users" group.
> To post to this group, send email to web...@googlegroups.com.
> To unsubscribe from this group, send email to 
> web2py+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/web2py?hl=en.
>
>

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



Re: [web2py] Re: Survey: Functionality of the Drop Boxes widget

2010-03-23 Thread Thadeus Burgess
It is not so trivial to search and replace. For one, you cannot place
keyword arguments before non-keyword args. So it is not a simple
matter of find/replace IS_IN_SET(... with IS_IN_SET(zero=None...,
there will have to be parsing of the syntax to determine where to
place zero=.

I am perfectly capable of making the changes, and most likely will.

Other frameworks, have version upgrades
that happen once a month at the very least frequency, with migration
guides, change logs, and previous version supported bug fixes. Web2py
cannot do this, for one the development cycle is more along the lines
of hours/days instead of months, there are no migration logs, there are no
change logs, there is no point of reference for upgrading version to
version.

As I have asked before, if Massimo would place an operational
definition of "backwards compatibility" in the context of web2py,
otherwise it is open to interpretation, and will be judged as those
interpretations are assumed. If you are going to set a standard and a
promise, you either define the parameters of that standard, or
uphold it to the highest and most rigid interpretations. Here we
realize the reason for religious debate and war, the absence of
scientific definitions that allow individuals from all walks of life
to understand from the same perspective and context.

My interpretation is of not having to change a line of code to upgrade
my application and have it look _exactly_ the same after the upgrade.

The majority of use cases is 50/50 and depends on
the context of the form. Even for me, the use cases differ from
hobby applications to professional applications.

-Thadeus





On Tue, Mar 23, 2010 at 2:54 AM, Yarko Tymciurak
 wrote:
> Thadeus -
>
> I initially commiserated with you:  "backward compatipility is
> backward compatibility" --- but I alwasy thought Massimo held on to
> that phrase too strongly, too tightly.   It's important for the "big"
> things, but it _always_ gets in the way of meaningful, useful
> change...
>
> I think perhaps Massimo's bordering on being dogmatic about "backward
> compatibiliy" may have an affect on how people react to this.
>
> But Jonathan gives an important insight:   "I always specify zero=..."
>
> Even as "zero=..."  didn't exist before, it's easy enough to do
> globeal search and modify to put it in - it's _really_ not a big
> deal;  it's one of those things where dogmatically holding to the
> "compatability principle" is more trouble than adapting to this
> change.  If it was happening all the time, often... this would be
> annoying;   but occasionally, it is more than tolerable - it can even
> be a good thing, in the big scheme of things.
>
> You are, of course, free to see it in whatever way you happen to see
> it.  I'm just offering a summary of a counterpoint for consideration.
>
> Kind regards,
> Yarko
>
> On Mar 23, 2:22 am, Thadeus Burgess  wrote:
>> weheh, Massimo,
>>
>> The issue is the same for me, I have several web2py applications, each
>> commanding over 20 forms which make use of IS_IN_SET. I am dealing
>> with a sizable number of forms that I need to update just to fix this.
>> The fact is that web2py changed the output of how drop boxes are
>> rendered, and in turn it has broken my forms that relied on the first
>> element being selected.
>>
>> Aside from the time to alter my forms, this is an issue of promise,
>> and principle that separate web2py from other python frameworks. To
>> take a few quotes and give my interpretations of them.
>>
>> "" Another feature of web2py, is that we, its developers, commit to
>> maintain backward compatibility in future versions. We have done so
>> since the first release of web2py in October, 2007. New features have
>> been added and bugs have been fixed, but if a program worked with
>> web2py 1.0, that program will still work today. "" - Massimo Di
>> Pierro, Web2py Book, Chapter 1, Introduction
>>
>> This is the kicker, my programs no longer "work" as intentionally
>> designed. Perhaps you should re-word this as "will still
>> compile/execute/not crash" instead of "work".
>>
>> ""web2py has never broken backwards compatibility, and it will not
>> break compatibility when additional functionality is added in the
>> future. "" - Massimo Di Pierro, Web2py Book, Chapter 1.4, Why Web2py
>>
>> The definition of compatibility is very loosely defined. This quote is
>> in response to the one made that "web2py never controlled this before,
>> now it is". Regardless of if web2py controlled something previously or
>> not, it cannot change the compatibility with older versions.
>>
>> Given the scope of the web2py applications that I develop, and the
>> sheer principle of the matter, do you understand where I am coming
>> from?
>>
>> I seem to be left with the following options
>>
>> A) Update my 100+ forms and set zero=None. I view this as a complete
>> waste of my time, either manually or working a search/replace and then
>> re-testing all of my forms.
>> B) Use a patched ve

Re: [web2py] Re: Survey: Functionality of the Drop Boxes widget

2010-03-23 Thread Thadeus Burgess
weheh, Massimo,

The issue is the same for me, I have several web2py applications, each
commanding over 20 forms which make use of IS_IN_SET. I am dealing
with a sizable number of forms that I need to update just to fix this.
The fact is that web2py changed the output of how drop boxes are
rendered, and in turn it has broken my forms that relied on the first
element being selected.

Aside from the time to alter my forms, this is an issue of promise,
and principle that separate web2py from other python frameworks. To
take a few quotes and give my interpretations of them.

"" Another feature of web2py, is that we, its developers, commit to
maintain backward compatibility in future versions. We have done so
since the first release of web2py in October, 2007. New features have
been added and bugs have been fixed, but if a program worked with
web2py 1.0, that program will still work today. "" - Massimo Di
Pierro, Web2py Book, Chapter 1, Introduction

This is the kicker, my programs no longer "work" as intentionally
designed. Perhaps you should re-word this as "will still
compile/execute/not crash" instead of "work".

""web2py has never broken backwards compatibility, and it will not
break compatibility when additional functionality is added in the
future. "" - Massimo Di Pierro, Web2py Book, Chapter 1.4, Why Web2py

The definition of compatibility is very loosely defined. This quote is
in response to the one made that "web2py never controlled this before,
now it is". Regardless of if web2py controlled something previously or
not, it cannot change the compatibility with older versions.

Given the scope of the web2py applications that I develop, and the
sheer principle of the matter, do you understand where I am coming
from?

I seem to be left with the following options

A) Update my 100+ forms and set zero=None. I view this as a complete
waste of my time, either manually or working a search/replace and then
re-testing all of my forms.
B) Use a patched version of web2py that does what I want, zero=None.
This is not a desired option since keeping up with updates gets quite
complex when branching the codebase (DVCS or not). A continuous waste
of my time.
C) Re-define IS_IN_SET in one of my models, however since web2py now
assumes* requires, I need to make sure and define this for my foreign
key relationships, since sql.py uses the imported version of IS_IN_SET
instead of the global version.


* I could also make the same argument for this as it did change the
functionality of forms that used to render as text boxes but now
render as select since they are FK relationships.

-Thadeus





On Tue, Mar 23, 2010 at 1:29 AM, weheh  wrote:
> Thadeus, it's 6 of one, half-dozen of the other to me. I use both. So
> in theory, it doesn't really matter which is the default. Therefore, I
> prefer that the default remain whatever it currently is so that I
> don't have to change any of my code.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "web2py-users" group.
> To post to this group, send email to web...@googlegroups.com.
> To unsubscribe from this group, send email to 
> web2py+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/web2py?hl=en.
>
>

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



Re: [web2py] Re: Survey: Functionality of the Drop Boxes widget

2010-03-22 Thread Jonathan Lundell
On Mar 22, 2010, at 10:16 PM, Thadeus Burgess wrote:

> Just an update:
> 
> The current functionality is set at zero="" for web2py. This survey
> will only serve as a consulting referendum, it does not mean that the
> end result will be the same.
> 
> Current Number of responses: 5 (we really need more! everyone who uses
> web2py can take apart of this!)

(I think you meant: "a lot".)

I didn't answer because my answer wasn't an option: I don't care what the 
default is because I always specify zero=.

> 
> -Thadeus
> 
> 
> 
> 
> 
> On Sun, Mar 21, 2010 at 10:06 PM, Thadeus Burgess  
> wrote:
>> There is current on-going discussion of the default functionality of
>> the drop boxes widget. This is an attempt to gather information from
>> the community on this discussion. The results of this survey will
>> determine what this default functionality will be.
>> 
>> Here is the comparison of the two options currently being considered.
>> 
>> zero=""
>> 
>> This is when a drop box is rendered, there is an empty OPTION tag
>> rendered in the first that is selected.
>> 
>> zero=None
>> 
>> This is when only the options in the list are rendered. The first
>> option in the list is selected.
>> 
>> https://spreadsheets.google.com/viewform?formkey=dE9jS1VHSWdyd08xX2x6NU0yaEs1cnc6MA
>> 
>> Thank You,
>> 
>> -Thadeus
>> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "web2py-users" group.
> To post to this group, send email to web...@googlegroups.com.
> To unsubscribe from this group, send email to 
> web2py+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/web2py?hl=en.
> 


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