Let’s face it: the technology and infrastructure that are available to social movements will not be adequate in the coming years. As we enter a wave of worldwide social unrest and organizing, we are faced with two trends:
- Communication technology has become invaluable and integral to nearly all organizing efforts everywhere.
- Surveillance of this communication technology has intensified and broadened in ways that people are only now beginning to realize.
We simply do not have the technology or the infrastructure we are going to need. Riseup is working to help build the infrastructure. Ultimately, however, Riseup is only as good as the technology we run. To be able to address the future communication needs of social movements, we are going to need much better tech and we are going to need it real soon.
If you are a programmer, we need your help. Now is the time to use your skills for good. Write to waxwing@riseup.net.
All languages¶
- Distributed Mail Storage: Develop a way to deliver mail directly to a user’s OpenStack Swift cloud storage, optionally encrypted to their public key.
C/C++¶
- Distributed Mail Storage: Write plugin to dovecot imap server for storing messages in a distributed object store (in particular, OpenStack Swift). see this and this.
- Encrypted Voice Chat: Add SRTP and ZRTP support to libpurple and telepathy.
Java¶
- VPN Client: Implement OpenVPN for android using the new VpnService API available in android 4.0. Here is a discussion about this. Additionally, we also want an android app that can easily connect to the RiseupVPN with a single click and will autoconfigure itself (write to waxwing@riseup.net for more info and some initial test code). In particular, we want VPN clients that are super easy to use but have enhanced security settings, like the ability to prevent traffic if the VPN dies. Additional features we are looking for: automatically connect and reconnect, easy selection of VPN server, auto updates of server list, choose public IP or firewall’ed IP, auto-detect network troubles (like if certain ports are blocked).
- Android XMMP Client: Work to finish OTR branch, Jingle branch, and MUC patch of beem android jabber client (encrypted chats, voice chats, and group chats, respectively).
- Desktop XMMP Client: improve the UI of jitsi jabber client so that it is possible for mortals to use.
Javascript¶
- Collaborative Editing: Write patches to etherpad lite to allow anyone to destroy a pad, password protect a pad, or prevent a pad from being destroyed.
- Alternative to X.509 Certificate Authority system:
- Contribute to the convergence firefox extension.
- Contribute to the monkeysphere firefox extension.
- Anonymous Search: Contribute to the googlesharing firefox extension.
- Anonymous Email: Write a plugin for Thunderbird to remove personally identifying information from the outgoing headers (for example, User-Agent header).
Ruby¶
- Jabber Server: We want to switch to using Vines for an XMPP server. First, we need to implement MUC, but ideally in a way that we can integrate access control to a MUC via an external database.
- Social Networking: Contribute to crabgrass development.
- Mailing Lists: Help write a new web front end for sympa mailing list engine.
- User Management: Help us rewrite nest, the software that manages all user accounts.
- Authentication: Using pam_ruby, write a custom authentication script that uses OpenStack Swift.
- Conference Calls: Using mumble, write some ruby code to interface with the mumble API via ICE to handle user authentication and room ACL.
PHP¶
- Webmail: Add enhanced security features to roundcube.
Perl¶
- Mailing Lists: We have a long list of changes we need made to the sympa mailing list manager.
Python¶
- VPN Clients: Improve openvpn client for mac, windows, and linux. Mullvad has some python code for client UI.
- XMPP Client: Modify gajim jabber client to fix the security problems.
- Alternative to X.509 Certificate Authority system: Write new convergence notary code that implements some side-channel certificate validation. See this convergence wishlist bug.