Skip to content
This repository has been archived by the owner on Dec 27, 2023. It is now read-only.

Ideas 2013

Sean McGregor edited this page Feb 4, 2014 · 1 revision

Overview

The Privly foundation is building a first-of-its-kind privacy application stack for the web. For a demonstration of the stack's capabilities, try out the Google Chrome Extension.

Privly's core development areas can be broken into the following broad categories, but many ideas will be at the intersection of two or more of these development areas.

Infrastructure Developers: People who work on infrastructure work on critical development needs. These can be wide ranging in nature. An example includes the "Build Status System" idea.

Content Server Developers: People who work on server side development primarily work on building authorization and authentication mechanisms for content stored on any backend. The applications viewable on web pages are Javascript applications making JSON requests to content servers for their referenced content. Content server developers can work with any server backend, but the most advanced content server is the reference implementation content server. Current ideas include Developing the Identity and Sharing System and Building a Drupal Module.

Injectable Application Developers: An injectable application is a Javascript application that is displayed inside an iframe on a potentially unsafe webpage. Injectable application developers work primarily in Javascript and HTML. Example ideas include: Write Injectable Application Package Manager, Implement an OTR Injectable Application, Build PGP Injectable Application, Implement a Chat Injectable Application, Develop Injectable App API for Host Pages (formatting, content length, etc).

Extension Developers: Extension developers build Privly's User Interface and Communication Channel on top of web browsers. Extension developers work primarily in Javascript. Example ideas include Develop Mobile Version of Privly, Build PGP Injectable Application, Build Abstracted Message Library for Browser Extensions, and Add locally served injectable application support to the Opera or Safari Extension.

Encryption Library Developers: Cryptography library development centers on building an API into the library and ensuring its integrity. Encryption library developers work primarily in C and C++. An example includes Build a PGP Injectable Application

Mentors and Resources

We prefer you contact mentors on IRC, but you may discuss the project on the development mailing list. Please only contact people on email if there is a good reason why it can't be discussed openly. Non-mentor contributors to the project will want to know what you are working on so they can contribute from time to time.

Mentors
Sean McGregor is the lead developer of the Privly project. He is the person to go to for questions on the overall architecture, as well as the Chrome and Firefox extensions. smcgregor on irc.freenode.net and privly@privly.org by email.
Sanchit Karve develops the Opera extension. He is an excellent resource for systems security, and questions for the mobile use case.
Jen Davidson is Privly's community manager and is working to build out the testing infrastructure for the project. She is a great person to ask about testing, or to find out who you should talk to about a problem. jenerator on irc.freenode.net and community@privly.org by email.

Resources
Two of the Privly foundations board members will also be available for consultation during the summer.
Leslie Hawthorn
Carlos Jensen

Write Injectable Application Package Manager

| | ----|------|---- Platform | Chrome or Firefox Mentors | Sean, Jen Resources | Sanchit, Leslie, Carlos Preferred communication | Email the development mailing list discuss. Brief description | Privly allows for the distribution of injectable applications, but applications currently require review and explicit packaging by Privly before they can be incorporated into the Privly application stack. This project aims to simplify the application publishing process. An ambitious project would model injectable application distribution on the Greasemonkey extension, but a more reasonable objective for a season's work would be to develop Privly's shared JavaScript libraries so that applications can easily combine different feature sets in applications.
Skills needed | Work on this project is limited to students with extensive JavaScript experience.
Blueprints | Task specific blueprint coming soon. Other resources | Greasemonkey

Develop Mobile Version of Privly

| | ----|------|---- Platform | Android or iOS Mentors | Sanchit, Sean Preferred communication | Email the development mailing list discuss. This thread is already discussing it. Brief description | Privly does not have an official mobile version. Options for this idea are to extend an existing mobile browser, or to build a full Privly mobile application for generating and posting new content to various web communities. Skills needed | Experience with the relevant mobile platform. Blueprints | Task specific blueprint coming soon. Other resources |

Develop Identity and Sharing System

| | ----|------|---- Platform | Rails Application Mentors | Sean, Jen Preferred communication | Email the development mailing list discuss. You can reply to this thread Brief description | The Rails-based web application provides authentication and authorization for any injectable application's content. Current identity systems (you can authorize users on each piece of content based on whether they have these identities) include: Privly verified email, Privly verified domain, and IP address. For this idea you can abstract the "identity provider" approach to make it easier to add additional identity types, like Facebook friend, Diaspora aspect, Google circle, GeoIP location, public/private key, and password. An very strong proposal (although not required) will include a plan for turning the functionality into a Ruby Gem. Skills needed | Experience with Rails. Blueprints | More in depth description Other resources | Request a developer account on privlyalpha.org to play with the current functionality.

