https://wiki.xmpp.org/web/index.php?title=JabberSoftwareMap_-_Sprint_paper_1&feed=atom&action=historyJabberSoftwareMap - Sprint paper 1 - Revision history2024-03-28T14:31:10ZRevision history for this page on the wikiMediaWiki 1.37.1https://wiki.xmpp.org/web/index.php?title=JabberSoftwareMap_-_Sprint_paper_1&diff=13363&oldid=prevNeustradamus at 00:58, 18 December 20202020-12-18T00:58:20Z<p></p>
<p><b>New page</b></p><div><br />
== Information architecture ==<br />
<br />
=== personal data ===<br />
* Full name<br />
* contact email<br />
* contact jid<br />
* photo<br />
* password<br />
* uid to login<br />
<br />
=== project informations ===<br />
* short name<br />
* description<br />
* author<br />
* homepage<br />
* Contact JID <br />
* download URL(s)<br />
* mailing-list URL(s)<br />
* web forum URL(s)<br />
* MUC/groupchat/IRC<br />
* categories, i.e. Server, Client, Languages, Field-of-Application (Workflow-Management, Communication, News related, Trading, etc.)<br />
* license, i.e. GPL, LGPL, list of OSI certified licenses<br />
* levels of compliance<br />
** xmpp<br />
** [https://xmpp.org/extensions/xep-0073.html XEP-0073: Basic IM Protocol Suite]<br />
** [https://xmpp.org/extensions/xep-0117.html XEP-0117: Intermediate IM Protocol Suite]<br />
** ?<br />
* programming language<br />
* platform(s) (e.g. linux/mac/windows)<br />
* subscribers<br />
<br />
=== release informations ===<br />
* Release number / title<br />
* description<br />
* direct download link<br />
* information url / release homepage (for special information sites on unique releases)<br />
<br />
== Rough architecture == <br />
<br />
Rough-to-the-jungle architecture diagram<br />
<br />
<br />
web browser <------> web server <------> application (php/cgi/servlet/application/t.b.d.) <br />
|<br />
= <------> J.O. database<br />
|<br />
xmpp client <------> j.o jab server <------> jabber bot<br />
<br />
== Use cases == <br />
<br />
* user logs in<br />
* user/anonymous user views project<br />
* user changes preferences<br />
* user adds project<br />
* user adds release<br />
* user subscribes to project notifications<br />
<br />
* pipeline manager views pipeline<br />
* pipeline manager denies release/project<br />
* pipeline manager accepts release/project<br />
<br />
* user logs out<br />
<br />
== Activities == <br />
All activities result from a corresponding use case. The following activities are not yet finalized. <br />
<br />
=== activity: user logs in ===<br />
* user sends login credentials<br />
* backend checks credentials, in case of ok, continue, else bail out. <br />
* backend shows user's personal page<br />
** if user has projects, show button 'my projects' in infobox<br />
** includes 'add project' in infobox<br />
** if user is pipeline manager, show button 'my pipeline' in infobox<br />
** if user has subscribed to projects, show section ''subscribed projects''<br />
<br />
=== activity: user/anomyous user views project ===<br />
* user/anonymous user selects project<br />
* backend loads project description from live database<br />
* backend formats project description<br />
* backend shows project description<br />
** if user is maintainer of project, show special functionality 'add release' button and 'update informations' button <br />
<br />
=== activity: user adds project ===<br />
* user wants to create a new project, web project creation page is displayed. <br />
* user fills in informations<br />
* server checks data and in case of error displays project creation page with error message, else continue<br />
** server needs to check if the shortname is unique<br />
* server stores informations in the temporary database and marks them as to be acknowledged<br />
* server informs user about current status<br />
* server sends notification to pipeline managers<br />
* pipeline managers log in <br />
* pipeline managers accept or reject project (see corresponding activity)<br />
<br />
=== activity: user adds release ===<br />
<br />
* user wants to add new release<br />
* user must be within a project overview<br />
* if user is maintainer of project, show possible 'add release' button<br />
* user selects add new release<br />
* backend shows new release overview page<br />
* user fills in informations <br />
* user sends form <br />
* backend checks informations<br />
** check for completeness<br />
** check if there is no other release in the pipeline<br />
* in case of errors, backend informs user, else continue<br />
* backend adds release to temporary database with flag 'to be acknowledged' ( means, pipeline_status = 0)<br />
* backend informs release managers<br />
* backend shows informations on the process to user<br />
<br />
=== activity: user subscribes to project notifications ===<br />
<br />
* user wants to subscribe to project notifications<br />
* user must be within a project overview and must not be subscribed already<br />
* user clicks ''subscribe''<br />
* server adds user to subscribers for this project<br />
* server shows subscription ok<br />
<br />
=== activity: pipeline manager views pipeline ===<br />
* pipeline manager wants to view all release projects<br />
* backend generates list with all to-be-released-projects based on flag in temporary database<br />
* + backend generates list with all to-be-released releases based on flag in temporary database<br />
* backend generates complete list on one oage.<br />
<br />
Note: to be acknowledged projects or releases have flag pipeline_status set to 0.<br />
<br />
=== activity: pipeline manager denies release/project ===<br />
<br />
* pipeline manager views release or project informations<br />
* pipeline manager clicks 'deny' <br />
* in case of project, backend checks if the project exists in the final database already, if so, it restores the informations from the final database into the temporary database<br />
* in case of release, backend checks if the release exists in the final database already, if so, it restores the informations from the final database into the temporary database<br />
* backend sets comment in database<br />
* backend informs maintaining user about denial<br />
* backend shows pipeline overview<br />
<br />
=== activity: pipeline manager accepts release/project ===<br />
<br />
* pipeline manager views release informations<br />
* pipeline manager accepts release<br />
* backend stores pipeline manager id in the database for that release<br />
* backend marks release in database as accepted<br />
* backend generates release informations <br />
* backend shows pipeline overview.<br />
<br />
=== activity: user logs out ===<br />
<br />
* backend kills session<br />
* shows log out teaser ;-) [just a joke]<br />
<br />
== Technicals ==<br />
<br />
* There exist two duplicate databases, one for temporary / to-be-ack working and one for live working<br />
<br />
=== Notifications ===<br />
<br />
The hierarchical project tree allows subscriptions on various levels.<br />
<br />
Example of an project tree:<br />
<br />
/projects<br />
/java<br />
/projectA<br />
/projectB<br />
/projectC<br />
/projects<br />
/client<br />
/projectA<br />
/server<br />
/projectB<br />
/projectC<br />
<br />
If at one level of this hierarchy an event is generated, all subscribers of higher tree nodes are automatically informed, too (see [[PubSub]]).<br />
In this simple example a user may subscribe to any node in this hierarchy. If the user subscribes to /java, he is automatically informed whenever there was activity beneath java. If a user subscribes to projectA, he is only informed about activity for projectA. Of course there can be redundant subscriptions, for example a subscription for /java and /client. The notification system must be smart enough to filter out these redundancys.<br />
<br />
=== Finalization ===<br />
<br />
* When a project is finalizes or released, the system moves the entire dataset from the temporary database into the live database. <br />
* When a project has to be restored from the current live system, i.e. due to denial of a task, the entire project's dataset is moved from the live system into the temporary database.<br />
<br />
== Database design ==<br />
As said, two similar databases exist: <br />
* Database SOFTWARE_MAP_LIVE<br />
* Database SOFTWARE_MAP_INTERMEDIATE<br />
<br />
=== Conceptual Diagram ===<br />
This conceptual data diagram is not yet final. It is work in progress.<br />
<br />
[[Image:Jab_conceptual_database_design.png]]<br />
<br />
=== Physical data structure ===<br />
This physical data structure is not yet final. It is work in progress. <br />
<br />
[[Image:Jab_physical_data_model.png]]<br />
<br />
=== Latest Database Diagram ===<br />
[[Image:Entity_Relationship_Diagram1.jpg]]<br />
<br />
== References ==<br />
The charts are created with ArgoUML and devaki-nextObjects.<br />
<br />
== Further ideas and informations ==<br />
* Need to add a 'link to us' button<br />
* Season skinning<br />
* Project rating<br />
** Light bulbs as indicators<br />
* Project comments<br />
* Top viewed projects<br />
* Top rated projects<br />
* Project of the month<br />
* Project of the year<br />
* "Vote your favorite" Cup Contest<br />
<br />
== Current test release ==<br />
http://dyndna.dynalias.org:8000/jabber/staudinger/jabber</div>Neustradamus