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
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'
...as long as the material ends up back in the handbook. So this:
...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
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
You can put together a basic wiki in Drupal (i.e. what this site is using for wikis) with:
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
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
Victor Kane
http://awebfactory.com
New Wiki Tools module
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...
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
CNDP, LLC
Yep, you got it!
Sorry, I wrote that above post. I just accidentally forgot my identity for a couple hours there. ;)
Hmmmm.....
I thought you sounded a lot like you.
Tresler Designs
CNDP, LLC
I'm all for it!
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
https://pantheon.io | http://www.chapterthree.com | https://www.outlandishjosh.com
What about Drupal patterns?
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
Alexis Bellido
Ventanazul: web development and Internet business consulting shouldn't be boring
docs.drupaldojo.org
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
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
User Experience Design
A Podcast for Mac Switchers
Started the Intro. Please comment
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
User Experience Design
A Podcast for Mac Switchers
Re: Started the Intro. Please comment
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
Pedro
http://www.adclick.pt