This is the P2PU Archive. If you want the current site, go to!

School of Webcraft - Welcome!

Mozilla and P2PU teamed and created the School of Webcraft, a powerful new way to teach and learn web developer skills. School of Webcraft courses are 100% free, globally accessible, and powered entirely by learners and mentors like you.

P2PU, the home of School of Webcraft is moving to a new platform. Check it out!

On the new site you can sign-up for open study groups and volunteer to help improve those which are under development. If you can't find the study group to suit your needs, you can create your own study group to run within School of Webcraft!

Some of the learners from the School of Webcraft's "Web 200" class last semester


Get involved:

Course list

P2PU has moved to a new home - please go to to see our current courses. If you want to see what courses were previously run on this site, here's a selection of completed courses:
Course Name Organiser Course Status
Javascript: 101This course will cover basic concepts of Javascript programming and the DOM (document object model)Show more details
Go to the course page

Update: We have created a course website to organize this course over the next 6 weeks.

Javascript began as a language to program web pages, but now it has become much more than that. There are server side frameworks for creating entire applications in Javascript, and testing frameworks which allow us to write scripts in Javascripts, and the original intent of creating dynamic web pages with Javascript as well.

The course content will consist of a series of video talks delivered by Douglas Crockford on Javascript programming. I have orgamized these videos in the form of a course on this website.

The basic process of learning and participation will be as follows:
1. Watch a video which explains certain Javascript concepts
2. Reflect on what you learned and blog your notes/reflections. If you have the time read the blog post of one or more other participants and engage them in a technical conversation.
3. Do the homework which may be a quiz and/or a small programming assignment
4. Upload the programming assignment to any open source repository
5. Write a blog post to describe how you approached the assignment, what doubts you had while doing the assignment, and anything related to the assignment.
6. In this entire process of you have any questions, technical, or otherwise, please post them on th forum
7. Along with asking questions, please also try and answer other participant's question whenever you can. Remember teaching is a great way to learn.

The blog posts and assignments uploaded on open source repositories will become your "proof of learning".

Course Schedule:

Week 1:

Week 2

Week 3

Week 4

Week 5

Week 6

  • Backlog and recap
Parag Shah
Parag Shah's picture
Introduction to DrupalThis is a pilot test of a Self-study Course: Introduction to Drupal. Admissions are closed for the testing phase.Show more details
Go to the course page

Summary: Free 6 week self-study course to learn about Drupal. Week- by-week emails to help motivate you and organize your learning experience. Think of it as a book-club for free learning materials about Drupal.


Funding of the development of this course is provided by Acquia to faciliate learning in the Drupal community. This course is part of P2PU's School of Webcraft organized by the Mozilla Drumbeat: Web Enabled are supporting this course by providing an easy to use learning sandbox in their hosting environment. Numerous Drupal community members have created the open education resources which will be used in this course, they will be credited in the respective lessons.

What is this course about?

Problem: What is Drupal? What can it do? Drupal is peculiar, the features which make it powerful and different from other systems, also make it difficult to grasp. There are excellent resources out there, but a novice user can get google-itis from searching through material which isn’t at the right level, shows out dated practices, or is not up to date. This course will be a self-study introduction to take people on a rolling basis through the course.

How it works: Each week, you login to the site which contains 2-3 hours of selected self-study videos, tutorials and materials to work through. You will also get access to a recorded webinar* discuss the materials. Login to to discuss each weeks materials with fellow students. Acquia partner Web Enabled are offering a push-button hosting environment as an option for new users to learn on and try out some advanced features of Drupal.

* The first time it is run, a LIVE webinar is held so guest guides can answer learner questions- “What kinds of problems and questions did they find?” to talk about that weeks learning materials. These are recorded, and when students work through the course later, they watch the recorded webinars.

Each week:

  • Mondays: Students receive weekly email
  • Wednesdays: Pilot course: participate in live online session (in future,Watch recorded session)
  • Pilot course live session times: 9 AM PST/ 10 AM MT/ 11 CT / 12 EST. Information sent via email.
  • During the week:
    • Do learning activities (for example, watch a Dojo session, or other video, complete activities)
    • Participate in online discussion
