This is a prototype for a product to create better ways of sharing and saving content, starting with screenshots. (This project used to include general page freezing; this functionality has been forked off into pagearchive.)
The project has been launched through Test Pilot at pageshot.net. We are looking to a general audience release in the future.
It is made up of both an add-on (using WebExtensions) and a website using Node.js. The add-on is in addon/webextension/
, and the website is in server/
Ian has been blogging about the design, definition, and development process.
You can find more information about Firefox Screenshots at the Mozilla Wiki page: https://wiki.mozilla.org/Firefox/Screenshots
Install Postgres.
Install Node.js. Version 6.x is required.
Clone the repository.
There are two scripts to run the server locally and develop the add-on:
./bin/run-server
will run the server onhttp://localhost:10080
and automatically restart if there are changes../bin/run-addon
will build a few parts of the addon (intoaddon/webextension/build/
) and start Firefox with the add-on installed. The add-on will be refreshed automatically as you change files. We recommend you openabout:debugging
to help debug the extension.-
./bin/run-addon --bootstrap
will run the add-on using the bootstrap wrapper. This is how the add-on is run in Firefox, and provides some additional services, like Telemetry and migration. This does not support reloading, so if you aren't developing things involving the wrapper then you can run without--bootstrap
.
./bin/run-addon --setup-profile
will setup a Firefox profile for your development; this way you can make persistent changes to the profile that you will use just for Screenshots development. (note: this will only look for thefirefox
commmand or Nightly, Developer Edition, Aurora editions on OSX)
If you want to develop the add-on but not the server you can run ./bin/run-addon -s https://pageshot.dev.mozaws.net
By default, Screenshots will connect to a Postgres database on localhost:5432. To change which database and user it connects to set/export the environmental variables: RDS_USERNAME
, RDS_PASSWORD
, and RDS_HOSTNAME
The server will automatically setup the tables in your database, and keep them up to date over time (using pg-patcher).
If you have growl and growlnotify installed on Mac OS X, you will get growl notifications when the server build has started and completed.
We apologize but we have no story for development on Windows (though the add-on runs on Windows). We welcome feedback.
There is documentation in addon/, addon/webextension/, addon/webextension/background/, and addon/webextension/selector/ that talks about the code layout and architecture of the add-on.
server/view-docs.md talks about how the server React pages are setup, along with the server-side rendering of pages.
There is also documentation in docs/.
There is an IRC channel #screenshots
on irc.mozilla.org (you can use this link for chat access via the web if you do not otherwise use IRC). There are IRC logs available.
Planning and ideation is happening in the issue tracker. We have several milestones:
- Issues with no milestone are awaiting triage
- Issues in Stretch are immediately actionable but just nice-to-haves, not blockers.
- Issues in Next Tasks are deferred for now, but will be re-triaged when the current milestone is done
- Issues in Blue Sky are mostly shelved; we'd like to do them but have no plans to move forward. (If you see something you care about there, comment on it -- otherwise we may not notice it)
- Issues in 54 are things we want to do to ship to a general Firefox audience.
- Look for "Sprint 54.x" to see planned work for a sprint (2-week phase)
Issue tags otherwise aren't very structured. Research is primarily analysis of other products that do something interesting, or some source material that could provide insight. Input on these (things like "I like this product because...") is very helpful!