Iranian Protestors & Psiphon

June 19, 2009

For those who are interested in starting up a Psiphon 1.6 proxy, you can go to http://www.psiphon.ca/node/16

This post will be regularly updated with Frequently Asked Questions about using and installing OpenPsiphon. Please carefully read the Guidebooks before asking questions. You can twitter me @summerofpsi

Facebook (or some other site) is broken! How do I fix it?

Because JavaScript can be used to disable Psiphon’s functionality (even inadvertently), Psiphon disables JavaScript. Facebook and sites like it use JavaScript extensively. We recommend you use the MOBILE versions of these websites since they frequently work as intended without javascript (and load faster as well).  For example, m.facebook.com/

Please submit questions and feed back in the comments below, I’ll edit this post with the answers.

How do I compile Psiphon for Linux?
We’re working hard to get Psiphon to compile for the Linux platform. This OS wasn’t the original target so there are some changes required to the source for it to work.  Stay tuned for updates.


Preparing the Foundation

May 21, 2009

After some deliberation it was decided that Psiphon’s new home for its open source project would be Canonical’s Launchpad.net.

Through it we hope to manage most aspects of open source development. It’s still early in the process but Launchpad offers a great many robust features that should make for the most inclusive environment for contributions possible.

For those unfamiliar, Launchpad is an open source project host and tool provider. It’s maintained by the same company that handles the ever-popular Debian-based Linux distribution, Ubuntu.

With it we can handle several aspects critical to the success of the open source project. Those include:

  • Internationalization and localization of Psiphon into a variety of languages (Arabic, Mandarin, Cantonese and others)
  • Issue tracking
  • Feature expansions and enhancements
  • OS specific distribution packages

What does this mean for project development?

A great many things. Firstly, there are formal tools to support all aspects of development – this wasn’t available prior. This means developers can take part in the development of psiphon in a way never before afforded.

The most salient novelty of Launchpad is its implementation of Bazaar DVCS. This will present a slight learning curve to many contributors but the pain of using a DVCS system is outweighed by the gain – we have a greater capacity to encourage involvement in all aspects of the project’s code while retaining all version control funcationality – enhancing project stability.

This also means that psiphon operates much more akin to a conventional open source project – with a mailing list, issue tracker and release schedule – all of these allow us to increase the solicitation of community input on aspects of project development and conversely aid developers in adapting the psiphon codebase for use in their own projects.

I look forward to announcing new feature deployments soon.  I also welcome anyone’s thoughts on our choice of Launchpad as well as any discussion regarding the direction of the open source project.


A Poor Carpenter Blames His Tools

May 13, 2009

In choosing tools for managing open source software, it’s important not hold false hopes about what the software can do for your project. The best tools used by an unhappy, bored or alienated community of developers won’t build anything worthwhile.

However, tools the impede the natural creative flow of our contributors and raise unnecessary barriers to entry for new members are clearly to be avoided.

In looking for a new home for psiphon I wanted to find a suite of tools which could start out simply but was sufficient extensible to grow with our project – I didn’t want to migrate from toolset to toolset as psiphon took on greater scale or scope.

I also wanted tools that increased the diversity of contribution. Obviously bug fixes and feature additions are critically important elements for the sustainability of psiphon, but I also wanted to find ways to facilitate non-code contributions. Especially important was easy, open and power localization tools. Most of the countries where psiphon really matters don’t have English as a primary language, providing something in their native languages makes the whole process much easier.

After some consideration and research I examined a variety of open source project hosting services

The Wish

In selecting a source code hosting service I wanted to find a hosting platform that provided a highly coherent, loosely coupled suite of tools for managing both the technical aspects of the open source project and the community engagement. Different tools offer different recipes for open source project management. Comparing tools is more complex than simply a feature-count comparison. User base, production testing, tool support, licensing restriction, audience demographics and many other factors were considered.

Services Summary (Edited: May 26)

Name Code
hosting
Bug tracking Wiki Mailing List Forum Downloads Online Support Build system Web hosting Code review Shell server
Project Kenai
SVN, Mercurial, Git
GitHub
Git (max 300MB for free)
Google Code
SVN
(outside)
Launchpad
CVS, SVN, Bazaar
(Ubuntu)
SourceForge
CVS, SVN
Tigris.org
CVS, SVN
BitBucket
Mercurial (150 MB Free)


Service Descriptions

Project Kenai