Heather James
Heather James's picture
Programando web con PHP¿Te animas a empezar a programar con el lenguaje más popular en la web? aprendamos juntos #PHPShow more details
Go to the course page

PHP es hoy el más popular de los lenguajes de programación en la web, fácil de aprender y altamente productivo, lo que lo ha convertido en la base de miles de sitios masivos en Internet - por ejemplo Wikipedia, Facebook - y decenas de proyectos de software libre programados en PHP, como Wordpress, Moodle, Drupal, Mediawiki, Joomla,

World wide web. Arquitectura cliente-servidor. Páginas estáticas y dinámicas.
Instalación de entornos de programación y prueba. Programación web: HTML y su interacción con PHP.
Sintaxis del lenguaje. Variables y funciones.
Tipos de datos. Estructuras de control. Arrays.
Acceso a bases de datos. Aplicaciones web.
Programación Orientada a Objetos en PHP: Clases. Atributos. Métodos.

Martin Olivera
Martin Olivera's picture
From GIMP to xHTML and CSSCreate a website in xHTML and css: make a design in GIMP, slice it, code it.Show more details
Go to the course page


A. Create a rough sketch of the design

B. Page layout and color scheme

C. Creating the design 

D. Slicing the design

E. Coding the webpage

Planning (subject to change)

Day 1: creating the assets (youtube videos 1 - 6, see Course Material)
Day 2: creating the design (youtube videos 7-12, Course Material)
Day 3: coding the design: structuring it
Day 4: coding the design: styling it - without the images
Day 5: styling it: applying the images to the design
Day 6: Using Web fonts from the Fontsquirrel library
Day 7: Answering questions and Course Review

Wouter Cox
Wouter Cox's picture
Learning Web UI AutomationLearn how to automate web applications by driving real browsersShow more details
Go to the course page

This course will give a good grounding on using the Selenium Web Application Testing Framework. Selenium is a popular tool used by the top web companies like Google, Mozilla, Microsoft and many more.

By the end of the course, participants will have the confidence to automate most web applications. This will then give you the confidence that your application works as it is intended.

David Burns
David Burns's picture
Dive into PythonThis course closely follows Mark Pilgrim's "Dive into Python" book, and is designed for experienced programmers. Show more details
Go to the course page

This course is based on the book Dive into Python by Mark Pilgrim and is freely available.  You can either choose to download the .zip file containing the .pdf and associated files, or you can read the book online.  Please note for non-native speakers of English that the book may have been translated into your native language.  

Dive into Python is meeting on the forums only.  

M. Volz
M. Volz's picture
Web Browser Extension Dev.Would you like to know how to develop a web browser extension?Show more details
Go to the course page

They will learn how to build packages (web browsers) from source. Participants will be involved in various project, such as UI enhancement and protocol integration. In addition, as part of their work, they will individually create an extension or work on existing issues/bugs. Although participants can use their choice browsers, explanations and practical examples will be based on the Mozilla Framework.

What you can expect to learn

To mention a few, there include the followings.

  • Building blocks of a web browser
  • Technologies, tools and available supports for extension development
  • Applications using the Mozilla Framework
  • Using XUL to extend the Firefox browser UI.
  • Performance and Security Best Practices
  • Setting up extension development environment

micadeyeye's picture
Drupal Social Web ApplicationLearn to use Drupal to build a social web app that lets users collaborate on projects and ideas. #webcraft #p2puShow more details
Go to the course page

A thread about Open Hippel was started on back in April 2010 -

Course summary also on

Open Hippel is basically a Social Web App that allows anyone to form groups around their interests. It'll have tools to help people make decisions as a group, set criteria and milestones, and also have personal profile and history so people with skills can be connected with people needed those skills.

So far, TEDxTokyo Innovators Hub and K. International School are two of our biggest supporters, and Keio University had made it an official school project, which means students can be credited for working on it!

My plan is to open the development of this Open Hippel platform up as a course. We'll have hands on development classes, (we need some Drupal gurus from Acquia to help out on this!) The course work will be documented and with the help of Keio students, translated into Japanese. By the end of the course, the whole "book" will be available online under CC license.

