Differences between revisions 7 and 8
Revision 7 as of 2018-05-14 07:53:37
Size: 6657
Revision 8 as of 2018-05-31 14:37:32
Size: 6780
Comment: Adding Project Repository
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
In 2018 it is being [[SummerOfCode2018/Projects/WizardForStudentsAndNewInternsDetails|developed as a Google Summer of Code project]] In 2018 it is being [[SummerOfCode2018/Projects/WizardForStudentsAndNewInternsDetails|developed as a Google Summer of Code project]]. Project development is underway on [[https://salsa.debian.org/new-contributor-wizard-team/new-contributor-wizard|Salsa]].


Project status

In 2018 it is being developed as a Google Summer of Code project. Project development is underway on Salsa.

What is it?

A GUI, distributed as a package, that the user can run on their computer to help them rapidly set up a development environment for contributing to free software projects.


  • people struggle to get started and lose motivation when they see a blog with a long list of instructions to setup PGP or something
  • people tend to be guided by things that appear easy but most of those easy things are rigged against them and they don't realize until it's too late

Which free software projects?

While the main goal is to support contributors to Debian, the Wizard is generalized to support contributors to other communities, for example:

  • Debian
  • Ubuntu
  • Fedora
  • Drupal
  • Mozilla
  • and any project that uses well known tools like Github or Gitlab

Audience, potential users

  • a student who wants to make a contribution before applying for Google Summer of Code

  • a prospective intern who wants to make a contribution before applying for Outreachy

  • a developer in a company who has decided they want to distribute their software through GNU/Linux distributions
  • anybody else who wants to become part of the free software community

Architecture notes

Libraries, frameworks and APIs to use

Data model

Static data for the application, could be stored in XML or JSON and updates made available over the web and in each new version of the package.

  • List of free software communities (e.g. Debian, Ubuntu)
  • List of regions
  • List of skills (e.g. C++, Java)
  • List of themes (e.g. game programming, network programming, scientific applications)
  • List of supported DNS providers
  • List of supported email providers
  • list of activities related to a community
    • mailing lists to join
    • account creations (e.g. Debian wiki, Salsa, SSO)
    • IRC channels to join
    • sources of event data
    • suggested packages and tools for contributing to this community
    • opportunities related to this community (e.g. Outreachy, GSoC, travel grants)
    • how to create a local event for this community
    • how to find a place to make a contribution in this community, help wanted, etc

User-specific data:

  • domain name
  • email address
  • IRC account preferences, (e.g. preferred nick)
  • per-community: Debian (Salsa username, wiki username), Fedora (FAS username), Drupal (username for drupal.org)

Workflow (high-level overview)

  • As user for preferred languages, do they know English as it is often the default
  • ask user to select communities they would like to participate in from a list
  • ask user for their region/country
  • ask user for their preferred topics/themes (e.g. science, business, ham radio, ...)
  • ask user about their preferred skills (e.g. Java, C++, ...)
  • ask user for a profile photo, help them create a photo with their webcam
  • ask user if they already have a domain name or if they want to create one
  • ask user if they already have an email address or if they want to create one under their domain
  • check if the user has an SSH key already, if not, help them create one
  • check if the user has a PGP key already, if not, help them create one, send to keyservers


  • domain name created
  • email account created
    • with filters configured for the user
  • blog created
    • syndicated to planet sites?
  • Github account created
  • Per-community accounts created (e.g. Debian wiki, Debian Salsa)
  • Debian wiki personal home page created
  • IRC nick registered
  • IRC client configuration file generated with IRC nick in it
  • SSH key created
    • submitted to Github, Salsa, ...
  • PGP key created
    • sent to keyservers
    • fingerprint slips printed, PDF generated
  • Thunderbird and Lightning configured
    • IMAP
      • labels
    • Enigmail
    • Lightning polling events and tasks for the chosen communities
    • CardBook plugin for contacts

  • packages installed (e.g. dev tools)
  • various settings in $HOME (e.g. ~/.git/config)
  • some first commits and pull requests

Mail setup

  • Supported mail clients
    • Thunderbird
    • GNOME Evolution
    • Mailspring?

Blog creation

  • as a shortcut, should we fork a pre-made blog repository, or create each blog from scratch?
  • home page
    • recent blogs
    • cover photo
    • tag line
  • first blog post
    • picture
    • 100-200 words with a link to something
  • links
    • communities
    • other profiles (e.g. Debian wiki page, Debian maintainer page)
  • bio
    • location
    • personalized community links (links to contributions)
    • education / qualifications
    • profession/employer
    • photo
    • contact: email, IRC, XMPP, Ring, PGP fingerprint, WebRTC link
  • RSS feed URLs by tag
  • search box?
  • Markdown tutorial: side-by-side editing and preview

IRC client setup

  • lrssi
  • hexchat
  • weechat
  • pidgin

XMPP client setup

  • pidgin

Finding users coding experience by searching $HOME

  • use Python's glob library to find supported languages
  • use github/linguist or pygments to analyze the code
  • checking file-change history to understand the percentage of projects user really works on, what they work on currently
  • use of a trained neural network


  • email etiquette, top posting
  • command line
  • vi
  • IRC and #introduction

Related projects and links