This is Sun Microsystem’s entry into the tool hosting foray. Its is unclear given the recent acquisition of Sun by Oracle. It uses either JIRA for Bugzilla for its issue tracking;  JIRA is proprietary and commonly used in large-scale Java based software projects and Bugzilla is the issue-tracking system developed originally for Mozilla’s FireFox.

It seems obvious that this is Sun’s attempt to compete with the Apache Comnmons. It is expressly targeted at Java, particularly SE and Enterprise. Given this target audience, its nascent state and uncertain future it seems a poor choice for psiphon’s project management framework.

GitHub

GitHub offers a free (ad supported) version, as well as paid “brandable” hosting. It is very Web 2.0, with social network-like functionality. Projects act like Facebook groups (with feeds, tags, member lists etc.) It offers some hotness like 37Signals API integration (particularly for Campfire) and slick UI. It also offers web-based code inspection. GitHub has “pastebin” functionality – quick and dirty code inspection.

GitHub is very popular amongst Web application developers – it hosts the aforementioned Ruby on Rails and Prototype projects as well as Yahoo’s UI library and SproutCore (the iPhone App framework) and recently Perl moved to GitHub.

GitHub is not an end-to-end solution. Thus community development tools, particularly for documentation would have to be established elsewhere. While this does give us greater choice in what packages, we lose the tight cohesion and unified user experience of a single solution.

GoogleCode

Google Code is used largely by small independent projects. I’m unaware of any major projects hosted by Google Code other than Google’s own GWT and Gears projects.

While simple and well constructed Google Code is heavily Google branded and has a community perception for being a place for ‘junk’ projects – small, often hack-job projects that are terminated or abandoned quickly. Further, Google’s tools would need to be supplemented with community management tools (Google intends developers to utilize other Google Web Apps for this functionality, groups, calendar etc.)

SourceForge

SourceForge is far and away the most trafficked open source repository on the Internet. It has been around for nearly 13 years. While at one time it was the gold standard for open source project hosting it has begun to show its age and corporate roots. The website is extremely ad laden to the point of spamming users and the software, while stable and usable is comparatively unsophisticated. Further, the huge diversity of projects means that psiphon is unlikely to make an impact, uptake on new projects in SourceForge is notoriously low these days.

Tigris.org

Tigris is designed specifically to host development tools – and thus seems we fall outside the scope of their mandate.

Launchpad

LaunchPad is the Cadillac of the source repository tools. It offers an end-to-end solution for development is is used by some large-scale, technically demanding projects like Miro and the MySQL RDBMS. Of particular note is the web-based translation system that is well integrated into development – allowing us to open source our localization efforts. It also has a well reviewed issue tracking tool which offers some unique features.

This power and comprehensiveness comes with some costs. Launchpad supports SVN and Bazaar, Canonical’s DVCS. Bzr isn’t used much outside the Launchpad community, which is substantial. Further, the software tooling is currently directed primarily at Ubuntu/Debian development. It has been announced that this will be changing sometime in the future.

BitBucket

BitBucket is a robust and very popular project hosting environment. Designed overtly to be a Mercurial version of GitHub it offers virtually identical feature counts. It is arguably the most favourably reviewed of all the services but, save Kenai, is also the newest. It lacks production use by a major open source project.

While the features BitBucket offers are solid it doesn’t offer an end-to-end solution and would require supplementing with other tool packages.

Conclusion

After some consideration it seems that the choice of development tools comes down to either LaunchPad or BitBucket. Mercurial is reputed to be the easiest of the three systems to learn and use and has support amongst several flagship open source projects, giving BitBucket the edge over the otherwise equivalent GitHub. However, BitBucket’s lack of robust functionality means that more work would need to be conducted to research, deploy, configure and integrate the supplementary tools.

LaunchPad, however offers virtually end-to-end functionality at the cost of a slightly steeper learning curve. There is, however, a vibrant community of users already familiar with the tools that could provide guidance to our neophyte contributors.

My instinct tells me that the unified experience and robust functionality of Launchpad make it our best candidate, barring convincing alternative reasoning. The translation functionality and approachable issue tracker make it, in my opinion, the most attractive option.

What are your thoughts? Which service would you recommend and why? What experiences have you had with any of the above, positive or negative? Let me know in the comments.


Version Control to Major Tom

May 11, 2009

Selecting tools for open source projects is akin to preparing for a space launch. There are so many things that can go wrong and one must attempt to think through all the disaster scenarios of which one can conceive.

