Creating a "Getting started with Drupal development" guide

Events happening in the community are now at Drupal community events on www.drupal.org.

Note: we have now set up a book at docs.drupaldojo.org to work on this. Please refer to this comment for more info.

Summer of Code is just around the corner, and that means an influx of new Drupal developers. These are typically folks that already know PHP, but have little to no experience with Drupal itself, nor its API.

It'd be great if the Drupal community had a guide for such people: a "QuickStart" guide to getting involved as a developer for Drupal. Not only could this help guide new SoC students in the right direction, but it would also be there for referring any new developers, regardless of the time of year. :) My thinking is that we create a handbook page (or pages), and then also give this as an "interactive" lesson at the beginning of April when the accepted SoC students are announced.

But, we need your help! The very best people to write this document are right here at the dojo: relative newbies who are starting to grasp how things work, but still remember very well the things that tripped them up as they were getting started.

Here's a sample outline, that probably needs (a lot) more fleshing out:

  • Introduction
  • Drupal's development philosophies (core is small and lean, additional functionality added by contrib modules, no backwards compatibility with API, etc.)
  • Applying for a CVS account (tips on writing CVS applications, how the access system works)
  • Working with CVS (creating a sandbox, tags and branches, etc.)
  • Creating and maintaning a project
  • Creating / applying patches
  • Working with the issue queue
  • Mailing lists (developer mailing list, documentation mailing list.. what kind of discussion takes place there)
  • IRC (#drupal vs #drupal-support, #drupal-dojo, consultants and whatever other channels there are)
  • Vocabulary lesson (nodes, taxonomy, blocks...)
  • Overview of the hooks system (what are hooks? how do they work? what are some examples?)
  • Overview of the theming system (how to override theme functions, how to define new variables in a template, what the various *.tpl.php files do...)
  • Drupal's database (an E-R diagram?)
  • Example module - something fairly simple and well-documented that shows people hooks in action.
  • "API-like" contrib modules (Views, CCK, OG, Actions, Voting API...)

Now, a lot of this info is already in the handbook. Where possible, it's always better to link off to existing pages than write new ones. This guide could just provide additional context around those pages, so they make sense when they're being read.

I made this a wiki page, so feel free to edit it, and/or post your comments as well.

Comments

Using drupaldojo.org for this

add1sun's picture

Josh and I discussed on IRC that this would be a great project to use the .org scratch site for. We can have room for people to write out various sections, rip things apart and put it back together, then once we feel we have a good, refined product stick the final thing on d.o. Sort of an editing environment with plenty of room so we don't gunk up the d.o handbook while we are working on it. Keep in mind that we are not looking to copy/create another handbook site, just a working place to refine this guide to give back to d.o.

We can set the site up where everyone can edit and create pages and have a few site admins who would install modules and keep an eye on things. Anyone interested in being a site admin, just respond here or flag me down on IRC so we can talk about it. I'd like for there to be at least 2 or 3 people other than me doing admin work on the site.

Also feedback on 1) if you think this is a good idea and 2) if so, what you want to see on the site to facilitate writing this stuff, would be appreciated.

Learn Drupal online at Drupalize.me

I'm all for 'scratch sites'

webchick's picture

...as long as the material ends up back in the handbook. So this:

Keep in mind that we are not looking to copy/create another handbook site, just a working place to refine this guide to give back to d.o.

...significantly sets my mind at ease on that point. :)

I even support a non-Drupal tool for use as a scratchpad. When dww and I rewrote the CVS section of the handbook, we used Google Docs, for example. That way we could edit interactively while we were discussing things on IRC without overwriting each others' changes.

But yes, I think this would be an incredible contribution, and a great one to kind of "get started" with.

I probably can't commit to helping with site maintenance... I'm going to be very busy organizing SoC, and I don't want to commit to something I can't follow-through on. :( As far as tools go, I'm not really sure beyond book.module, diff.module, and comment.module. I'm sure someone else can "think outside the box" a bit. :)

I'd prefer to use Drupal

add1sun's picture

I'd really like to push Drupal as the platform for the work environment, if nothing else so folks can understand the potential and limitations of Drupal by trying to get it to do what we want - sort of a learning exercise in and of itself. Perhaps it will also spawn new ideas for modules or patches/issues for existing modules. We can push both the product and the process back as a contribution to the community that way. Or at least that is my little daydream... :)

As for tools, many folks here seem taken with the wiki idea. I myself don't use wikis really, but I think it would be interesting to see what the current wiki modules out there offer and let people really work em out.

Learn Drupal online at Drupalize.me

Sounds great to me! :D

webchick's picture

