[GAP] Bootstrapping the Ada Academic Initiative

Marius Amado Alves amado.alves at netcabo.pt
Tue Sep 21 16:42:24 CEST 2004


I'm replying to Quinot and cc-ing the GAP, sorry if this is not the 
right procedure. Also, note this is extremely sketchy. It's just a kick 
off. Please discuss and improve.

I think the interface should start simple, and eventually evolve as need 
arise. And I'll discuss the data involved first, and then the interface 
proper.

What do we have? Documentation, teaching materials, software components, 
lab materials (?)... Each such item can take the form of a file or a set 
of files, or eventually a file tree. So the first issue is whether we 
have a flat or treelike structure for the whole. That is, if the item is 
a tree, should the tree structure be provided by the system. I say no, 
for now, make it simple, simple = flat, and if the item is a tree, let 
the author package it into a (zip, arch) file.

Now the attributes of each item. I suggest:

Filename
   the name of the file; entered automatically upon upload
Format
   the usual domain: zip, txt, doc...
Contributor_Id
   equating the GAP user identity, so also automatic
Date
   date and time of the upload; also automatic
Keyterms
   zero or more keyterms from an open set; more below
Content
   the content of the file
Size
   size of content in bytes
Remark
   optional description or notes about the item
Title
   title of the item;
   automatically pre-entered as equal to the Filename
History
   a list of previous uploads;
   maybe a list of downloads also, nice for evaluating usability;
   more below

* MOST SIMPLE INTERFACE *

The main page lists all items, alphabetically by Title.
Each listed Title links to the respective item page.
This main page also has an "Upload new item" button.

* LESS SIMPLE INTERFACE, WITH ITEM SEARCH *

Appropriate for many items say more than 50.

MAIN PAGE
The main page includes a short list of selected item links. Each item 
link leads to the respective item page. The selection of items for this 
list depends on the user mode. If the user is a contributing author the 
list should include his items (ordered by freshness?), as it is probable 
that he wants to update one of them. If the user is not a contributing 
author the items can be selected based on popularity (number of 
downloads), freshness (upload date), or something else. If the user has 
permission a button "Upload new item" also appears here in the main page.

SEARCH GADGET
Page element. Appears in all pages. The usual: a small text field and 
"Search" button for a simple query right away, plus an "Advance search" 
link.

ADVANCED SEARCH
Selective search by at least Title, Keyterms, and whatever keys are used 
in the selection in the main page.

ITEM PAGE
Each item page displays all attributes of the item and a means to 
download it. If the user has permission Update and Delete button also show.

UPLOAD/UPDATE
When a user clicks an Upload or Update button, the usual file selection 
device executes (on the user side). Then a form with input fields for 
Keyterms, Remarks, Title shows, with values pre-entered as expected. If 
the file already exists the History will be incremented with that 
preexisting version. The user checks the fields and clicks Submit. The 
repository gets updated with the new entry. The system stays on the item 
page (?).

KEYTERM INPUT
The keyterm input gadget should allow the user to chose zero or more 
preexisting keyterms or input new ones. The pre-existing keyterms are 
simply the set of keyterms in use. That is, this list grows with every 
new term. Default order alphabetic. No metacategories at this state.

DOWNLOAD
Page element. The usual. Maybe put download shortcuts in the item lists.

NO SCROLL PLEASE
All pages should fit in the screen. Long item lists should be paged, 
with the usual commands (Start, Previous, Next, Last).

* OTHER SUGGESTIONS AND OBSERVATIONS *

Use Mneson, the 100% Ada database system, for this application. 
http://www.liacc.up.pt/~maa. I'll gladly consult for free for this 
application.

Some items may have special licensing terms. For example some might be 
open source, others, like Mneson, strictly not. Any particular implications?

Above in the specification I say "item". But a better name would be 
perhaps "package". And maybe the GNAT packages provided by ACT should be 
integrated with this repository. That would simplify the whole site.



More information about the GAP mailing list