Differences between revisions 8 and 12 (spanning 4 versions)
Revision 8 as of 2018-05-31 14:37:32
Size: 6780
Comment: Adding Project Repository
Revision 12 as of 2018-06-05 17:26:50
Size: 8696
Comment: Clean up conflict
Deletions are marked like this. Additions are marked like this.
Line 82: Line 82:

== Sign Up ==

User should provide following information in order to successfully create an account on the application.

  * Full Name
  * Email ID
  * New Password
  * Language
  * Timezone

A mock-up of the same can be seen [[https://blog.shanky.xyz/images/NewContributorWizardSignUp.png|here]].

== Sign In ==

User should provide following information in order to successfully log in to application.

  * Email ID
  * Password

A mock-up of the same can be seen [[https://blog.shanky.xyz/images/NewContributorWizardSignIn.png|here]].

== Data Persistence ==

Since we are getting Sqlite DB interface with Python3 in-build, it would be very efficient to store user's information in it. These information may include

  * Full Name
  * Email ID
  * Password
  * Language
  * Timezone
  * Tutorials Opened
  * Progress of Tutorials
  * Tools Used
  * Data from the tools, like location of key pairs, project locations, blog location, Github account details and so on.

A wrapper class can be written and exposed w.r.t. the use of DB from specific modules. For example, sign up module has nothing to do with 'Tutorials Progress' information and only needs to manipulate tables with user's information.

== Sign Up ==

User should provide following information in order to successfully create an account on the application
Line 179: Line 220:
== Research ==

 * After installing Debian to the other students computers, they started to work on it without any problem but they need guidance to use the commands/cmd and the Synaptic Package.
 * Setting up PGP was a task quite new and the idea behind signing and encrypting messages seems really interesting. A step-by-step guide is requested.
 * Switching to the Thunderbird, adding the address-book was easy.
 * Installing and using Git from the terminal it's confusing for a beginner so they will need a step-by-step guide for this.

Overview

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.

Why?

  • 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

Sign Up

User should provide following information in order to successfully create an account on the application.

  • Full Name
  • Email ID
  • New Password
  • Language
  • Timezone

A mock-up of the same can be seen here.

Sign In

User should provide following information in order to successfully log in to application.

  • Email ID
  • Password

A mock-up of the same can be seen here.

Data Persistence

Since we are getting Sqlite DB interface with Python3 in-build, it would be very efficient to store user's information in it. These information may include

  • Full Name
  • Email ID
  • Password
  • Language
  • Timezone
  • Tutorials Opened
  • Progress of Tutorials
  • Tools Used
  • Data from the tools, like location of key pairs, project locations, blog location, Github account details and so on.

A wrapper class can be written and exposed w.r.t. the use of DB from specific modules. For example, sign up module has nothing to do with 'Tutorials Progress' information and only needs to manipulate tables with user's information.

Sign Up

User should provide following information in order to successfully create an account on the application

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

Outputs

  • 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

Research

  • After installing Debian to the other students computers, they started to work on it without any problem but they need guidance to use the commands/cmd and the Synaptic Package.
  • Setting up PGP was a task quite new and the idea behind signing and encrypting messages seems really interesting. A step-by-step guide is requested.
  • Switching to the Thunderbird, adding the address-book was easy.
  • Installing and using Git from the terminal it's confusing for a beginner so they will need a step-by-step guide for this.

Tutorials

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

Related projects and links