Purpose of the Dash
The Dash aims to provide a lightweight, instant and easy means to browse and retrieve content. The Dash is the beginning of most user journeys; a user first finds the content they are looking for in the Dash before moving to the relevant application. The Dash is content centric; content sources are grouped together around content types. The Dash is not a place for a user to do work, interaction with the Dash should be limited to searching for and finding content.
Purpose of a Lens
Each Lens should be for a specific data type, e.g. Music, Books, Sheet Music, News, Photos, Comics, etc... If a Lens for a content type already exists, it is hoped other developers will contribute scopes to interface new sources of data with the Lens. So if a 'Comics' Lens already exists, we would hope that a Indian comic fan would write a scope to pull content from say http://onlineindiancomics.blogspot.com/ into the comics Lens.
Try to limit the creation of new lenses, because it is more useful to users to have fewer Lenses interfacing with more sources of content. Part of the value the Dash gives to users is content aggregation, and while a proliferation of Lenses would make life more difficult, a proliferation of scopes is very useful and desirable.
Basically the rule is "If a Lens already exists for the data type, focus on writing scopes for that Lens. Do not create a new Lens, if you need to modify the Lens contact the Lens author and contribute a patch"
Purpose of a Scope
A scope is a specialized search engine dedicated to a local or remote data source : user folder, Picasa, Flickr, Shotwell, etc. Scopes are made to fit the filters and categories of their parent lens and are the engines behind the lens. If the lens architecture needs some modifications for your scope (specific filter, new category or improvement on a category name), contact the Lens author, but remember that a lens for a data type needs to be able to host many data sources and each filter needs to be useful for all of them.
For each search result, a scope needs to specify :
- a title
- an uri
- an icon
- an optional comment
- an optional uri to be used on drag and drop (drag and drop on an app or on the desktop)