Skip to content
This repository

F1 is a browser extension that allows you to share links in a fast and fun way. Share links from within the browser, from any webpage, using the same services you already know and love. F1 is made by Mozilla.

Octocat-spinner-32 apache Lower logging levels December 14, 2010
Octocat-spinner-32 bin handle staging November 17, 2010
Octocat-spinner-32 docs linkdrop September 01, 2010
Octocat-spinner-32 extensions maxversion merge April 13, 2011
Octocat-spinner-32 grinder Update grinder script to not use csrf (its going away) March 23, 2011
Octocat-spinner-32 linkdrop delete reference to non-existent controller action April 27, 2011
Octocat-spinner-32 misc add our patched line_profiler file, it fixes use with paste/pylons an… September 23, 2010
Octocat-spinner-32 tools Adapt to different versions of git and branches with '-' in their names. April 19, 2011
Octocat-spinner-32 wsgi Fix logging problem when running in wsgi mode December 14, 2010
Octocat-spinner-32 .gitignore ignore .ropeproject stuff April 22, 2011
Octocat-spinner-32 LICENSE Adding license info. November 03, 2010
Octocat-spinner-32 dont include web content in RPM anymore April 26, 2011
Octocat-spinner-32 Makefile Merge branch 'develop' into bug/654598-make-dev-target May 05, 2011
Octocat-spinner-32 add repo deprecation warning w/ links to the new repositories May 05, 2011
Octocat-spinner-32 README.production prod docs November 17, 2010
Octocat-spinner-32 removed web and hooked client-share-web instead May 04, 2011
Octocat-spinner-32 debug.ini an ini file to use dbgp debugging September 29, 2010
Octocat-spinner-32 development.ini removed web and hooked client-share-web instead May 04, 2011
Octocat-spinner-32 linkdrop September 01, 2010
Octocat-spinner-32 f1-nginx.conf added nginx+gunicorn+gevent support February 25, 2011
Octocat-spinner-32 make sure we have a web/ directory to keep happy at RPM time April 26, 2011
Octocat-spinner-32 grinder.ini avoid grinder hitting bitly to share links and replace tabs with spaces March 09, 2011
Octocat-spinner-32 gunicorn-gevent.ini added nginx+gunicorn+gevent support February 25, 2011
Octocat-spinner-32 production.ini removed web and hooked client-share-web instead May 04, 2011
Octocat-spinner-32 profile.ini add an ini file to make using the python profiler easy September 29, 2010
Octocat-spinner-32 setup.cfg no more pylons dependency April 27, 2011
Octocat-spinner-32 add dependencies that we used to get transitively through pylons April 27, 2011
Octocat-spinner-32 staging.ini versioned resources for release April 12, 2011
Octocat-spinner-32 test.ini Merge branch 'develop' into bug/642873 April 21, 2011


The "F1" project, a way to share links implemented as a Firefox extension, has been converted to (and thus superseded by) Firefox's "Share" feature. The web app portion of this project is now available in the following repositories:

The browser extension portion of this project has been rolled into Firefox itself.




A link sharing service that consists of a Firefox extension and a web service.

The firefox extension creates an area to show the share UI served from the web service.

The web service handles the OAuth work and sending of messages to different share servers.

Some directory explanations:

  • extensions: holds the Firefox extension source.
  • web: holds the UI for the web service.
  • grinder: a load testing tool.
  • tools: deployment tools.
  • The rest of the files support the web service.

Installation and Setup

Get the f1 repository:

git clone
cd f1

Setup dependencies:

make build

If you are on OS X and you get errors or it does not work, see the OS X troubleshooting section below.

Start the virtualenv

source bin/activate

Running f1

Run the web server. 'reload' is useful for development, the webserver restarts on file changes, otherwise you can leave it off

paster serve --reload development.ini

Then visit: for an index of api examples

Troubleshooting OS X installs

If the make build command produced errors or results in not being able to start up the server, use the following steps. It is suggested you re-clone F1 before doing the following steps, so that it starts out with a clean environment.

  1. Make sure XCode 3 is installed.

  2. Build your own version of Python:

    sudo svn co sudo chown -R $USER ./python cd python vi buildout.cfg: then remove any references to python 2.4 and 2.5 python ./bin/buildout cd /usr/local/bin sudo ln -s /opt/python/bin/virtualenv-2.6 virtualenv

  3. Now edit your .profile to make sure that if you have MacPorts installed, its PATH and MANPATH variables are last in the list for those environment variables.

I also removed export PYTHONPATH=/Users/aaa/hg/raindrop/server/python:$PYTHONPATH and removed /Library/Frameworks/Python.framework/Versions/Current/bin from the $PATH variable.

  1. Build C libraries via Homebrew:

Homebrew installs into /usr/local by default, and it is best if you chown the files in there to you:

sudo chown -R $USER /usr/local

If installed things before in these directories, remove these directories: /usr/local/include and /usr/local/lib

ruby -e "$(curl -fsSLk"
brew install memcached libmemcached

Then try the make build command above and continue from there.

Setting up a valid Google domain for OpenID+OAuth

You have to have access to a valid domain that google can get to and where you can install an html file.


Add your domain, follow the rest of their instructions.

To test: Once that is done, you can bypass normal access to your domain by adding to your /etc/hosts file:

Update development.ini and add your key/secret for the google configuration, restart paster.

Then in the web browser, hit f1 with

Something went wrong with that request. Please try again.