Re: Django/Python Job

2010-11-30 Thread Tom X. Tobin
On Mon, Nov 29, 2010 at 9:27 PM, Bita Bita  wrote:
> My client  is in a immediate need for a front end engineer whi knows
> Django, Python, AJAX, and/or html5 . This is a full time position with
> a really good pay in Palo Alto, CA. Sent me your updated resume if
> interested.

You're on the wrong group; you want django-users:

http://groups.google.com/group/django-users

django-developers is for discussion about developing Django itself,
not for using it as a web developer.

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



Re: Ticket #12248 (moving django.template.__init__ contents to django.template.base)

2010-11-29 Thread Tom X. Tobin
On Fri, Nov 26, 2010 at 8:38 PM, Russell Keith-Magee
 wrote:
> Ok - looks like I had a couple of seriously loose screws last night.
> I'll take another look today. Apologies for the confusion.

I noticed that you merged the change in — thanks!

I saw that you explicitly imported the names that used to live in
django.template.__init__ instead of simply doing "from
django.template.base import *" like I had, and I think that yours is
the better solution there; it only brings in what used to live in
__init__ (and thus is required for backward compatibility) without
further polluting the __init__ namespace unnecessarily.

Now I feel like I can hack on the django.template module without going
crazy.  :-D

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



Re: Pluggable encryption for django auth (design proposal)

