[GSoC Proposal] Develop an Onboarding API and UI for Drupal 7.

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
tcarmona's picture

Who?
Hi, my name is Tiago Carmona. I'm a Computer Sciences student at Universidade de Campinas (A.K.A. Unicamp) at Brazil. I've started using Drupal 3 years before in an internship at Harvard University, but never got a chance to really help the Drupal community. Aside from working with computers and studding, I'm also a part of the Rotaract program, a Rotary sponsored organization that ,among other things, focus on helping real communities in all the world. I hope that with the help of the GSoC program I can also start helping the Drupal community.

You guys can email me in carmona.tiago at gmail.com , which is also my gtalk.

Have you contributed to a open source project before?

I've always wanted to contribute as a coder to open source projects, but never found a good opportunity to do it (as having a mentor). I've helped the Brazilian Mozilla community (MozBR) in many computer related events here in Brazil, but never anything code-related.

Why do you want to do a project involving Drupal?

Drupal was very important in my growth as a Computer Scientist, as the framework that I've first learned in PHP. Also, I've always seen the Drupal community as a very active one, with many people collaborating to improve the software and the community. These two things make me want to help the project, and I see in the Google Summer of Code a perfect opportunity to do that.

Overview:

Develop an Onboarding API and UI for Drupal 7.

Description:

Onboarding is the process where site owners help new site members to orient themselves and take some important initial steps toward becoming full-fledged members of the site. This process is critical in various websites created with Drupal, as it smooths the user experience.

Whitney Hess wrote that "[m]ost companies think that getting people to sign up is the ultimate challenge, but what about getting them oriented to your site and actually using it? That process of helping people get started is called onboarding, and it’s crucial that you give it the attention it deserves."

The goal of this project is to build a flexible, configurable system for helping Drupal site owners build onboarding processes custom to their needs.

Examples of possible onboarding actions for a conference website, for example, include:
- Buy your ticket
- Buy some training
- Fill in your profile
- Submit sessions
- Vote on sessions
- Submit bofs
- Vote on bofs
- Find other people who have similar profile fields
- etc.

The Onboarding module would consist of two parts. An API through which other modules can define onboarding "actions" and a UI through which the site administrators can order and arrange a number of onboarding flows. In this initial proposal, the API would have a simple checker if the user already did this action or not, and store it in the database. Also, this project will contain a simple UI, that will enable/disable each "action" and set each action to a role. A rough sketch of that part of the Onboarding UI might look like:

Only local images are allowed.

In a nutshell, this project have the goal to create a simple API to enable websites to taught users how to use it. It would be an awesome feature to Drupal, as many users complain that Drupal has a rough learning curve, so with something to teach the users, this problem would be solve.

Schedule:

May 23 - May 29: Get familiarized with Drupal 7 (as I've only worked with Drupal 6 and Drupal 5) and Git.
May 30 - June 05: Study the Drupal hooks and how the best way to create the module and create the data modeling.
June 06 - June 12: Develop the UI for setting each "action" with their roles.
June 13 - June 19: Continue the development of the UI.
June 20 - June 26: Implement the API.
June 27 - July 03: Final tests in university and review of the documentation. (As I'm from Brazil, it's going to be a "Google Winter of Code" to me)
July 04 - July 10: Implement the API.
July 11 - July 17: Implement the API.
July 18 - July 24: Implement the API
July 25 - July 31: Clean the code and finish testing.
August 01 - August 07: Compile an intensive guide of how to use the API.
August 08 - August 14: Create some examples to illustrate the guide.
August 15 - August 22: Final review in the documentation. End of project.

Mentors:

Both ezra-g and kyle_mathews are willing to mentor me.
Also wundo said in a lecture here in Unicamp that he is whiling to mentor any student here in Campinas/Brazil, so I hope he can also help me out.

Puzzle: isset($a) === empty($a) then what $a could be?

$a could be an empty array, as it returns TRUE to both isset(because it is set in the memory) and to empty(as it is empty). So $a = array();

Links:

http://groups.drupal.org/node/138949 - Original idea.
http://groups.drupal.org/node/99289 - Discussion about the idea.
http://groups.drupal.org/node/140619 - Project description.
http://drupal.org/sandbox/tcarmona/1120194 - Sandbox link
http://www.google-melange.com/gsoc/proposal/review/google/gsoc2011/tcarm... - GSoC proposal link

Comments

Hey, what's up

yoroy's picture

Great project. What's the current status?

Status please?

crimsondryad's picture

Is this on track?