Table of Contents

<< back

Contents

First brainstorming ideas

Basics

Easy integration in existing systems

Source-Repositories consist of Packages / Releases / Versions / Files etc.

Each web-site has somewhere some code where the html is generated. This is the place where the following functions can be called:

Viewing a project (as it was + some tags)

What to tag

whole projects, packages, releases, single files

For these each software repository already has unique identifiers. So no special work has do be done here. Just pass the identifier to the functions.

collection of files

Could be done by adding the possibility to pass lists of above identifiers to the functions. We would then just associate the tag to each file in the list.

parts within a source-file

Could be done by passing line-number-ranges to files. But as files change, this would only work if we calculate hash-values of files and use those as identifiers.

A better solution might be to add tags into the code (e.g. for c):

//tagbegin:helloworld
void main() //tag:function:myfirstmain
{
   printf("Hello world!");
} // tagend:helloworld

provide freely definable tagging-classes

As already described in tagging source-code directly, this sheme could be taken over to all tags by just saying, that a tag may consist of a description-tag of what kind/part of information is tagged, and then the tag itself:

distinguish between tags from everybody to those from project-owners

This could be done by adding a tagger-group-id to each function-call. For example the following id's could be used:

Each Repository-Site probably knows this information and should be able to pass this to my functions.

Administration

Well, this will be a simple web-interface for the project-owners. Here tags and class-tags can be corrected, removed and reassigned.

Access-Restriction to this interface should be done however the site does it anyway :) (No user-management will be implemented here!)

Database

The Database-Structure could be as follows:

   whatistagged  < n --------- n >  tag  < n ---------- 1 >  tag-class
                        |
                        |
                    whoandwhen

I'm not yet sure if this is really neccessary here, maybe the following (even simpler) structure is better here:

   whatistagged  < 1 ----------- n > tags

Here the tags-table also contains the who, when and class attributes.

Attributes: (id is always the primary-key given from the db)

<< back