2010-11-28 Thread Tom X. Tobin
On Sun, Nov 28, 2010 at 12:11 PM, Christophe Pettus  wrote:
>> I'm not arguing that a salt helps against brute-forcing a *single*
>> password (it doesn't), but it does in fact help against someone trying
>> to brute-force your entire password database (or any subset of more
>> than one password), since each password with a different salt lies
>> within an entirely different space that must be brute-forced
>> separately from the rest.
>
> I'm not sure what you mean by the "space"; I think you are thinking of a 
> rainbow dictionary attack, where the hashes are precomputed; a salt does 
> indeed help (and probably blocks) that kind of attack.  In the case of a 
> straight brute-force attack or a standard dictionary attack without 
> precomputing, the only benefit of the salt is that it makes computing the 
> candidate hash a bit longer, based on the length of the salt.  It's a trivial 
> amount of time.
>
> Remember, it's extremely inexpensive to brute-force a single MD5 or SHA1 
> hash, and the salt does not make it appreciably more expensive.  If a CUDA 
> application can brute force 700 million MD5s per second, doubling the length 
> is not really going to make it any more secure.

No, I'm not thinking of rainbow tables.  The key word here is
*single*.  As I said before, a salt *does* help against an attacker
trying to brute-force multiple passwords from your database, since he
can't simply test each brute-force result against all your passwords
at once; he has to start all over from scratch for every single
password that has a different salt.  If he only cares about one
*particular* account, the salt doesn't help, no.

But regardless, I apologize for derailing this conversation so far off.

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



Re: Pluggable encryption for django auth (design proposal)

2010-11-27 Thread Tom X. Tobin
On Sun, Nov 28, 2010 at 12:19 AM, Christophe Pettus  wrote:
> Let's do the math.  The space of eight alphanumeric character passwords is 
> 2.8e12.  Even assuming you can cut two orders of magnitude off of that with 
> good assumptions about the kind of passwords that people are picking, this 
> means that the attacker has to run about 28 billion times more computations 
> that you do.  At 10ms per password, it would take them about 447.8 years to 
> crack a single password, assuming hardware of equivalent speed.

The point is that I'm *not* assuming hardware of equivalent speed.
I'm assuming that a worst-case attacker has hardware significantly
faster than your webserver at their disposal, so I was curious if the
purported benefit still held in that case.  Maybe it does; I don't
know.


>> It does in fact slow down brute force attacks against multiple
>> encrypted passwords; each password with a different salt is within an
>> entirely different space that needs to be brute forced separately from
>> the other passwords.
>
> Remember how a brute force attack works.  Given a hash x, the attacker does:
>
> hash('' + salt) = x? No, then,
> hash('0001' + salt) = x? No, then,
> ...
>
> The only benefit of the salt here is that it makes the string to be hashed a 
> bit longer, but the benefit is linear, not exponential.

I'm not arguing that a salt helps against brute-forcing a *single*
password (it doesn't), but it does in fact help against someone trying
to brute-force your entire password database (or any subset of more
than one password), since each password with a different salt lies
within an entirely different space that must be brute-forced
separately from the rest.


> Anyway, back to the discussion of the actual proposal. :)

Sure, I didn't mean to veer things too far off course here; even
assuming the bcrypt argument doesn't hold, it's entirely possible that
someone may want to easily plug in SHA512/SHA3/whatever into their
password encryption.

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



Re: Pluggable encryption for django auth (design proposal)

2010-11-27 Thread Tom X. Tobin
On Sat, Nov 27, 2010 at 11:47 PM, Christophe Pettus  wrote:
> Actually, no, the situations are really quite asymmetrical.  In order to 
> brute-force a password, an attacker has to be able to try many, many 
> thousands of combinations per second.  To log in a user, an application has 
> to do it exactly once.  A hash computation time of, say, 10ms is probably 
> unnoticeable in a login situation, unless you have tens of thousands of users 
> logging in per minute (and if this is the case, then you probably have other 
> problems than the speed of your password hash algorithm).  But that would 
> pretty much slam the door down on any brute force attempt at a password 
> recovery.

But how far are you willing to go in your assumption of the worst-case
computational ability of your attacker?  Would tuning the hash to
(say) a 10ms delay for your web server's modest hardware translate
into a significant delay for an attacker with far more resources?
(This isn't a rhetorical question; I honestly don't know.)


> A salt is of no benefit on a brute force attack; it's function is to prevent 
> dictionary attacks, which are a different animal.

It does in fact slow down brute force attacks against multiple
encrypted passwords; each password with a different salt is within an
entirely different space that needs to be brute forced separately from
the other passwords.


> And if you are willing to assume that no attacker can ever get access to your 
> database, then you don't have to hash the password at all.

Sure, but my point was that there are various walls you can throw up
against attackers to slow them down that don't involve slowing down
your hash algorithm.


> But, as you point out, that's a separate discussion from the value of 
> pluggable encryption algorithms.

Right; I didn't mean to dissent from (or concur with) that proposal.

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



Re: Pluggable encryption for django auth (design proposal)

2010-11-27 Thread Tom X. Tobin
On Sat, Nov 27, 2010 at 10:14 PM, Christophe Pettus  wrote:
> Right now, Django's auth system pretty much uses sha1 hardwired in 
> (literally, in the case of User.set_password) for the hash.  For a discussion 
> of why a general-purpose hash function is not the best idea in the world for 
> password encryption, see:
>
>        http://codahale.com/how-to-safely-store-a-password/

Completely leaving aside the potential benefit of allowing different
hash algorithms, I think the specific argument made by the author of
that article, along with their proposed solution of an "intentionally
slow" algorithm, is the wrong approach.  Your application ends up just
as hobbled by such an algorithm as a potential attacker.  If you're
choosing a slowdown factor based on your worst-case attacker, you're
likely to significantly impair the ability of a website running on
hardware that's not as fast, especially if you're authenticating users
all the time.

I think there are better potential solutions to concerns about
password cracking.  Django already salts the hashes, which is
asymmetrical in a good way: it helps complicate brute force attacks
without slowing down Django's ability to test a given password.
Better password policies can also help; e.g., each additional letter
you require in your users' passwords exponentially increases the space
of passwords that need to be brute-forced.  In cases where your
attacker doesn't have direct access to the database, you can greatly
slow them down by only allowing a certain amount of login attempts in
a given time period.

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



Re: Ticket #12248 (moving django.template.__init__ contents to django.template.base)

2010-11-26 Thread Tom X. Tobin
On Fri, Nov 26, 2010 at 9:44 AM, Russell Keith-Magee
 wrote:
> I just took a look at your patch. For the most part, it seems fairly
> straightforward -- but I was stumped by the extremely small subset of
> symbols you've put in __all__.
>
> It makes perfect sense to me that we should adopt an __all__
> attribute, but the __all__ attribute in the patch seems excessively
> restrictive, only allowing Template, Context, RequestContext, and
> compile_string.
>
> This omits some seemingly (to me) obvious candidates, such as the
> Library, the various exceptions that a template can raise, and the raw
> building blocks - Node, NodeList, etc.
>
> Is there a particular reason that you've made __all__ so restrictive?

I'm not sure what you're referring to; I kept __all__ exactly the same
in django.template.__init__, before and after my changes.  I don't
think we should modify __init__'s __all__ when people might be relying
on those four symbols, and nothing else, being pulled in when doing
"from django.template import *".


> In the same vein, is there a reason that you chose to from base import
> *, and then delete unwanted symbols, rather than just importing the
> symbols you actually want? It seems to me like the __all__ list and
> the import list for base should actually be pretty similar.

Because I wanted to pull everything from base into the django.template
namespace; I don't want to break any existing third-party code that
happened to import a symbol defined in what used to be
django.template.__init__ but wasn't defined in
django.template.__init__'s __all__.  If I only imported the four
symbols defined in __all__, existing code like "from django.template
import TemplateSyntaxError" would break.

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



Git-using core devs: preference for merge vs. rebase?

2010-11-02 Thread Tom X. Tobin
Do the Git-using core developers have a preference for merge vs.
rebase for updating an upstream-tracking branch?  I prefer to rebase
to keep the changes in question at the branch HEAD, especially if the
branch hasn't been pushed publicly yet, but a rebase for something
that *has* been pushed means a forced overwrite is necessary, which
may trip up anyone who has already added the branch as a remote and
isn't expecting it.

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



Ticket #12248 (moving django.template.__init__ contents to django.template.base)

2010-11-01 Thread Tom X. Tobin
I've updated the changes for ticket #12248 and placed them on GitHub:

http://code.djangoproject.com/ticket/12248

http://github.com/tomxtobin/django/tree/template-import-refactor-t12248

Is there any chance this might make it into the next release?  The
ticket has been Accepted for several months, but I'm at fault for not
having kept the changes up to date until now.  There's no
functionality change; it's purely a rearrangement of django.template's
internals so future refactoring of that subpackage can avoid circular
import horrors.  All tests pass as of a few minutes ago.  I'll happily
keep the GitHub branch aggressively up-to-date until it's merged if
it's got a shot at inclusion.

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



Re: django template revision (for 1.4?)

2010-05-27 Thread Tom X. Tobin
On Thu, May 27, 2010 at 7:36 AM, Tom Evans  wrote:
> Most PHP templating languages allow you to do things that are by
> design not in django's templating, for example in Smarty, one can
> assign new variables on the fly in the template, and even do crazy
> stuff like call functions that take arguments.

This isn't impossible; you can write custom template tags that can
pretty much do anything (e.g., assign variables).  Whether I'd
*recommend* you do so is another matter; the abuse potential is high.
:-)

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



