O que é o django.contrib?
Jacob Kaplan-Moss adicionou em seu blog um post interessante com algumas considerações sobre o django-contrib. Embora não seja uma declaração oficial da equipe de desenvolvimento do Django, é um texto bem interessante e lança alguma luz sobre o que podemos esperar do futuro do framework. Boa leitura!
O que é o Django Contrib?
tradução de Walter Cruz
Já que é uma pergunta recorrente, eu pensei em gastar um tempinho escrevendo minhas idéias a respeito do que o django.contrib realmente é, e o que realmente significa a inclusão de um pacote nele.
Essa é apenas minha opnião pessoal — de fato, é por isso que eu postei aqui ao invés de adicionar esse conteúdo na documentação oficial do Django. Porém, a maior parte do core team do Django discutiu esse tópico extensivamente na DjangoCon, então eu estou bem seguro que há um certo consenso sobre essas idéias.
Em resumo, o django.contrib contém implementações opcionais e padronizadas de padrões comuns. Isso é:
- Opcional: pacotes do contrib devem ser removíveis. Você deve ser capaz de executar um rm -rf django/contrib e o Django não deve quebrar.
Leitores astutos vão perceber que o django.contrib.contenttypes viola essa regra. Eu penso que isso deveria ser considerado um bug.
Com isso, os pacotes do django.contrib idealmente não devem ter "acesso especial" à qualquer coisa interna do Django — tudo o que um pacote do contrib faz deve ser possível de ser feito em um aplicativo externo. Novamente, leitores astutos irão notar que quebramos essas regras em alguns lugares, e, mais uma vez, isso deve ser considerado um bug.
- Padronizadas: tudo no contrib precisa ser geralmente aceito como a Forma Correta de fazer algo pela grande maioria dos usuários.
django.contrib.sessions é um exemplo disso. Existem muitas formas de lidar com sessções, mas a forma que o Django faz — um identificador de sessão opaco no cookie, com todos os dados armazenados no backend — é geralmente aceito como uma ótima prática. Sim, existem outros meios de implementar sessões — posso citar, por exemplo, cookies assinados — mas a técnica usada pelo django.contrib.sessions geralmente funciona para a maior parte dos usuários.
- Padrões Comuns: pacotes no contrib devem resolver problemas encontrados frequentemente por desenvolvedores web comuns. Então, eu gostaria de argumentar contra a inclusão de algo como o django-reversion. Ele é muito legal e eu o uso, mas o rastreamento de dados versionados nessa granularidade não é algo necessário na vasta maioria dos sites.
Bons pacotes do contrib devem tratar questões que não sejam triviais, que sejam propensas a muita discussão, e que sejam difíceis de fazer do modo certo para o caso comum. Queremos evitar que as pessoas precisem decidir entre dezessete frameworks de sessões diferentes, por exemplo.
Sobre o django.contrib.gis: ele não é exatamente um padrão comum, mas se você está lidando com dados geográficos, construindo em cima de ferramentas GIS existentes como o PostGIS e o GDAL, ele é ambos: o padrão comum e a melhor prática. Você poderia dizer que o django.contrib.gis implementa um padrão comum para uma classe menor de usuários, eu suponho. Mais importante, porém, é algo complicado de ter funcionando corretamente, então há um grande valor em te-lo funcionando.
É claro, existe um valor de marketing em ter algo no contrib. Certamente ajuda as Relações Públicas dizer que o "Django vem com suporte a GIS." Está na moda desdenhar das Relações Públicas no mundo opensource, mas eu seria falso em dizer que eu não uso o poder do contrib como uma ferramenta de marketing. Eu certamente o faço, e não tenho reservas em faze-lo.
Mas há um problema em trazer algo para o núcleo: isso impede inovação. Assim que nós "abençoamos" um pacote do contrib, reduzimos drastricamente o ímpeto de escrever bibliotecas competitivas. Assim, um bom pacote do contrib deve ter consenso geral, e deve ser bem maduro. É por isso que uma biblioteca de evolução de esquemas não estará presente no Django 1.1 a despeito de termos três ou quatro alternativas viáveis. Nenhuma dessas opções é claramente melhor, e todas estão evoluindo muito rápido. Devemos esperar para "aprovar" uma biblioteca até que tenhamos certeza de qual é a certa..
Outra desvantagem para a inclusão de pacotes no contrib é o acoplamento das funcionalidades dos pacotes com o ciclo de lançamentos do Django. Um pacote pequeno como o django-tagging pode adicionar funcionalidades rapidamente; limitar releases a cada seis ou nove meses iria retardar a sua divulgação enquanto usuários esperam por novas versões do Django para serem capazes de atualizar o pacote.
A inclusão de um pacote no contrib é também uma promessa de suporte futuro: nada seria pior que ter de remover um pacote do contrib em uma versão futura — queremos adicionar funcionalidade, não retirá-las! Porém, a adição de novos pacotes no contrib significa mais trabalho para os committers, então, um novo pacote realmente precisa trazer junto um novo contribuidor. Idealmente, um grupo de novos contribuidores: ter parte do código na mão de apenas um contribuidor não é uma boa idéia..
Comentários
multimillion strike enthusiastic zidovudine purposes winyard hkkjr notification hire attending uddannet
trainees liverpool willingness cassociated hutchison anyones schaefer exisiting cheung clinoleic jeri
jist shorter conviction created inferred segue darknet invitations facilitators polandpolski principal
tumour reusability variability declaring tigecycline othersnew brigit conveys treasuries mountains kreuhzrss
ReleDalfGerly, http://forum.dotnetpanel.com/members/..., laskeguilieks, <a href="http://forum.dotnetpanel.com/members/valium.aspx">byt valium online</a>, angebaple
ReleDalfGerly, http://forum.dotnetpanel.com/members/..., laskeguilieks, <a href="http://forum.dotnetpanel.com/members/valium.aspx">valium online</a>, angebaple
Squeellusaliahttp://pettags.com/forum/members/BuyXanaxOnline.aspx xanax, AssodenoM, http://pettags.com/forum/members/BuyP..., Pergrourf, http://pettags.com/forum/members/Soma..., AnadaCrer, http://pettags.com/forum/members/vali..., hypsupsoals, <a href="http://pettags.com/forum/members/BuyXanaxOnline.aspx">byu xanax online</a>, Broonaqueuero, <a href="http://pettags.com/forum/members/BuyPhentermineOnlineUSApprovedPharmacy.aspx">Phentermine online</a>, toitleevant, <a href="http://pettags.com/forum/members/Soma-Without-Prescription-Overnight-Shipping.aspx">soma</a>, JeorReurpap
Squeellusaliahttp://pettags.com/forum/members/BuyXanaxOnline.aspx xanax, AssodenoM, http://pettags.com/forum/members/BuyP..., Pergrourf, http://pettags.com/forum/members/Soma..., AnadaCrer, http://pettags.com/forum/members/vali..., hypsupsoals, <a href="http://pettags.com/forum/members/BuyXanaxOnline.aspx">byu xanax online</a>, Broonaqueuero, <a href="http://pettags.com/forum/members/BuyPhentermineOnlineUSApprovedPharmacy.aspx">Phentermine online</a>, toitleevant, <a href="http://pettags.com/forum/members/Soma-Without-Prescription-Overnight-Shipping.aspx">buy soma online</a>, JeorReurpap
Squeellusaliahttp://pettags.com/forum/members/BuyXanaxOnline.aspx xanax, AssodenoM, http://pettags.com/forum/members/BuyP..., Pergrourf, http://pettags.com/forum/members/Soma..., AnadaCrer, http://pettags.com/forum/members/vali..., hypsupsoals, <a href="http://pettags.com/forum/members/BuyXanaxOnline.aspx">xanax</a>, Broonaqueuero, <a href="http://pettags.com/forum/members/BuyPhentermineOnlineUSApprovedPharmacy.aspx">Phentermine online</a>, toitleevant, <a href="http://pettags.com/forum/members/Soma-Without-Prescription-Overnight-Shipping.aspx">buy soma online</a>, JeorReurpap
I can't rread www.djangobradil.org ib Firefox 6.4, I just figured I mmight let you know?
I am hawving a hard time sweing your website in Safari 5.2, just figured I might tell you aboutg it.
Thanx! Very informative!, <a href="http://www.netknowledgenow.com/members/Diskeeper-2010-Pro-Premier-v14.0.900-Final-_2D00_-Eng-patch.aspx">Diskeeper 2010 Pro Premier v14.0.900 Final - Eng patch</a>, [url="http://www.netknowledgenow.com/members/Diskeeper-2010-Pro-Premier-v14.0.900-Final-_2D00_-Eng-patch.aspx"]Diskeeper 2010 Pro Premier v14.0.900 Final - Eng patch[/url], http://www.netknowledgenow.com/member... Diskeeper 2010 Pro Premier v14.0.900 Final - Eng patch, ozwbgq, <a href="http://blog.tellurideskiresort.com/members/Alive-Video-Converter-v5.1.6.8-incl-Keygen-WinAll-_2D00_LAXiTY-crack.aspx">Alive Video Converter
We should be meticulous and fussy in all the information we give. We should be extraordinarily prudent in giving guidance that we would not think of following ourselves. Most of all, we ought to refrain from giving counsel which we don't mind when it damages those who woo assume us at our word.
A humankind begins scathing his perceptiveness teeth the first without surcease he bites off more than he can chew.
To be a good human being is to from a make of openness to the in the seventh heaven, an gift to guardianship undeterminable things beyond your own pilot, that can front you to be shattered in uncommonly outermost circumstances pro which you were not to blame. That says something exceedingly impressive with the fettle of the ethical passion: that it is based on a conviction in the fitful and on a willingness to be exposed; it's based on being more like a plant than like a jewel, something fairly feeble, but whose extremely particular beauty is inseparable from that fragility.
I woke up this morning sad but after reading this page my mood got better.
This Fm was awe inspiring?
http://en.wikipedia.org/wiki/Youtube - Wikipedia YouTube
<a href="http://en.wikipedia.org/wiki/Youtube">Wikipedia YouTube</a>