Note: not all functionality described below is in place. A lot of it is. However, there is still quite a bit of work to be done.
gRSShopper is an application that allows you to define your own community of RSS feeds, aggregates content from those feeds and organizes it, and helps you integrate that content into your own posts, articles and other content.
It is a research database, a blogging engine, a community website, a content management system, and ultimately, a personal learning environment.
The software is written in a computer language called Perl and is loaded onto web servers. It uses a database to manage your links, posts and other content. You access it with your web browser.
The concept and principles behind gRSShopper have been described in various papers, including most importantly An Introduction to Connective Knowledge, E-Learning 2.0, Semantic networks and Social Networks, Learning Networks and Resource Profiles.
gRSShopper is intended as a personal web environment, for use by individuals and small groups. It is not intended to aggregate the entire web (though if you want that, it can be used to harvest from Technorati, Feedster and the like).
That said, instances of gRSShopper interact with each other. If you have an identity on one gRSShopper installation, you have that same identity on all of them. Content posted on your own installation will appear on other installations (depending on whether their owners want to see your content).
The idea behind gRSShopper is to view the web as a community of communities, rather than as a single, undifferentiated mass. It allows you to select and highlight commentary from people who are close to you, who are interested in the same things as you, rather than from people across the web.
You may find, as I have, that gRSShopper becomes the website you open when you log on to the web and the window through which you interact with other people for the rest of the day. It is your reading platform, your conversation platform, and your writing platform. It is your library, and it is your personal portfolio.
gRSShopper is composed of the following major subsystems:
Login and person management - owners and guests on an gRSShopper installation have a personal user account. They access gRSShopper through a login based on this account. You, as the owner of the gRSShopper installation, can create, edit and delete content on the system. Your guests may be given permission to read and write different types of content.
Feed manager and aggregator - content from your community is brought into gRSShopper using an aggregator. The aggregator harvests content from RSS, Atom and OAI feeds. You maintain a list of feeds, and can add, drop or retire feeds as you desire. Harvesting happens automatically, in the background, so once you set up your feeds you don't have to worry about it.
Reader - as content comes into gRSShopper it is analyzed and organized. This allows you (and your visitors) to view content from various perspectives. gRSShopper can display the most recent content, the most popular, the most cited, content from a given topic, and even content from your community organized as a conversation, even if the participants are posting on different websites.
Writer - gRSShopper allows you to create various types of content for your own use or for display on your website, including blog posts, event listings, articles and essays, web pages, and more. Your guests may also be allowed to post content to your site. gRSShopper supports document, audio and video file uploads, and can be used therefore to create podcasts or multimedia feeds.
Publisher - the content in your installation can be displayed in a variety of ways, including as web pages, RSS feeds, email newsletters, and more. The publishing engine dynamically organizes content from your database and can deliver material live or as static web pages. gRSShopper supports a subscription service that allows your readers to customize their RSS feeds, personal web pages, or email newsletters.
Login and Person Management
The purpose of the login system is not merely to control access to your system or to track their behaviour. Rather, the login system allows you and your visitors to maintain a consistent identity in your system and elsewhere, thus allowing people to be connected to content wherever it may be created.
gRSShopper supports the mIDm login system and, after it is developed, will support Yadis distributed identity systems (we're a little ahead of the curve here). This means that you can create an identity on one gRSShopper system and use it on any other gRSShopper system (and eventually, on any Yadis system).
Additionally, gRSShopper will harvest information from other sources in order to support your personal identity. For example, if you have a FOAF file defined elsewhere, gRSShopper will fill and update your profile based on that file. If you do not have a FOAF file, gRSShopper will create one for you.
(Not yet functional) Part of the purpose of a FOAF file is to help you keep a list of your friends. In gRSShopper, your list of friends plays an important role in the system. For example, gRSShopper will look at what your friends are reading and make suggestions to you. You can also give your friends extra privileges on your system (such as posting comments).
(Not yet functional) gRSShopper will also aggregate content and information from your other web accounts. For example, if you store pictures on Flickr, bookmarks on del.icio.us, or multimedia on Ourmedia, gRSShopper will retrieve this information and display it on your personal page for you (and your visitor) to view.
The most important aspect of your personal account is to connect you to your content. When you publish content, a link to this information is (at your discretion) added to web pages or syndication feeds. This allows readers to find other things you've created, and it allows you to view things created by other people.
Additionally, your personal account allows you to create and distribute metadata about other resources. For example, gRSShopper supports a content rating system - if you like something, give it a '5', and if you don't, give it a '1'. This ratings information may be distributed as an RSS feed, allowing it to be harvested by other systems. Thus, you can allow other people to know not only what you had to say, but what you thought about what other people had to say.
Of course, ratings are the tip of the iceberg. You can report how popular a link was, or how many times it was linked. gRSShopper allows you to define tags for your content and will automatically tag links and posts according to your specifications. Or it will allow (Not yet functional) you to create educational metadata, based on the IEEE-LOM standard.
Feed manager and aggregator
Harvesting is controlled by a feed manager and harvesting system. The feed manager allows you to create and edit a list of feeds. Depending on your settings, the harvester will use this list to harvest content from the web. Feeds are stored in a queue and can be automatically harvested at pre-set intervals, distributing the workload and ensuring a steady stream of content.
(Not yet functional) Feeds can be sorted according to how popular they are, how often they are cited, and how highly rated their content is. Poorly performing feeds can be automatically dropped from the system, based on your settings. In addition, the harvester will look at what your friends are reading and suggest new feeds to you, which you can with one click add to your harvester.
The harvester operates completely automatically (though of course you can always manually harvest a given feed or the whole lot of them). As content comes into the system, data is extracted and placed in different parts of your database. For example, the author is linked to an individual in a list of authors. Links contained in the content are stored and citations and references (to your content, and to others') are collected. Content automatically is tagged according to your specifications.
(Not yet functional) gRSShopper harvests a wider range of metadata than other harvesters and uses it to analyze and organize content. It harvests ratings metadata and adds it to what it knows about links it has previously harvested. Or it looks at educational metadata (including categories, age-ranges, and more) and connects it to the resource it describes. It spots events metadata and creates a customizable calendar. It looks for rights metadata to keep track of what content you can use and what content you can only look at. And more.
Because of the way data is stored and displayed in gRSShopper, you can read incoming content in a wide variety of ways, limited almost only by your imagination. Some of the ways currently implemented are:
Most recent - gRSShopper will display the most recent content harvested, with the newest links displayed at the top.
By feed or author - click on a feed and look at the most recent posts written in that feed or by that author.
As comments - display and read harvested content that refer to something you have written as comments to your posts or articles.
Most popular - display and read harvested content sorted according to how many times it has been read by your visitors or subscribers, or by how many times it has been cited, or buy how highly rated it is, or by a (weighted) combination of those factors.
As a conversation - display and read a series of posts that respond back and forth to each other, no matter where these posts were originally published.
By topic - display and read posts on a specific topic or through a dynamic search of the database contents.
(Not yet functional) The reader functions not only as a way to look at things, but also as a bridge to import references and links into your own work. Using the gRSShopper writer, you can access various views of the reader to comment on current posts, research a paper, or schedule an event.
gRSShopper supports a rich and varied content creation environment, allowing you to create numerous types of content. As administrator, you can create and edit the following types of content (and additionally, many of these types of content are also created automatically by the system:
Author - authors are identified and created when you specify them in a post or when they are found by the harvester. You can edit author information, specifying (where necessary) a home page, description, picture and links. (The following not yet supported) You can set gRSShopper to harvest the author's FOAF or other information. You can also associate the author with an organization. Example.
Box - a box is a bit of content that may be used in many locations, such as a table of contents, copyright information, or list of active feeds. You can create and edit boxes, and easily place them into any other content. Example.
Event - you can describe and link to any event, which can later be displayed as a calendar. Associate posts and other content with these events (thus, for example, you could collect all the posts about a conference in one place). Example.
Feed - you can describe and link to any feed, and use the list of feeds to manage the harvester. You can optionally upload a list of feeds from OPML. Optionally, you can display feed information and the list of posts harvested by the feed, or output the list in OPML. Example.
File - upload any file, including images, audio and multimedia. gRSShopper captures information about the file during upload and saves it automatically. Files can be associated with posts and displayed along with posts and articles. File information can be used to create podcast and other feeds.
Journal - describe and link to any journal, publication or organization that publishes content. Example.
Link - links are contents that are harvested from other sites, and are mostly created automaticaly. However, you can create and edit links as well. Example.
Page - content specifically designed to be a web page can be created; pages may be displayed either dynamically or published as static HTML, RSS or other formats (publication as static pages reduced server load; publication can be automated and triggered to occur at given time intervals or following certain actions). You are viewing this page in static format; here is the dynamic version.
Person - persons are people who have an account on your system. Information about a person may be displayed and edited (persons may opt to keep their information fully or partially private). Persons may edit their own information, including their own page on your site (note that they can use any of the features, described below, to create dynamic content on their page). Person data can be imported through mIDm and FOAF, and exported in a similar manner.
Post - a post is content you create (or that your guests create, if you allow them). Posts may be associated with events, and in turn, can reference files. There are various types of posts, each with their own editing screen and display:
- post-link - this is a small commentary, most similar to a blog post, but with additional fields to record link information. The core content of OLDaily consists of this type of post.
- post-article - this is a longer post, more like an essay or article.
- post-comment - this is a short post, usually submitted by guests, that is linked to a link or an article, and is typically a comment on that link or article.
- post-gallery - this is a photo gallery, and is associated with a set of image files. gRSShopper supports a system that automatically constructs image galleries based on the contents of this type of post. Here is an example of the post itself, an example of the gallery automatically constructed by gRSShopper, and the gallery index, also automatically constructed.
- announcements and musings - two short specialty types of posts. It is fairly easy (though not yet automatic) to create numerous additional types of posts.
Template - as the name suggests, templates are used to help with page publication. Two types of templates are used, a 'top' and a 'bottom' (sometimes called 'left'), which are affixed to a web page on publication.
Topic - owners can create and define topics. Topics are used by gRSShopper to automatically categorize and tag links and posts. Takes consist of a regular expression or search command that defines the type of post or link to be included in the topic. Topics also define topic-specific pages or feeds. Example.
View - a view is a way of looking at data in gRSShopper. Every content type listed above has its own set of views. Views can be mixed and matched in order to crate pages and feeds with multiple content types.
The publisher collects information from the gRSShopper database and presents it to the reader. The publisher supports a number of content selection and formatting options thus allowing a wide range of viewing options.
As we have seen above, any type of content can be presented as, say, a web page. In additionally, any of the content listed above can be embedded into any other type of content, including web pages. This is determined by the publishing commands specified by the owner in various views.
Any content in gRSShopper can support any of the following commands:
Box - specifies the name of a box to be inserted. Any commands in the box are processed along with the page. Example: Content for box boxname not found
Keyword - specifies content to be inserted from the page. The keyword command supports a number of options,separated by semi-colons. For example:
db - specified the type of content to include
number - specified the number of items to display
expires - specifies the maximum age of the items to display, in hours
heading - how to title the list of items (in HTML format)
format - specifies the view to be used to display the contents
all - tells the system to consider all contents in the database
lookup - uses a lookup list to find content in a third table
sort - what field to use to sort the display
start - what record number (of the sorted list) to start at
none - what to display if there are no results
wrap - what to put around the list if there are results
Additionally, any other command in a keyword defines a search parameter to be used; the name of the command is an abbreviated version of the field name to search, and the value of the command specifies the search parameters (which can include regular expressions).
It should be noted that keywords are recursive, which means that a keyword can be used to generate other keywords to be processed. This creates rich, multi-layered possibilities for content.
Field Commands - records (usually retrieved using a keyword command) are displayed by means of field commands; essentially, for a given type of data, gRSShopper will replace an instance of with the contents of that field.
Special commands: a list of commands, enclosed in angle brackets, supports the following specialized content:
- dates (including NICE_DATE, 822_DATE, NOW, MON_DATE, HOURDATE, DATERANGE)
- login options display (LOGIN_OPTIONS)
- dropdown lists from a set of options (LD_DROP) or contents of a table (DB_DROP)
- administration functions (EDIT, DELETE, SPAM) which display only to administrators - date selector popup (POPUPDATE)
- site and page information (PAGE_NAME, SITE_NAME)