Re: Cujo .... an experimental branch of django.

2010-04-21 Thread Tom X. Tobin
On Wed, Apr 21, 2010 at 1:33 PM, Jeremy Dunck  wrote:
> On Wed, Apr 21, 2010 at 1:14 PM, Tom X. Tobin  wrote:
> ...
>> There are no formal plans (on experimental's side) to merge anything
>> from experimental to trunk.  Anyone is welcome to package up code from
>> experimental and champion a change for inclusion in Django proper, but
>> it won't be me; I'm done working with patch files and Trac tickets.
>> :-)
>
> This will be pretty difficult to pull off unless there are feature
> branches in -experimental.  Will you recommend that, at least?

Development will certainly happen in feature branches, but master will
be an integrated combination of the work done on -experimental.  I'm
absolutely not telling anyone *not* to maintain something
independently for upstream inclusion; that's just not the primary
focus of the project.

Let's move further discussion over to the -experimental mailing list.

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



Re: Cujo .... an experimental branch of django.

2010-04-21 Thread Tom X. Tobin
On Wed, Apr 21, 2010 at 1:08 PM, Tom Evans  wrote:
> On Wed, Apr 21, 2010 at 6:14 PM, Tom X. Tobin  wrote:
>> That said, we don't want to degrade the signal-to-noise ratio here, so
>> we'll be working off of the mailing list Kevin mentioned.
>>
>
> Presumably, you will be discussing anything you plan to merge from
> django-experimental to django-trunk on here in depth, and using that
> mailing list for discussing the day to day operation of that branch?

There are no formal plans (on experimental's side) to merge anything
from experimental to trunk.  Anyone is welcome to package up code from
experimental and champion a change for inclusion in Django proper, but
it won't be me; I'm done working with patch files and Trac tickets.
:-)

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



Re: Cujo .... an experimental branch of django.

