First, thanks for taking this on. The tutorial indeed needs some good
lovin'; glad to see someone stepping up to the plate. I don't have a
huge amount of bandwidth these days, but I can commit to writing a
bit, and to editing anything you or anyone else writes.
On Fri, Oct 9, 2009 at 9:41 AM, Rob Hudson <r...@cogit8.org> wrote:
> * How do people feel about a tutorial that covers a complete site?
Like you, I think it's the best way to teach Django. A complete site
can show off more parts than just a small example project can.
> * How do people feel about that site being Django snippets?
Mmmm... that I'm not so sure about. Partly because this steps on
already trodden ground -- James' book (Practical Django Projects) goes
through djangosnippets as part of the book -- but also because it's a
somewhat insular example. That is, pastebins (of which djangosnippets
is a particular complex instance of) are the type of tool that really
only highly geeky folks use. Django's got a wider audience -- I know
Django users who are primarily journalists, designers, biologists, ...
-- and ideally the example we use should have relevance to a broad
cross-section of Django's audience.
Of course, all that said, I don't have a better suggestion other than
the tired personal blog example. So once again this is "if you build
the bikeshed you get to paint it" territory.
> * Comments on the proposed outline? Are there any important steps
> missing? Ordered logically? Feel free to add detail to any step.
Couple of things:
* This new tutorial absolutely should cover pip+virtualenv, most
likely right off the bat.
* We should de-emphasize the "apps live inside of projects" thing.
virtualenv gets the same effect we were shooting for there with much
less mess.
* Testing ought to be covered from the start -- I'd like to see every
little bit cover how to test it.
> * Do we cover things not in Django -- like model migrations, search,
> RESTful APIs -- using 3rd party Django apps?
I think the best idea would be cover how to find, install, and use
third-party apps, and then link to some popular ones. But leave the
actual how-tos to those authors.
> * Would it be possible to do this openly, with easy user comments,
> like the Django book? Is that software available?
Heh. Sorta. The JS is okay and if you view source you should be able
to figure out how to find it; the backend code is a terrible one-off,
though.
However, I'm not totally sure that comments make a whole lot of sense
for documentation. We had comments on the docs for a while, back in
the day, and they just confused people. The comments were mostly the
type of questions people *should* be asking on django-users or in IRC.
Since nobody who could help them was reading the comments, they didn't
help at all. The other major open source projects with comments (PHP,
PostgreSQL) also seem to show similar trends. PHP's doc comments, in
particular, are a morass of bad advice.
The ideal, I think, would be a contextual *editing* tool: something
like the comment system, but allowing people to suggest changes that
editors could easily apply. That way people could fix typos, suggest
better wording, etc., but also not confuse the situation with bad
comments.
> Also, if we're going to pull this off we're going to need people to
> help in a variety of ways. So I'm also curious who might be
> interested. We'll need: authors to write some sections, reviewers to
> give feedback, editors to clean up text and bring uniformity to the
> whole thing, developers to make sure the software the tutorial is
> describing is coded using best practices and works, a handful of
> people to drive the process and foster community involvement, etc.
Well, in grand Django tradition, by suggesting this, you've
volunteered to be in charge :)
But sign me up as an editor (language and code), at least, and I'll
try to help out by writing some sections, too.
Jacob
Hi Rob,
I started to write a reply too, and then realized I was just writing
"hell yeah" after each of Jacob's paragraphs. So I decided to stop.
:-)
Put me down as willing to assist with reviewing and/editing, or just
general sanity checking.
The only point I though I would elaborate on is the specific example
for the tutorial. I agree with Jacob's comment that a pastebin is a
bit of an esoteric example. There's also value in diversity - every
extra example is one more sample site people can use as a point of
reference. Having 2 pastebin examples floating around the community
doesn't help much, but having a pastebin and something else adds some
value.
My immediate reaction was that a blog engine is the natural example.
It allows you to expose date-based generic views. You can use
contrib.comments. You could show integration with any number of 3rd
party apps. You could even demonstrate the transition to Pinax. The
problem space is well known and well understood. Plus,
write-your-own-blog-engine is a running joke in the Django community.
:-)
That said, Jacob's bikeshed comment is also completely accurate. You
build it, you get to choose. There's also something to be said for
having a tutorial that doesn't duplicate the capabilities of any
number of existing pluggable applications.
Russ %-)
Time of my learning I wondered this part - why always blogs. I don't
want to write blog engine... :)
> That said, Jacob's bikeshed comment is also completely accurate. You
> build it, you get to choose. There's also something to be said for
> having a tutorial that doesn't duplicate the capabilities of any
> number of existing pluggable applications.
I can also lend my small hand. I've recently (last spring) gone through
learning curve how to use (Geo)Django and how to get at least decent
(IMO) system up and running.
I live in world of GIS. My projects are not traditional web apps, like
blogs, pastebins. Personally I found a bit hard to find information that
goes much beyond standard blog engine or simple forum. Also few
surprises came along the path to where I am now.
And of course got some "why this wasn't mentioned in tutorial" moments.
--
Jani Tiainen
Sean
For a nice reference implementation, I'd like to point to the software
running the Open Source Bridge website. It's developed in Ruby on
Rails and is hosted on Github:
http://github.com/igal/openconferenceware
I attended the Open Source Bridge conference and thought the website
was one of the most well done of any conference I've been to -- from
initial call for talks to attending and checking the schedule.
The website is here:
http://opensourcebridge.org/
If the intention is that this will be used for the DjangoCons, we
would need input from those that run DjangoCon. For example, I really
liked the open submission process and the fact that the conference
took everyone's comments (which were private) into consideration when
picking the subset of talks. But I can imagine that's not for
everyone.
Thanks,
Rob
A conference site it is then.
One piece of guidance, especially if you're aiming for the final site
to be used for DjangoCon. Keep in mind that a tutorial needs to be
simple at the start. However, a real site for a conference will be a
lot more complex. There is a delicate balance that will need to be
made between "useful tutorial example" and "useful real site".
Of course, you could also use this to your advantage - showing how a
simple site evolves into a complex one, and using the opportunity to
demonstrate how you evolve models etc.
> If the intention is that this will be used for the DjangoCons, we
> would need input from those that run DjangoCon. For example, I really
> liked the open submission process and the fact that the conference
> took everyone's comments (which were private) into consideration when
> picking the subset of talks. But I can imagine that's not for
> everyone.
For reference, in case you didn't already know: the three key people here are:
* Rob Lofthouse (Conference Organizer DjangoCon 2010)
* James Tauber (Conference Chair, DjangoCon 2010)
* Jannis Leidel (Conference Organizer, EuroDjangoCon 2010).
Yours,
Russ Magee %-)
cool (I just lurk here) but we have a conference site at in.pycon.org/2009/ -
maybe you could get some ideas there (or give some ideas).
--
regards
kg
http://lawgon.livejournal.com
On Sat, Oct 10, 2009 at 6:55 AM, Rob Hudson <r...@cogit8.org> wrote:I, too, like the idea of a conference site. It fills a void and sounds useful for upcoming conferences. I wasn't too crazy about the blog idea, and was convinced away from the snippets idea. So shall we call it a conference site and move on? :)A conference site it is then. One piece of guidance, especially if you're aiming for the final site to be used for DjangoCon. Keep in mind that a tutorial needs to be simple at the start. However, a real site for a conference will be a lot more complex. There is a delicate balance that will need to be made between "useful tutorial example" and "useful real site".
I wonder if mechanize (http://wwwsearch.sourceforge.net/mechanize/) can
be included in the testing side of the tutorial. I noticed the module on
Jacob's top ten, and hadn't come across it before. It sounds useful
compared with (or in addition to) asserting that a particular
HttpResponse code is returned.
Stephen
After more thought I agree with Ned. Not only will the goals be hard
to reconcile, I think we're encroaching the turf of the DjangoCon
conference organizers. I also think the data model will be
sufficiently complex and lead to a lot of hand waving in the tutorial.
Ideally, I think a good candidate for a website/tutorial will have the
following components:
* The goal and domain should be simple to grasp and explain in a few sentences.
* Have one main app that is the central focus on the website
* Have one main model, with several peripheral models that could be
introduced as the tutorial progresses.
* Be complex enough to require many areas of Django (e.g. Forms,
Aggregates, Caching, etc)
I'll have to ponder further on what fulfills these requirements.
One thought I had was to use the existing poll tutorial, but expand it
to be a site on its own. Something along the lines of
http://strawpollnow.com/ but not necessarily with the Twitter
integration?
Thanks,
Rob
> I don't want to be overly negative, but in my view rewriting the
> tutorial would be a pointless waste of energy. It has served us
> exceptionally well over the past 4 years, and none of the problems
> with it are fundamental, we'd be far better served by working to
> improve it, by adding more stages, than by rewriting it. Further, I'd
> ague that the "staleness" of the tutorial is irrelevant, because the
> primary audience for the tutorial are precisely people who haven't
> seen it before.
>
> Alex
I think I have to agree with Alex here. I’ve taught Django to a couple
of people in the past, and I found that the tutorial (as it is) worked
perfectly as an introduction to the concepts behind Django. After the
tutorial, the Django Book[1] is the next natural step, and it provides
a very solid grounding in pretty much everything, from development to
deployment. To round it all off, Eric Florenzano’s ‘Django from the
Ground Up’ showed them how to put what they had learned into practice.
If there’s one thing *at all* that we should do, it’s add a chapter on
testing to the Django Book, and perhaps another section in the
tutorial devoted to it. But a comprehensive rewrite of the tutorial
seems completely unnecessary.
--
Zack
+1
I've trained 8 apprentices over the past 1-1/2 years. The existing
django tutorial is invaluable since it can be done in about a day.
Regards
Rajeev J Sebastian
> How about the possibility of an advanced tutorial, to highlight more
> advanced features.
That's pretty much what the Django Book is for.
--
Zack
No, it really isn't.
Firstly, The Django Book is an excellent resource, but it's not part
of the Django project itself. Django's documentation is Django's
documentation. Jacob and Adrian (and others) have written an excellent
book, and I have no objections to people suggesting that newcomers
should read that book, but it isn't part of Django's documentation.
Secondly, the Django Book isn't a tutorial. It's an excellent set of
explanatory notes of some advanced features, but it isn't a
walkthrough of a specific worked example.
I aspire to Django having the best documentation of any product out
there - open source or otherwise. Having a comprehensive tutorial is
part of that. Django's tutorial has said "more coming soon" for over 4
years, and there is a lot that could (nay, should) be explained in a
tutorial that we simply don't cover at the moment.
As for whether a complete rewrite is necessary - I'm happy to call
that a bikeshed. The current tutorial has served us well for four
years, but it is a simple example. If that simple example doesn't
provide enough scope for improvement, and Rob et al can come up with a
good replacement - one that starts equally simple, but can become
complex over time - I'm happy to entertain that proposal.
Rest assured, we're not going to replace a good tutorial with a bad
one. The tutorial won't be replaced until it is a worthy replacement
for what we already have.
Yours,
Russ Magee %-)
Hello,
When I started learning Django, I used production code as a model far more
often than the tutorial. The problem I ran into was that I wasn't following
best practices by following the code that I had, and I didn't know *why* some
decisions as to how things worked were made. The very code that I learned with
ended up being scrutinized and updated by me a year or so later.
An official "real-life", advanced tutorial would have been wonderful to fill
the gap that I had. It would have saved me quite a bit of *re-learning* things,
which is always annoying.
Thanks!
Jeff Anderson
An official "real-life", advanced tutorial would have been wonderful to fill
the gap that I had. It would have saved me quite a bit of *re-learning* things,
which is always annoying.