project
Project
This is a page for tracking the effort to develop a project microformat for authors and publishers to markup public projects like open-source software or other kinds of artistic distributions.
View each individual page as the main page omits some content.
The project-*
Please read process first, before creating new pages!problem statement
scenarios
One of its primary intent is to allow robots to automatically classify projects in a freshmeat manner by browsing the web. ZimbaTm 08:31, 12 Jan 2008 (PST)
real world examples
Freshmeat.net
Description of the software project
- full project name (This is the publicly visible project name.)
- short project name (This will be used to generate a /projects/<shortname>/ URL for your project.)
- full description
- short description
- name of author
- email address
- branch name
- branch description
- license
- homepage
- Tar/GZ
- Tar/BZ2
- Zip
- Changelog
- RPM package
- Debian package
- OS X package
- Bittorrent
- BSD Ports URL
- Autopackage URL
- Jar
- Purchase
- CVS tree (cvsweb)
- Bug tracker
- Mailing list archive
- Mirror site
- Demo site
- version
- release focus
- Dependencies
43things
How I did a project
- goal title
- last words (summary)
- how
- lessons
- time taken
- resources
Moldova Aid Project
A humanitarian aid project
- summary
- achievements
CORDIS
Community Research and Development Information Service
- project title
- Research area
- Coordinator (author)
- Project description
- Project details
- Project Acronym
- Project Reference
- Start Date
- Duration
- Project Cost
- Contract Type
- End Date
- Project Status
- Project Funding
- Participants
The World Bank
Moldova Community Forestry Project
- project title
- Project ID
- Project Status
- Approval Date
- Closing Date
- Total Project Cost
- Region
- Major Sector (Sector) (%)
- Old Major Sector
- Old Sector
- Environmental Category
- Bank Team Lead
- Borrower
- Implementing Agency
- Project Goals
- Available Project Documents
- Related Country Information
Poncho
How to make a poncho
- project title
- summary
- Material (requirements)
- Gauge (notes)
- directions (instructions)
RX-8 iPod Install
How to install an iPod into an RX-8
- title
- author
- date
- Car Compatibility List (summary)
- Basic Idea (instructions)
- Tools Needed (requirements)
- notes
- WARNING
How to fix a CD player
- title
- by (author)
- date and time submitted
- tags
- description
- summary
- instructions
Analysis of Examples
Common project fields
- project (name/title|URL(s)|image)
- author (name|email|URL)
- summary
existing formats
Please document in project-formats.
- A vocabulary for describing projects (primarily goal-oriented)
- DOAP: Description of a Project (software project specific)
- hDOAP - previous microformat-like effort
- Program Evaluation and Review Technique
Related microformats
- hCalendar for timelines, milestones, and to-do items
- Resources
- hReview for debriefing
brainstorming
Schema
The projecta schema consists of the following:
- projecta (
projecta
)- version. optional. text.
- summary. optional. text. one sentence.
- type. optional. abstract | practical.
- project info. required.
fn
(url
||photo
) - author. optional. hCard.
- description. optional. text with optional valid HTML markup.
- goals. optional. text with valid HTML
ul
(li
) elements. - instructions. optional. text with valid HTML
ol
(li
) elements. - accomplishments. optional. text with valid HTML
ul
(li
) elements. - requirements. optional. text MAY include valid HTML markup e.g. paragraphs or a list.
- tags. optional. keywords or phrases, using rel-tag, each with optional rating.
- permalink. optional, using rel-bookmark and rel-self.
Field details
The fields of the projecta schema represent the following:
version:: This optional field permits projecta publishers to specify a particular version of projecta that their content uses. This field is syntax compatible with, and thus reuses the semantics of "VERSION" as defined in vCard RFC2426 section "3.6.9 VERSION Type Definition". The value of this field for this specification is "0.1".
summary:: This optional field serves as a one sentence summary of the project.
type:: This optional field "type" provides the type of project, one of the following: abstract, practical. If omitted, then in some cases the project type may be inferred. For projects of type "abstract" SHOULD have "goals" and/or "accomplishments" fields completed. For projects of type "practical" SHOULD have "instructions" field completed.
project:: This required field MUST have at a minimum the name ("fn" - the formatted text corresponding to the name) of the project (a projecta describes only one project), MAY provide at least one URI ("url") for the project, and MAY provide at least one URL to a photo or depiction ("photo") of the project. However, when using item info subproperties ("fn", "url", "photo"), they MUST be nested inside the project element.
author:: This optional field specifies the person who authored the project. If the author is specified, an hCard representing the author MUST be provided.
description:: This optional field contains the full text representing the input of the author. The field MAY include valid HTML markup (e.g. paragraphs). User agents SHOULD preserve any markup.
goals:: This optional field documents the project's goals.
instructions:: This optional field documents the instructions required to complete the project. Re-used from hRecipe.
accomplishments:: This optional field documents the project's accomplishments.
requirements:: This optional field contains the requirements of the project. The field MAY include links to products or other projects.
tags:: Tags are represented using a list of keywords or phrases (using the rel-tag microformat for each individual keyword or phrase tag) that the author associates with the project.
permalink:: This optional field is a URL for the projecta. In addition to using the <a href>
tag for this field, the attribute rel="self bookmark"
MUST be used to indicate that the hyperlink is a permalink for the project itself. If the hyperlink already contains a rel
attribute, then the values self
and bookmark
MUST be included among the space-separated set of values in the attribute. Indexers MAY treat the permalink of a project as a unique ID in order to identify and collate the same project from multiple sources (such as indexing a page multiple times). The permalink MAY also be used to indicate or imply the origin of the project. Authors MAY use the classname of "permalink" on the element representing the permalink.
markup sample
Note: this markup sample is not based on any project-examples implied schema, and therefore is an a priori brainstorm that is not suitable for a microformat.
<div class="project" id="urn:uuid:233f6e5d-2ad2-4b7e-a3fe-1b90ef2fef57"> <img class="logo" src="..." /> <span class="name">Microformats</span> <span class="desc">An initiative to extract common patterns from POSH</span> <h1>Some informations</h1> <a href="http://microformats.org/" rel="home">The primary home page of the project.</a> <a href="..." rel="source">Here you can find its source code.</a> <a href="..." rel="release">Get the releases.</a> <-- Every hCard is looked as a participant [including venues? ] --> <h1>Project's tags</h1> <ul> <li class="tag">open</li> <li class="tag">format</li> <li class="tag">standard</li> </ul> </div>
CSS selection specification
Note: this markup sample is not based on any project-examples implied schema, and therefore is an a priori brainstorm that is not suitable for a microformat.
A good way to describe the structure, is to look at it trough the view of CSS selectors. Designers sometimes need wrappers, which makes it hard to keep a strict structure. If you used jQuery, you know what I mean.
.project[@id] : is an UUID (see http://ietf.org/rfc/rfc4122.txt). A unique identifier for the project. It is used to resolve name clashes. .project .name : the content describes the project name. Should not appear more that one time per project. .project IMG.logo : the src is a link to the logo. Can have different sizes with by adding "low | mid | high" classes. .project A[@rel=home] : a project's home page .project A[@rel=source] : a link to the project's source. If it is a scm, it is generally solved by using different uris. Like git:// or bzr:// or http+git:// .project A[@rel=release] : the linked pages contains file releases. This page can contain hRelease microformat. .project A[@rel=...] : many extensions can be imagined, like : "blog | wiki | parent-project | ..." .project .tag : the content describes a project tag. You can have as many as you wish.
to-do
- project-examples
- project-formats
- Lots of discussion I guess, to satisfy different kinds of projects
- Semantic approval of experts
Notes
Please, keep the format simple. The current brainstorms above don't follow an existing standard (existing standards must first be documented in project-formats before proceeeding). It is preferable to re-use and develop minimal modules rather than being verbose. Are these bad or good for example: the uuid:.. or scm:// ones ?
Related ideas
- Release: semantic description of a project release. Possible usages : automatic tracking and/or conversion for package managers, automatic platform/mirror selection for download managers.