2010-04-21 Thread Tom X. Tobin
On Wed, Apr 21, 2010 at 11:46 AM, Kevin Howerton
 wrote:
> Thanks for the support Russ...
>
> I think Cujo (the name at least) has been abandoned and I have joined my
> efforts with some other developers also interested in contributing to an
> experimental branch.
>
> http://github.com/tomxtobin/django-experimental
> http://groups.google.com/group/django-experimental?hl=en

Please keep in mind that this is a very new venture.  There are just a
handful of us at the moment, and we're still getting off the ground;
there's not much to "look at" yet.

That said, we don't want to degrade the signal-to-noise ratio here, so
we'll be working off of the mailing list Kevin mentioned.

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



Re: Cujo .... an experimental branch of django.

2010-04-21 Thread Tom X. Tobin
On Wed, Apr 21, 2010 at 11:53 AM, Jeremy Dunck  wrote:
> Tom, it may be inconvenient at this point, but please consider forking
> the github django repo so that upstream pulls can be handled more
> easily.

I've been running a private Git mirror of Django for a long time now,
which we source for the internal branch at The Onion, and which I'll
be pushing into experimental's "upstream" branch; I just need to set
up a cronjob to automate it.  I'd rather not have it based on the
existing GitHub django/django branch, because I don't control that
mirror and don't want to depend on it not breaking.

Aside: Interestingly enough, though, my mirror and the django/django
mirror are still hash-identical for the same commits, which means
git-svn is doing a good job of being deterministic:

- 
http://github.com/django/django/commit/ab7e351604d556af0fdf79e5efff67f2bed39034

- 
http://github.com/tomxtobin/django-experimental/commit/ab7e351604d556af0fdf79e5efff67f2bed39034

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



Re: High Level Discussion about the Future of Django

2010-04-16 Thread Tom X. Tobin
On Fri, Apr 16, 2010 at 11:13 PM, Jerome Leclanche  wrote:

> For one, there is no split between a -users mailing list and a
> -developers mailing list. Understand that the Bazaar mailing list is
> just as active as django-developers (so less active than -users +
> -developers). But it does have one clear benefit. Users don't get
> pushed around with "Django-developers is for discussion about blah
> blah blah".
> Django, even more so than Bazaar, is an application that has
> developers as its primary userbase. Using the same mailing list for
> "everything" gives developers an unique insight into what users want,
> where problems exist and gives users the feeling they are able to
> contribute more easily, including with code!

I think this is due to an unfortunate (but common) confusion of
"developers" and "users".  In the mailing list sense, "developers"
means developers *of Django itself*, not "developers who use Django";
"users" means "anyone who uses Django", which (obviously) includes
developers in the general sense of the term.

I feel the separation of mailing lists is a must, even if their names
are not necessarily ideal; considering the high volume of posts to
-users, it would be far too easy for posts about developing Django
itself to get lost there.

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



Re: High Level Discussion about the Future of Django

2010-04-16 Thread Tom X. Tobin
On Fri, Apr 16, 2010 at 10:10 PM, Russell Keith-Magee
 wrote:
> However, at this point, I would like to tell you a story about four
> people named Everybody,  Somebody, Anybody, Nobody.

This is exactly why I try not to bitch too much about Django's
development process.  It's very easy to complain, but it's not quite
so easy to "shut up and show me the code".

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



Long-running tests

2010-04-16 Thread Tom X. Tobin
I recently noticed that the Django test suite seemed to be ballooning
in run time, so I wrote a new test runner that tracked run times.  I
set it to emit run times longer than two seconds, and had the
following results (under PostgresSQL, since that's what we use in
production):