Implement an OTR Injectable Application

| | ----|------|---- Platform | Chrome or Firefox Mentors | Sean, Jen Preferred communication | Email the development mailing list discuss. Brief description | OTR is an encrypted chat specification that can be implemented as an injectable application on the Privly stack. In this project you will build a new cross-platform application based on existing JavaScript OTR libraries. Skills needed | Strong JavaScript experience. Blueprints | Task specific blueprint coming soon. Other resources | CryptoCat

Build PGP Injectable Application

| | ----|------|---- Platform | Google Chrome Mentors | Sean, Sanchit Preferred communication | Email the development mailing list discuss. Brief description | Privly currently does not make use of public key cryptography. For this project you will build basic key management functionality for the Chrome extension's compiled PKI library, as well as a very basic PGP injectable application. For GSOC this project has a strong emphasis on incremental delivery since implementing all the requirements of PGP (key manager and good private key handling) during a single summer will only be possible if you have significant relevant experience. Skills needed | Experience with C, JavaScript, and browser extensions. Blueprints | Task specific blueprint coming soon. Other resources | Google's Native Client Architecture

Implement a Chat Injectable Application

| | ----|------|---- Platform | Chrome or Firefox Mentors | Sean, Jen Preferred communication | Email the development mailing list discuss. Brief description | IRC or another chat service can be implemented as an injectable application on the Privly stack. Skills needed | JavaScript experience. Blueprints | Task specific blueprint coming soon. Other resources | qwebirc

Build Abstracted Message Library for Browser Extensions

| | ----|------|---- Platform | Chrome and Firefox Mentors | Sean, Jen Preferred communication | Email the development mailing list discuss. Brief description | Developing standard applications across browser extensions is generally difficult due to the eccentricities of the extension frameworks. Only people experienced with cross-browser extension development should adopt this project. Skills needed | Browser extension development experience. Blueprints | Task specific blueprint coming soon. Other resources |

Develop Injectable App API for Host Pages (formatting, content length, etc)

| | ----|------|---- Platform | Chrome or Firefox Mentors | Sean, Jen Preferred communication | Email the development mailing list discuss. Brief description | An injectable application may expose a message-based API to the host page it is embedded into. This idea focuses on enabling the host page to appropriately influence the operation of the application. Skills needed | JavaScript and documentation Blueprints | Task specific blueprint coming soon. Other resources |

Build Drupal Module

| | ----|------|---- Platform | Drupal Mentors | Sean, Jen Preferred communication | Email the development mailing list discuss. Brief description | Drupal could be extended to act as a content server for advanced Privly injectable applications. The necessary ingredients are: 1. It must host injectable applications as fallbacks for when the user's browser does not have the extension, and 2. it must support a JSON endpoint for the injectable application's data. A good implementation plan will be incremental. First you should add support for the PlainPost app, then the [ZeroBin] app. Skills needed | Drupal module development experience. Blueprints | Task specific blueprint coming soon. Other resources | todo

Add locally served injectable application support to the Opera or Safari Extension

| | ----|------|---- Platform | Opera or Safari Mentors | Sanchit, Sean Preferred communication | Email the development mailing list discuss. Brief description | The Opera and the Safari extension currently inject remotely-served applications into the context of the host page. This prevents the opening of the extension to non-privly content servers due to security concerns. For this project you will add the PlainPost and [ZeroBin] injectable applications to the extensions so they don't have to execute remote code. Skills needed | Strong in JavaScript Blueprints | Task specific blueprint coming soon. The Opera extension is far more mature than the Safari extension. Other resources |

"Build Status System"

| | ----|------|---- Platform | Any Mentors | Sean, Sanchit Preferred communication | Email the development mailing list discuss. Brief description | Build the framework upon which we can monitor which test are passing or failing across platforms. A consistent testing framework that integrates tests from the host page tests, extension tests, and content server would greatly speed development by preventing regressions. Skills needed | Experience integrating repositories and web applications. Blueprints | Blueprint Other resources |

Template

Title

| | ----|------|---- Platform | Which Privly project this applies to – Chrome, Firefox, Safari, Opera, Mobile, Web, Cross-platform Mentors | Names of people willing to mentor this project Preferred communication | IRC/Nick; e-mail to privly; private e-mail to me@domain.com; skype to my.name Brief description | One paragraph narrative description of project Skills needed | Any specific useful skills or knowledge (other than basics). Blueprints | Links to blueprints or detailed descriptions Other resources | Links to references, supporting material, relevant standards, partner organizations, examples of use cases...

Clone this wiki locally