In learning, it is far better to have a project that is real and has impact on the real world! Just like Stanford's project on Extreme Affordability products, students are far more engaged when they're working on real world projects. I think Open Hippel can similarly be that engaging project at P2PU.

Nicholas Wang
Nicholas Wang's picture
WordPress DevelopmentWant to learn all about WordPress Development including plugins, widgets, WordPress as CMS, Custom Post Types and Custom Taxonomies?Show more details
Go to the course page

WordPress has been gaining on the CMS marketshare and even won the Overall Best Open Source CMS Award in 2009. It has a great community behind it (and a growing one as well) and there is a lot of interest and enthusiasm on how to leverage WordPress on different scenarios.

Course Modus Operandi

Each week:

   * Monday: Students receive by email the assignment for the week.
   * Wednesday: Meet on for discussion. I will be there to answer any questions most of the day and other folks will also help if you ask nicely. We will log the conversations and post them on-line as a recording of what happened.
   * Sunday: I will post the results of the assignments (if you passed or failed). <------- Assignment Results

At the end of the course I will post how many challenges you did and how you did on each one.

Good luck and enjoy!

Nuno Morgadinho
Nuno Morgadinho's picture
Introduction to Ruby and RailsLooking for a web framework that's optimized for programmer happiness and sustainable productivity? Learn Ruby and Rails! #webcraft #p2puShow more details
Go to the course page

Ruby is a fascinating object-oriented language suited for many purposes.  Rails is a popular web framework for Ruby.

This course will introduce the Ruby programming language, focusing on those features and concepts that will be important when developing web-based, database-backed Rails applications.

Course participants will learn with freely available web resources and by completing small assignments.  Participants will also create a simple web application individually or in small groups.

Because this course will cover a lot of ground, it will be completed over 10 weeks.

Andy Lindeman
Andy Lindeman's picture
Web 200: Anatomy of a RequestWhat happens when you click go in the browser? Find out in "Web 200: Anatomy of a Request" at #p2pu. more details
Go to the course page

In this six week course we'll do a deep dive into what happens when you click go in your browser. That's the entire focus of the course. Participants will be given reading assignments and videos to watch in advance of weekly synchronous meetings. In the meetings we'll answer questions and discuss the way things work.

The most fundamental concept in this course is that the web is abstracted into layers, we're going to learn how and why.

John Britton
John Britton's picture
Online Maps with OpenLayersHow do free and open maps compete with companies such as Google? Make maps and design geo-mashups with HTML and JavaScript.Show more details
Go to the course page

Online maps are a rapidly growing technology.  The unique connection of maps to real world information has given open and crowdsourced maps some advantages over even the best-funded companies.

A Map Making and Programming Class

Course participants will add part of their community to the global OpenStreetMap, learn the basics of creating interactive online maps with OpenLayers, then research and design their final application.


*, a free and open "Wikipedia of maps," has time and time again proven the usefulness of open data.  In early 2010, responders to the Haiti earthquake turned to OpenStreetMap for the most detailed and up-to-date maps.

*, a free and open source JavaScript library, will be used to explore the basics of adding maps to web pages.  This experience gives you the know-how to use map APIs from Google, ESRI, Microsoft, or CloudMade (these alternatives will be part of a group discussion)

* Applications of maps, including open source solutions for business, disaster response, open government, and the environment, will be discussed.   Participants choose a research topic.

* A final 'interest project', chosen by the participant, will be a web map which displays real-world data and produces an informative, interactive, artistic, and/or persuasive online experience.

Nick Doiron
Nick Doiron's picture
User Experience Design | ENG PT ESPHow to improve human-computer interaction and accessibility using UX and Interaction design principles?Show more details
Go to the course page


[EN] Welcome to User Experience Design! This course will be run in English, Portuguese and Spanish simultaneously. Please read the "Sign-up Task" for more information about the selection process.
[PT] Bem-vindo a Design de Experiência de Usuário! Este curso será realizado em inglês, português e espanhol simultaneamente. Por favor leia a Tarefa de inscrição para maiores informações sobre o processo seletivo.
[ES] Bienvenidos al Diseño de Experiencia de Usuario! Este curso se llevará a cabo en Inglés, portugués y español simultáneamente. Por favor, lea la "Sign-up task" para obtener más información sobre el proceso de selección.