**
Long run (3s): test_user_creation
(regressiontests.admin_views.tests.IncompleteFormTest)
Long run (1090s): API_TESTS (modeltests.fixtures.models.__test__)
Long run (8s): test_table_exists
(modeltests.proxy_model_inheritance.tests.ProxyModelInheritanceTests)
Long run (106s): API_TESTS (modeltests.fixtures_model_package.models.__test__)
Long run (109s): API_TESTS (modeltests.aggregation.models.__test__)
Long run (6s): test_correct_url_but_nonexisting_gives_404
(modeltests.validation.tests.BaseModelValidationTests)
Long run (14s): API_TESTS (regressiontests.queries.models.__test__)
Long run (7s): test_urlfield_39
(regressiontests.forms.fields.FieldsTests)
Long run (105s): API_TESTS
(regressiontests.aggregation_regress.models.__test__)
Long run (225s): test_json_serializer
(regressiontests.serializers_regress.tests.SerializerTests)
Long run (105s): test_json_serializer_fields
(regressiontests.serializers_regress.tests.SerializerTests)
Long run (112s): test_json_serializer_stream
(regressiontests.serializers_regress.tests.SerializerTests)
Long run (213s): test_python_serializer
(regressiontests.serializers_regress.tests.SerializerTests)
Long run (112s): test_python_serializer_fields
(regressiontests.serializers_regress.tests.SerializerTests)
Long run (213s): test_xml_serializer
(regressiontests.serializers_regress.tests.SerializerTests)
Long run (112s): test_xml_serializer_fields
(regressiontests.serializers_regress.tests.SerializerTests)
Long run (105s): test_xml_serializer_stream
(regressiontests.serializers_regress.tests.SerializerTests)
Long run (2s): test_expiration
(regressiontests.cache.tests.DBCacheTests)
Long run (2s): test_set_many_expiration
(regressiontests.cache.tests.DBCacheTests)
Long run (2s): test_expiration
(regressiontests.cache.tests.DummyCacheTests)
Long run (2s): test_expiration
(regressiontests.cache.tests.FileBasedCacheTests)
Long run (2s): test_set_many_expiration
(regressiontests.cache.tests.FileBasedCacheTests)
Long run (2s): test_expiration
(regressiontests.cache.tests.LocMemCacheTests)
Long run (2s): test_set_many_expiration
(regressiontests.cache.tests.LocMemCacheTests)
Long run (112s): API_TESTS
(regressiontests.m2m_through_regress.models.__test__)
Long run (4s): API_TESTS
(regressiontests.fixtures_regress.models.__test__)
**

Sticking out like a sore thumb is API_TESTS under
modeltests.fixtures.models.__test__, which clocks in at 1090
seconds(!).  The serializer tests also seem to take a pretty chunk of
time at about 1-3 minutes each.  I run the test suite fairly regularly
(since we merge from upstream aggressively), and the total run time
recently jumped from about 20 minutes to around an hour.  Any ideas as
to why these tests are taking so long?

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



Re: High Level Discussion about the Future of Django

2010-04-16 Thread Tom X. Tobin
On Fri, Apr 16, 2010 at 9:36 PM, Russell Keith-Magee
 wrote:
> On Sat, Apr 17, 2010 at 12:33 AM, sago  wrote:
>>
>> On a completely unrelated note, any plans to move Django to git?
>
> I answered this exact question earlier in this thread. The answer is
> no, because it would make exactly no difference to anything. Search
> out the earlier answer for more detail.

I *strongly* disagree with "it would make exactly no difference to
anything", and I'd like to address it at some point in the future.
I'll start bugging you guys about it after you're done with the 1.2
push.  :p

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



Re: High Level Discussion about the Future of Django

2010-04-16 Thread Tom X. Tobin
On Fri, Apr 16, 2010 at 4:34 PM, Taylor Marshall
 wrote:
> On Fri, Apr 16, 2010 at 12:23 PM, Tom X. Tobin  
> wrote:
>> None of this means that I think the core development process should
>> change.  (Well, besides my fervent desire that they officially adopted
>> git — and yes, I do believe it *would* make a difference, centralized
>> "official" branch and all — but that's a discussion for another time
>> and a few beers.)
>>
>
> You might be able to make a case on the whole DVCS thing in general,
> but I'm not sure why any particular flavor is necessarily *the* choice
> (i.e. the whole git vs mercurial vs bazaar holy war).

There's a *huge* difference between git and the other DVCSs
(completely different model), but let's save that for another time.
:-)


>> So ... who has a GitHub account and some neat code to look at?  :-)
>>
>
> There's already a unofficial mirror on GitHub which is maintained by jezdez:
>
> http://github.com/django/django
>
> Doesn't that solve the "make it easier to branch and track upstream
> changes" thing?

No, because it doesn't address ultimately pushing back up from the
DVCS-using developers; git makes me loathe submitting patch files to
Trac.  But gah, again, I'd rather address the DVCS issue another time.

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



Re: High Level Discussion about the Future of Django

