The favicoop (my site running 16×16) has completely exceeded my expectations. With only ~75 add-on users, we are quickly approaching 10,000 hashably unique favicons in the collection. I think this is the largest favicon collection on the internet.
While this project has a lot to do with collecting favicons, I was mainly motivated to build it to learn about various technologies. It’s built with many Google services (AppEngine, code hosting, groups, hosted apps, analytics, etc). I’m pretty sure it is the only tool on AppEngine app that integrates with a Firefox add-on — even serving add-on updates. It is a great tool if you want to learn about AppEngine, Firefox add-on integration, and all the free Google services. To top things off, it can all be ran locally with the AppEngine SDK — so you can learn about these tools too!
With that, if you’re interested in collecting favicons you browse AND learning about how to run an AppEngine app — continue reading!
Step 0: Background
I assume you know how to install things on your computer, including add-ons, handle a few basic shell commands, and use SVN.
Step 1: Download stuff
You will need to grab three things, the Google AppEngine SDK, the 16×16 sources, and the packaged add-on. To grab the SDK, visit http://code.google.com/p/googleappengine/. Note: it requires python2.5. On OSX 10.4, I had to install that manually.
After you download/install the SDK, grab my sources from here:
svn checkout http://16x16.googlecode.com/svn/trunk/ 16x16-read-only
Last, you need to install the add-on. Do this by dragging this link to the URL bar (Firefox 3 only).
If you did all that, you should have everything you need to get started.
Step 2: Local environment tweaks
You will need to do some house-keeping to get things working on localhost. First, lets update the add-on upload-uri pref. This will cause the add-on to send your favicons to localhost. Hit about:config and modify the extensions.favicon.upload-uri pref. The pref should be changed to:
http://localhost:8080/send/
Next, cd into the app/ directory (of the svn repo) and copy the settings.py.dist to settings.py.
cd app/
cp settings.py.dist settings.py
Now we need to modify the app slightly to display images off of localhost — and not the production favicoop. In templates/index.html, find the line that reads:
// for running locally
// var domains = ['localhost:8080'];
Uncomment the var domains line, so it reads:
// for running locally
var domains = ['localhost:8080'];
This will cause the javascript to load the images locally.
Step 3: Launch the development environment
To launch the development environment, run the following command from the app/ directory.
python2.5 /usr/local/bin/dev_appserver.py ../app/ # you may have to modify this a bit for your SDK install
Now try hitting http://localhost:8080/. If you see “(error)”, browse to a few different websites (non-https) to load up some favicons into the collection. A good way to test is to bounce back and forth between tabs with favicons, as the add-on will send the favicon every time.
dev_appserver.py should spit out some debugging information. For instance, when a favicon is sent from the add-on to the server, you should see a request like this:
INFO 2008-05-19 04:05:48,967 dev_appserver.py] "POST /send/ HTTP/1.1" 200 -
Note the 200 status code, that means it worked! If it is returning 500, that means something is messed up. The dev_appserver.py should spit out the errors to help with debugging.
That’s it!
Refresh localhost a few times to see the new favicons being added to the collection as you browse. If you’re able to get it up and running locally, please let me know!
If you have any questions/comments, feel free to mail the shiny new discussion list. If you encounter any bugs, please let me know here, and if you are really interested — commits are here, and bugmail is here.