How Outfoxed is built, and being built. Design considerations. Proposed standards for metadata distribution.

The Synchronizer Component is currently within the Outfoxed Extension. This avoids problems with firewall/virus checking programs that don't approve of programs connecting to the internet. By doing our uploading and downloading in the browser, these problems are avoided.
The communication between the broswer and the MDDB is currently not SOAP, but raw XML. Hopefully this will be remedied soon. (Also needed is better security for the MDDB.)
Like the internet itself, Outfoxed is de-centralized. An informer's page can reside at any valid URI. Outfoxed can upload files to any FTP server, or to specially configured HTTP servers.

And for that matter, the information can be read and used by any program, not just the current Outfoxed Firefox extension. If the idea of trusted metadata catches on, there could be many different trust aggregation tools, just as different browsers can read the same HTML files and different newsreaders can read the same RSS files.
Personalized metadata is a good idea, but it needs a concrete representation. There was no question that the standard should be based on XML. Plus, there are obvious similarities between publishing your metadata and publishing news stories, so RSS was a natural starting point. Services like del.icio.us already use RSS for distributing bookmarked web pages; one kind of metadata.
Outfoxed uses RSS 1.0 to encode user's reports. The only tags from non-standard modules are of:scope and of:quality.
Scope indicates how broadly the report can be applied. If it is empty or missing, this indicates that the report applies only to the specific URI of the rdf:about tag. Otherwise, it must contain some portion of the rdf:about URI with *'s indicating where it can be generalized. For example, *getoutfoxed.com* would apply to every page on this website.
Quality indicates the subjective evaluation of the specified resource. Range is from 100 (Absolutely perfect) to -100 (Completely dangerous). A value of 0 indicates that the quality is unknown, or cannot be determined. If the specified resource is another RDF file, it indicates the degree of trust. (Or to be more precise, the confidence/probability that the subjective values of the target file's creator are the same as the source page's creator.)
Informer pages are indicated by the presence of _RSS in the <dc:subject> tag.
It is reccomended that you provide an XSL stylesheet which can transform the RSS into HTML. (Sample XSL File)
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="users/outfoxed.xsl"?> <rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:of="http://trustbase.org/quality/0.1/"> <channel rdf:about="http://getoutfoxed.com/trust.xml"> <title>Outfoxed Home</title> <link>http://getoutfoxed.com/<link/> <description>Default informer.<description/> <image rdf:resource="http://getoutfoxed.com/files/outfoxed_profile_pic.jpg"/> <dc:subject/> <items> <rdf:Seq> <rdf:li rdf:resource="http://www.wanderingstan.com/"/> <rdf:li rdf:resource="http://getoutfoxed.com/sample/dangerous"/> <rdf:li rdf:resource="http://getoutfoxed.com/sample/good"/> <rdf:li rdf:resource="http://getoutfoxed.com/sample/bad"/> <rdf:li rdf:resource="http://getoutfoxed.com/users/stan"/> </rdf:Seq> </items> </channel> <image rdf:about="http://getoutfoxed.com/files/outfoxed_profile_pic.jpg"> <title>Outfoxed Home</title> <link>http://getoutfoxed.com/</link> <url>http://getoutfoxed.com/files/outfoxed_profile_pic.jpg</url> </image> <item rdf:about="http://www.wanderingstan.com/"> <title>wanderingstan</title> <link>http://www.wanderingstan.com/</link> <description>Stan's home page</description> <dc:creator>Outfoxed Home</dc:creator> <dc:date>2005-04-02T18:17:11Z</dc:date> <of:quality>50</of:quality> <of:scope>*wanderingstan.com*</of:scope> <dc:subject>stan homepage blog travel cogsci</dc:subject> </item> <item rdf:about="http://getoutfoxed.com/sample/dangerous"> <title/> <link>http://getoutfoxed.com/sample/dangerous</link> <description>Sample Dangerous Page</description> <dc:creator>Outfoxed Home</dc:creator> <dc:date>2005-04-02T18:17:11Z</dc:date> <of:quality>-50</of:quality> <of:scope/> <dc:subject>sample</dc:subject> </item> <item rdf:about="http://getoutfoxed.com/sample/good"> <title/> <link>http://getoutfoxed.com/sample/good</link> <description>Sample Good Page</description> <dc:creator>Outfoxed Home</dc:creator> <dc:date>2005-04-02T18:18:52Z</dc:date> <of:quality>50</of:quality> <of:scope/> <dc:subject>sample</dc:subject> </item> <item rdf:about="http://getoutfoxed.com/sample/bad"> <title/> <link>http://getoutfoxed.com/sample/bad</link> <description>Sample bad page.</description> <dc:creator>Outfoxed Home</dc:creator> <dc:date>2005-04-02T18:17:24Z</dc:date> <of:quality>-25</of:quality> <of:scope/> <dc:subject>sample</dc:subject> </item> <item rdf:about="http://getoutfoxed.com/users/stan"> <title>stan</title> <link>http://getoutfoxed.com/users/stan</link> <description>Author of Outfoxed.</description> <dc:creator>Outfoxed Home</dc:creator> <dc:date>2005-05-02T16:15:20Z</dc:date> <of:quality>50</of:quality> <of:scope/> <dc:subject>_RSS outfoxed programming javascript python travel</dc:subject> </item> </rdf:RDF>
<rts version="0.2">
<channel>
<profile>
<uri>http://www.trustbase.org/users/stan.xml</uri>
<name>Stan</name>
<link>http://www.wanderingstan.com</link>
<description>I'm a student at the University of Osnabrueck.</description>
<image>http://www.trustbase.org/users/stan.jpg</image>
</profile>
<reports>
<report>
<scope>*metafilter.com*</scope>
<uri>http://www.metafilter.com/</uri>
<trust degree="50"/>
<description>
Nice source for fun links.
See also<a href="http://www.monkeyfilter.com">monkeyfilter</a>
</description>
<date>2005-01-02T23:04Z</date>
</report>
.
.
.
</reports>
<informers>
<informer>
<uri>http://www.trustbase.org/users/koenigb.xml</uri>
</informer>
.
.
.
</informers>
http://www.google.com/ *news.google.com* *google.com*
A "representative" link for this URI. If the user clicks on this report, this is where they will be taken.
The degree attribute indicates, basically, the quality of the content found within scope. (Yes, it is poorly named.) There are no rules as to what the values must mean other than this: Values below 0 are poor quality, or anything that should be avoided. A value equal to zero indicats the content is completely average. A value above zero indicates the content has good quality. Currenly, Outfoxed uses these values: Dangerous = -50, Bad = -25, Good = 50.
A description of the content found within scope, reasoning for the quality rating given, and anything else the informer giving the report wants to say. Links are allowed, but the anglebrackets must be encoded.
Tags that apply to the content. Just like with del.icio.us or flickr.
Date that this report was made.
The following resources are used in Outfoxed.
The following resources are used on getoutfoxed.com
Security means two things for the Outfoxed extension. First, can it (or its helper applications) be exploited to harm users? And second, how safe is the users data from tampering?
In answer to the first question, all that can be said is that attempts were made to make the system secure. For example, HTML from user reports is severely filtered before it displays in the sidebar to prevent javascript in a report from being run in a priviledged context. And of course, the MDDB only listens to requests originating on the same machine on which it is being run.
The answer to second question is, unfortunately, that a user's data is not very safe at the moment. (Or rather, it is safe only in that it is not popular enough to have attracted the attention of would-be attackers.) The core problem is that the MDDB will listen to any application. So if an attacker was able to install a program on a user's machine, the program could modify the contents of the MDDB at will. False reports and informers could be added, for example.
The solution is to use the same public-key security measures which are planned for Outfoxed web security: The MDDB maintains a list of the public keys of applications which it will listen too, and performs a challenge-response protocol to any application wanting to modify (or retreive?) data.
[TODO: more needed. And seperate page for challenge-response/public key stuff.]