2010-04-16 Thread Tom X. Tobin
On Fri, Apr 16, 2010 at 11:23 AM, Tom X. Tobin  wrote:
> But here's the great part: nothing is stoping anyone from hacking new

Argh, the snoot in me just winced at re-reading my post and noticing
that I misspelled "stopping".  ::hangs head::

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



Re: High Level Discussion about the Future of Django

2010-04-16 Thread Tom X. Tobin
On Fri, Apr 16, 2010 at 10:32 AM, Jacob Kaplan-Moss  wrote:
> I'm not arguing that "stability, maturity, and longevity" are
> "correct" priorities, only that, well, those are the ones we've
> chosen. I'm not saying it's "wrong" to want more rapid improvement,
> only that it's lower on *my* list.

My priorities overlap, but not completely.

Stability is very important to me, and should be important to *anyone*
whose livelihood depends on Django.  Stability is a large part of the
reason we *can* run our own Django branch and run production sites
based on it, yet not lose our minds in the process.

Maturity is fairly important; I want solutions that have experience
and judgement behind them.  Maturity can become rigidity, though; I
enjoy exploring new ways to solve existing problems, and a new, but
superior, solution isn't — strictly speaking — "mature".

Longevity is where I part ways; I'd much rather have a clean break
than keep working around a wart.  I think my overriding principle here
is correctness; I'm perfectly happy to do the work to fix my code if
it means adopting the *right* solution.

None of this means that I think the core development process should
change.  (Well, besides my fervent desire that they officially adopted
git — and yes, I do believe it *would* make a difference, centralized
"official" branch and all — but that's a discussion for another time
and a few beers.)  Django has been very successful with the current
process, and I'd be very wary of tinkering with the foundations of
that success.

But here's the great part: nothing is stoping anyone from hacking new
paths through the jungle on their own branches.  What you *can't* get
— and honestly *shouldn't* get — is automatic recognition that your
branch is somehow officially supported, and all the notions of
stability, maturity, and longevity that go with that recognition.  If
you know enough to make significant changes to Django, you also
probably know enough to fix the problems that can crop up due to your
changes — and that's not something we should expect from the average
developer who just wants to Get Work Done.

So ... who has a GitHub account and some neat code to look at?  :-)

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



Re: High Level Discussion about the Future of Django

2010-04-16 Thread Tom X. Tobin
On Fri, Apr 16, 2010 at 9:32 AM, Mike  wrote:
> On Apr 15, 3:32 pm, Jacob Kaplan-Moss  wrote:
>> For better or worse, we've chosen a development policy that
>> prioritizes stability, maturity, and longevity. If those aren't your
>> priorities, then perhaps a fork is the right answer.
>>
> Correct me if I'm wrong but I read it as "If you do not like our
> policy
> then stability, maturity, and longevity aren't your priorities".
> With all due respect it is not fair.

Logically speaking, P -> Q doesn't imply Q -> P.

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



Re: High Level Discussion about the Future of Django

2010-04-15 Thread Tom X. Tobin
On Thu, Apr 15, 2010 at 1:57 PM, Kevin Howerton
 wrote:
> "You seem to be suggesting that a fork will somehow magically fix the
> speed of Django development. I ask you: who is going to work on this
> fork?"
>
> I think a hostile fork is almost a certain outcome if development
> continues as it has.  Not only is the resistance to make backwards
> incompatible changes in future releases a bad policy for the quality
> of the framework, but the behavior in trac has a negative effect on
> community contributions.
[...]
> Personally I believe my time might be better spent developing a fork,
> than arguing over clear flaws in architecture decisions that "can't be
> changed".

Django is BSD licensed; no one is going to stop someone from making a
fork if they want to.  That no one has done so is, IMHO, a good sign
that the Django codebase and development process is considered solid
by the community.

Solid, of course, can sometimes be boring.  :-)  There's nothing wrong
with public experimentation; why not push a Django branch up on GitHub
with some features you find interesting?  You don't have to "fork" in
order to develop your own branch; we've been maintaining an internal
branch of Django at The Onion for a couple of years now, but we still
track upstream aggressively.  Sometimes I wonder if a long-running
experimental playground branch (or branches) on GitHub would be a
healthy way to direct some of the energy and interest in less
conservative changes; as pieces matured there, they could be
considered for the mainstream trunk, and trunk would in turn remain
nice and stable.

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