[EN] This course is focused on exploring basic concepts and definitions of User Experience & Interaction design. Discussions and reading recommendations, together with analytical and practical activities will be used as a methodology. Due to the intrinsic multidisciplinary characteristic of the Design field, all kinds of professionals and students are welcomed. Also, as a recommendation of this semester's Webcraft program, some Accessibility concepts will be discussed.

[PT] Este curso se orienta a explorar conceitos e definições básicas acerca de Design de Experiência de Usuário e Interação. Discussões e recomendações de leitura, junto a atividades analíticas e práticas serão usadas como metodologia. Devido a característica multidisciplinar intrínseca ao Design, todos os profissionais e estudantes são bem-vindos. Também, por recomendação do programa deste semestre da escola de Webcraft, alguns conceitos de Acessibilidade serão discutidos.

[ES] Este curso se orienta a explorar los conceptos básicos y definiciones del diseño de Experiencia de Usuario y de Interacción. Como metodología de aprendizaje se llevarán a cabo debates y recomendaciones de material de lectura, junto a actividades prácticas y analíticas. Debido al carácter multidisciplinar intrínseco del campo de Diseño, son bienvenidos todos los profesionales y estudiantes. A su vez, como recomendación del programa Webcraft de este semestre, se discutirán algunos conceptos de Accesibilidad.

João Menezes
João Menezes's picture
Beginning Python WebservicesWant to learn about the protocol that runs the web (HTTP) and how to make web services with Python? #webcraft #p2puShow more details
Go to the course page

Python ( is a powerful, high-level programming language that is easy to learn and easy to make highly customizable web-sites and play with web technologies. While for many enterprise-class sites, a complicated stack of technologies and integrated web frameworks may be required to achieve complex goals, using python and WebOb ( -- a basic request/response object -- allows a first-principles approach to understand the HTTP protocol and making a wide variety of web sites in a flexible manner.

The course will center on using python and associated technologies to explore how HTTP and HTML works. Only the basics will be covered, but this should be enough to point newcomers with the predisposition towards making and debugging more complex sites. Students will create web services that include hosting static content, persisting data using the filesystem, middleware, generating dynamic server responses, and using a template language (genshi). The basics of REST and good architecture will be introduced covering the basics of how to view programming and good architectural design.


Course material:

Jeff Hammel
Jeff Hammel's picture
jQuery ~ For the Love of DollarIntermediate Level Course Covering jQuery API, Open Source Tools and jQuery Community ResourcesShow more details
Go to the course page

jQuery is a cross-browser JavaScript library that simplifies client-side scripting of HTML (HyperText Markup Language) pages using CSS (Cascading Style Sheets) based selectors to select, style and manipulate page elements. jQuery additionally offers superb support for DOM traversal, event handling, visual effects, animation, AJAX (Asynchronous JavaScript and XML) and much more. With a vibrant community for support, jQuery also has an enormous plugin repository for added functionality and a fantastic user interface library of widgets which can be simply inserted into your web page and easily configured.

This course will use Rebecca Murphey's open source ebook "jQuery Fundamentals" [1] and Ben Nadel's video series entitled "An Intensive Exploration of jQuery" [2] as our primary learning resources. For examples, demos and assignments we will use collaborative tools such as jsfiddle [3] and FireFox browser add-ons such as FireBug [4] and FireBug extensions [5]. Rather than extensively covering every aspect of the jQuery API and plugins, the course will have a emphasis on learning jQuery in a participatory environment using jQuery community resources and free tools such as jsfiddle and FireBug. Although the majority of the course communications will take place through group email, we will attempt to use a conferencing tool such as TalkShoe [6] (participate via dial in or client software) to hold a few live conferences. 

[1] jQuery Fundamentals by Rebecca Murphey

[2] An Intensive Exploration Of jQuery by Ben Nadel

[3] jsFiddle by Piotr Zalewa

[4] FireBug by Joe Hewitt et al

[5] Firebug Extensions

[6] TalkShoe

Dan Diebolt
Dan Diebolt's picture