More often than not, developers and community managers either satisfice with the first acceptable tool they come across, or reflexively reach for whatever tool is most familiar. Neither of these is optimal – especially if you’re concerned with the long-term viability of the tools you’re using.

We at Psiphon wanted to ensure that our project was running on the most advanced software appropriate to a serious, long-term open source project. While a lot of the technical assumptions of open source projects have remained constant since the practice’s beginnings, others have changed under the community’s feet.

Ensuring there is something we can do.

One such major change is the shift in version control technology. It used to be that CollabNet’s Subversion was, as its named implied, the counter-cultural tool of the new wave; toppling the CVS monolith which had forced sub-optimal practices and fostered sloppy code maintenance. Now DVCS, that is distributed version control systems are emerging as the new norm. Unlike the previous generation’s clash-of-the-titans between SVN and CVS, there are several contenders each with their own schools of supporters and none with an un-contestable hegemony.

When I set about enumerating all the various open source tool hosts, it was clear that one’s preference in DVCS was the most salient distinguishing feature amongst all the different tools. DVCS, as the name implies allow a peer-to-peer style of version management – the software doesn’t enforce a single, canonical version of the software. This has a number of technical benefits (easier alteration of software, better off-line editing, etc.) but it also enforces legitimacy of community managers – since there’s no big stick of original source control to enforce hegemony.

Conceptually DVCS has been around for a while, but has only recently seen widespread adoption. While there are a number of options for DVCS there are really three major front-runners, Git, Mercurial and Bazaar. Because Psiphon aims to be accessible, and I couldn’t spend a year comparing DVCS packages, I decided to exclude all but the big three from inspection.

Mercurial (Hg)

Along with sibling package, Git, Mercurial was kicked-off by the withdrawal of the free version of BitKeeper. Developed largely in python with some C libraries, Mercurial has a wide support base. Its viability as a package took a shot in the arm recently as Google announced Hg support in their GoogleCode hosting platform. Mercurial is also the tool of choice for users of BitBucket, a popular project hosting service. Mercurial is renowned for it’s intuitive nature and intelligent CLI. Mozilla uses Mercurial, as does Symbian OS (the Nokia-developed operating system for mobile devices) among many others.

Git

Git was blessed from its beginnings. Created by Linus Torvalds and implemented for use on the Linux kernel in response to the removal of BitKeeper; Git isn’t going anywhere any time soon. Git is also used on the popular project hosting service GitHub – popular amongst Ruby-on-Rails projects, including the RoR project itself and its sister-project the AJAX library Prototype. Git is considered the market leader, if only for the simple fact that the Linux kernel uses it for development. Git has been criticized for it’s user-unfriendliness and often unintuitive CLI.

Bazaar (bzr)

Bazaar was developed by Canonical software for use in maintaining its premiere Linux distribution Ubuntu. It has been since incorporated into their open source tools package Launchpad. Launchpad and Bzr are used by several flagship open source projects, notably Sun Microsystem’s MySQL project, the Zope python web framework and Ubuntu and family.

The Upshot

While technical capacity is an important consideration, the user-base of a tool like version control for an open source project is often as important. If a potential developer is forced to learn an additional tool it increases the barrier to entry, narrowing the scope of contribution. Further, while DVCS is quickly becoming a critical component for open source development, it must be considered amongst concerns of integration with other tools – a strong VCS cannot compensate for an otherwise weak tool chain.

Ultimately, a VCS doesn’t make a community and can’t run a project for you – the object is to select the tool least offensive to contribution and most conducive to good development habits amongst your contributors. We’ll see in coming entries how each of the systems fare as I set about finding a new home for Psiphon’s open source development.


The Summer of Psi Begins!

May 5, 2009

On May 1st, the revolution began. Psiphon Inc. was officially announced. Our development team is working feverishly to code up the impending release of Psiphon 2.0. Parallel to their efforts is the Summer of Psi project.

Inspired by Google’s Summer of Code, your humble author, Jeremy Vernon was brought in to be the Summer of Psi Guy, guiding Psiphon and its community through a process of upgrading and expanding. The Psiphon project will be better and more open than ever.

There will be a lot of changes – new tools for managing the software, new platforms to communicate with you, our users and contributors, and of course a new version of the Psiphon code.

I’ll be chronicling the activities taking place throughout the Summer of Psi and soliciting feedback from you, so please comment! The whole team values all your help in making Psiphon the premiere open source censorship circumvention software.