You can put together a basic wiki in Drupal (i.e. what this site is using for wikis) with:

  • Node module (make a "wiki" node type, and enable "Create new revisions" on it)
  • Diff module to see differences between one revision and another
  • Freelinking module to handle the CamelCase => link stuff.
  • Some kind of Wiki-ish input format, like Markdown.

There's also LiquidWiki module which I've heard people talking about... apparently the maintainer went AWOL for a bit, but is back now.

sub wikis

victorkane's picture

Great list, the only thing lacking there, comparing to other tools like "twiki.org" in the perl world, is a way to "compartmentalize" a wiki. That is, a way to make little sub-wikis perfect for a project, or a sub-domain you are working on (maybe taxonomy + some kind of taxonomy based views.... but then it wouldn't be so wiki like...).

The other point I wanted to make was that documentation is one of the concerns about a scratch site.

The other is a place to put running code, either to exemplify the subject matter, or lessons, or to put "cookbook" type demos.

Victor Kane
http://awebfactory.com.ar

New Wiki Tools module

add1sun's picture

Rotzi has also just released a new module called wiki tools that may be handy. http://drupal.org/project/wikitools

Learn Drupal online at Drupalize.me

Sounds a lot like...

Tresler's picture

Webchick and I discussed a similar idea a while back and I created an issue around it in the doc queue http://drupal.org/node/114078.

Basically, I'd envision this as one 'chapter' of that. i.e. the "New Developers" path through the doc.

Is that an appropriate take on what you are thinking with this?


Tresler Designs

Yep, you got it!

webchick's picture

Sorry, I wrote that above post. I just accidentally forgot my identity for a couple hours there. ;)

Hmmmm.....

Tresler's picture

I thought you sounded a lot like you.


Tresler Designs

I'm all for it!

joshk's picture

We'll get good content, and we'll get squiggles to make some nice cover-art. It'll be sweet.

I also think the dojo community might be a good group for the SoC participants to use if they're so inclined. People are hungry for projects.

http://www.chapterthreellc.com | http://www.outlandishjosh.com

What about Drupal patterns?

alexis's picture

What do you think about including a few Drupal patterns, often used code for things like validating, creating multi step forms, confirmation forms and modularization (how modules should be "separated" in many submodules when they start dealing with many issues, like ecommerce does).

Alexis Bellido
Ventanazul: web development and Internet business consulting shouldn't be boring

docs.drupaldojo.org

add1sun's picture

There is a basic setup for working on docs now at http://docs.drupaldojo.org . A book with webchick's outline above has been started at http://docs.drupaldojo.org/getting-started-with-drupal-development . Anyone with a drupal login (d.o or g.d.o) can log in, which will automatically create an account for you. You can edit, add pages and leave comments. I also have the beginnings of a wiki on the doc site and wiki pages can be added to a book by using the Outline option.

Anyone who wants to help admin this one, let me know. Once you create your account on the site, you can also just shoot me an email (using the site contact form or my contact tab) or catch me on IRC and tell me what your ID is.

Learn Drupal online at Drupalize.me

Quickstart

benc's picture

Students need to be able to get a grasp of Drupal quickly, hence, it may help to insert a Quickstart guide. The philosophy behind Quickstart is to learn by doing. We can then let the student gain a deeper understanding by reading the other intro documentation.

This means less narration or talk, and more of downloading, installing and configuring. We concentrate on letting the student understand Drupal by going through a series of steps that result to a basic website with some sections.

There will still be some narration, but more to introduce the most essential concepts. If you agree with this concept, what would be the barest essentials needed for a student to go through and emerge with a basic understanding of how Drupal works?

Hope this makes sense.

"Work smarter, not harder."
http://digitalsolutions.ph

Started the Intro. Please comment

benc's picture

Kindly comment on what I've started:

http://docs.drupaldojo.org/what-is-drupal

Question: should we add more links to other "what is" pages/sites? Or do we only add to the newbie's confusion that way and therefore prefer to give only the most important info at this point? What would you consider the most important info to a newbie at this stage?

My idea is to try to define Drupal by packaging it as a solution to common problems in web content management. Any suggestions? :)

"Work smarter, not harder."
http://digitalsolutions.ph

Re: Started the Intro. Please comment

firept's picture

Dear Ben,

The link you posted is not working. I would like to suggest one content to this development guide what I found more difficult in getting started with Drupal. I think it should contain the concept behind Drupal. For unexperienced users it's very difficult to understand the basic concepts. And I believe a very well detailed chapter about this would really help. I guess this could be part of the intro.

Cheers
Pedro
http://www.baratix.com