-
Notifications
You must be signed in to change notification settings - Fork 2
Before development
Before Development
The first step is to understand basics on universAAL. To achieve this aim it should be consulted the Reference Documentationhttp://forge.universaal.org/wiki/support:Developer_Handbook_0 where a summary of the universAAL platform is provided along Chapter 1 - Platform Architecture Overview http://forge.universaal.org/wiki/support:Developer_Handbook_1. Also, Chapter 2 - Development Environment Setup http://forge.universaal.org/wiki/support:Developer_Handbook_2 explains how to install the development environment (JDKhttp://forge.universaal.org/wiki/support:Developer_Handbook_2#Installing_Java, Mavenhttp://forge.universaal.org/wiki/support:Developer_Handbook_2#Installing_Maven, MySQLhttp://forge.universaal.org/wiki/support:Developer_Handbook_2#Installing_MySQL_.28optional.29 and Eclipsehttp://forge.universaal.org/wiki/support:Developer_Handbook_2#Installing_Eclipse with the needed plugins: AAL Studio) together with the SVN clienthttp://forge.universaal.org/wiki/support:Developer_Handbook_2#Installing_a_Subversion-client and configure the settingshttp://forge.universaal.org/wiki/support:Developer_Handbook_2#Configuring_your_Maven_settings. Next step is getting the universAAL source codehttp://forge.universaal.org/wiki/support:Developer_Handbook_2#Getting_the_universAAL_sources. Some interesting SVN links from where it is available are:
- Ontologies: http://forge.universaal.org/svn/ontologies
- Middleware: http://forge.universaal.org/svn/middleware
- User Interface Framework: http://forge.universaal.org/svn/uaal_ui
- Security: http://forge.universaal.org/svn/uaalsecurity
- Context: http://forge.universaal.org/svn/uaal_context
- New uAAL Services: http://forge.universaal.org/svn/new_services
Gforge http://forge.universaal.org/wiki/support:Developer_Handbook_2#Getting_the_universAAL_sources is a tool used for project management. It is organized in projects, where each one has mainly an associated Issue tracker, Wiki and SVN.
Projects in universAAL are managed within GForge projects. Currently exists two GForge projects for WP4:
- Original AAL Services: This contains service code from previous projects (AMIGO, GENESYS, MPOWER, OASIS, PERSONA, SOPRANO)
- universAAL AAL Services: This will contain code of the new uAAL services.
Issue tracker is intended to:
- Manage detected bugs.
- Give/receive support: Problems to run the code, etc.
- Feature request: Suggest new functionalities that are not there.
This tool will be used to make available information about development and services within WP4 http://forge.universaal.org/wiki/Home.
SVN http://subversion.apache.org/ is a software versioning and a revision control system aimed at developers to maintain current and historical versions of files such as source code, web pages and documentation. In WP4, conventions for the SVN structure are the following:
- Trunk/service_name/bundle: Current version of the code
- Branch/service_name/bundle: Pararel development to the current version of the code, which include some modifications
- Tag/service_name/bundle: Closed versions of the code
In order to develop new services, universAAL provides a wide number of tools that will make your developments easier. All these tools will be included in the AAL Studio. More information about how to install AAL Studio and how to install and start using the tools can be found here http://forge.universaal.org/mediawiki/index.php?title=uaaltools:AAL_Studio_overview_and_installation.
Since there is a clear problem while synchronizing WP4 ontologies with WP2 ontologies, we need to change the approach for WP4 ontologies, and make it more WP2 compliant.
- All WP4 ontologies are to be located inside the SAME folder in the SVN.
- All WP4 ontologies are to have a common parent project.
- The WP4-ontologies subrepository is to be managed by WP4 developers, therefore the parent pom must be kept up to date.
Ontologies are to be moved (branched and then deleted from their original location) to the following folder
http://forge.universaal.org/svn/new_services/trunk/ontologies/
Therefore the structure will look like:
/trunk /service1 /service1.pom /service1.module1 /service1.module2 /service2 /service2.pom /service2.module1 … /ontologies /ont.pom /ont.service1 /ont.service2
This means that after the ontologies are moved the service.pom file no longer have to contain the ontologies as modules, and therefore should be removed.
The WP4 Parent for all WP4 ontologies is located at http://forge.universaal.org/svn/new_services/trunk/ontologies/ont.pom
This project is itself a child of the WP2 official ontologies root project.
The project has the following identificator:
<groupId>org.universAAL.ontology.services</groupid> <artifactId>ont.pom</artifactid>
Therefore all WP4 ontologies must change their parent to point to this project (just adding “.services” to groupId).
To maintain the artifact's maven coordinates (groupID, ArtifactID, version) add a groupID tag:
<groupId>org.universAAL.ontology</groupid>
This will enable WP4 to be deployed in WP4’s private nexus repository.
Inside this parent project there will be a script that will ease the maintenance of the pom itself, it is the update.bat. This script is to be executed when:
- An ontology is added to the subrepository.
- An ontology version is changed in the subrepository.
- An ontology is removed from the subrepository.
The parent WP4 ontology project will also be imported in the root pom file for WP4 which means now all versions can be removed from each service.pom file, since the version of the ontologies will be resolved through parent inheritance and import.
- Branch all ontologies form http://forge.universaal.org/svn/new_services/trunk/myService/ont.myOntology to http://forge.universaal.org/svn/new_services/trunk/ontologies/ont.myOntology
- Delete form their original SVN location all branched ontologies.
- Remove any module that points to the removed ontologies in the service.pom.
- Remove any version in the dependencies from any module (or service.pom’s dependency management section) that depends on the ontologies.
- Update the svn repo to receive the newly branched ontologies
- Update the pom files of the ontologies to inherit from the WP4 ontologies parent pom (i.e. add “.services” to the groupId of the parent).
- Add a groupID tag for common ontologies (ie: <groupid>org.universAAL.ontology</groupid>)
- After all these changes an install must work, try installing new_services.pom
- If 8 went ok then commit all the changes.
When WP4 ontologies are sufficiently mature and stable, they can be moved to the WP2 ontologies repo (the official ontology repo). The steps to perform this transfer (according to the new WP4 strategy) are:
- SVN export the ontology, without including unversioned files, to wherever you got the official ontologies trunk.
- SVN add the new folder to the version control of ontologies official repository. (try if you can to SVN ignore “.settings”, “.classpath”, “.project”, and “target” files).
- Remove the “.services” form the parent groupID of your ontology (and the groupID tag, it should be marked as repeated).
- Update official ont.pom (the same script is already there)
This strategy stems from the need of having more communication since WP4 works as client of WP2, being a synergy between both work packages in the sense of WP4 asks for new features and WP2 knows what should be priorized.
Figure 2. Strategy between WP2 and WP4
- A new release coming from WP2 means a new:
- POM file: uAAL.pom
- Updated examples
- Short list of changes for each release of the runtime platform
- Instructions of how to transfer from one release version to another
RELEASE | Runtime Platform Support | DATE |
---|---|---|
E.0 | 2.0.0 | 21.06.2013 |
D.0 | 1.3.0 | 14.12.2012 |
C.1 | 1.2.1-SNAPSHOT | 15.09.2012 |
C.0 | 1.2.0 | 17.07.2012 |
B.1 | 1.1.1-SNAPSHOT | 29.05.2012 |
B.0 | 1.1.0 | 27.03.2012 |
LEGEND:
- RELEASE, it is the release name to be used in WP4. When a new artifact version is introduced in the current release, it is created a new release version in order to identify changes. It increases the version number (starts in 0), keeping the vowel until next official release.
- Runtime Platform Support define the version of the artifacts included in the corresponding release version.
- DATE is when the release was released.
- Table is descending order by DATE, so first row is the active release.
- universAAL News
- Responsible person from WP2 (ALEJANDRO MEDRANO) will contact the prototype manager and T4.2 leader
- The prototype manager and T4.2 leader notifies officially the a new release is available from WP2 to WP4 partners by means of:
- WP4 scrum
- new_services wiki
- By email to WP4 partners
- POM file: uAAL.pom http://forge.universaal.org/svn/support/uAAL.pom
- Updated Lighting example http://forge.universaal.org/svn/support/trunk/samples/lighting
- The release history is currently created, they will be available in http://forge.universaal.org/mediawiki/index.php?title=support:RD_Release_History.
- Transfer instructions from one release version to another http://forge.universaal.org/wiki/support:Transfer
- All WP4 AAL services must use the same universAAL platform release.
- Following figure shows different existing POMs in universAAL and inheritance between them:
Figure 3. Hierarchy of POM files in universAAL
Figure 4. File structure
-
uAAL.pom
- It provides information about licenses, specific repositories, plugins, etc.
- It is provided by WP2
- Responsible: Alejandro Medrano ([email protected])
-
newServices.pom
- It is referenced by each AAL service and defines common info for all AAL applications such as middleware, ontologies, etc.
- It is provided by WP4
- Responsible: Alejandro Medrano ([email protected])
-
myService.pom
- Exists one per AAL service where are described artifacts of the service, dependencies with third-party software (weka, drools,…), external repositories and dependencies to other services. i.e. Nutritional Advisor needs to send SMS, then it uses Personal safety SMS artifact. Here is defined the dependency between Nutritional Advisor and Personal Safety service.
- It is provided by each service developer
- Responsible: Each service developer
-
myModule.pom
- It describes the artifact and dependencies between artifacts of the service or artifacts from other services. In this last case, in the myService pom should be defined (import) the dependency to the owner (service) of the artifact that it wants to use. Here will not be specified version because it is managed in the superior level. i.e. MenuManager artifact from Nutritional Advisor service uses SMS module from Personal Safety service. Then, in myModuleMenuManager pom is specified that MenuManager artifact wants to use SMS artifact from Personal Safety service, and in myServiceNutritionalAdvisor pom is detailed that Nutritional Advisor wants to use an artifact from Personal Safety service.
- It is provided by each service developer
- Responsible: Each service developer
Figure 5. Sample of relationship between poms in universAAL
- SVN root: http://forge.universaal.org/svn/new_services/
- Next figure shows how it is structured a WP4 AAL Service project in the SVN, what poms and where they must be located:
Figure 6: File structure
- Concretely, myService.pom must be located at:
- And myModule.pom must be at:
The following figures show relationships between POMs and what parts must be modified: LEGEND
- Blue arrow points at relevant info.
- Red arrow point at info that must be fulfilled/modified by WP4 AAL Service developer/leader.
- Circles indicate what version must be selected in parent POM to its child POM.
By defining the following in new_services.pom, the scm section will be inherited by all POMs and when the variables are resolved, then the scm is correct.
<scm> <connection>${svn.base}/${service.name.svn}/${project.artifactId}</connection> <developerConnection>${svn.base}/${service.name.svn}/${project.artifactId}</developerconnection> </scm>
myService.myArtifactX must define service.name.svn property that must be equal to svnServiceName. i.e: As the service folder is named in the SVN.
<properties> <service.name.svn>nutritional</service.name.svn>> </properties>
When developers need to know what release number must be used in their service implementation or what artifact versions are inside the current release, they must consult this table:
WP2-WP4 RELEASES
WP2 - Date | WP2 - Month | WP2 - Version | WP2 - Name | WP4 - Date | WP4 - Milestone |
---|---|---|---|---|---|
14.12.2012 | M31 | 1.3.0 | D.0 | 21.12.2012 | - |
after 17.07.2012 | M32 | 1.2.1-SNAPSHOT | C.1 | 2.11.2012 | - |
17.07.2012 | M30 | 1.2.0 | C.0 | 21.09.2012 | R1.2 |
- | M29 | 1.1.1-SNAPSHOT | B.1 | - | - |
27.03.2012 | M26 | 1.1.0 | B.0 | 05.06.2012 | R1.1 |
- When it is detected a bug related to the Execution Platform, it must be reported in the Issue Tracker of the corresponding WP2 gForge project:
- universAAL Middleware: http://forge.universaal.org/gf/project/middleware/
- universAAL UI (UI bus): http://forge.universaal.org/gf/project/uaal_ui/
- universAAL Context (Context bus): http://forge.universaal.org/gf/project/uaal_context/
- universAAL Service (Service bus): http://forge.universaal.org/gf/project/service/
- universAAL Lddi (Local Device Discovery and Integration): http://forge.universaal.org/gf/project/lddi/
- universAAL Security (Security): http://forge.universaal.org/gf/project/uaalsecurity/
- universAAL Rinterop (Remote Interoperability): http://forge.universaal.org/gf/project/rinterop/
- But if you are not sure where to report bugs, send an email to the WP2 leader [email protected]
When you experience an error in one of the WP4 AAL Service you can report it in the corresponding tracker at:
- AALfficiency: http://forge.universaal.org/gf/project/new_services/tracker/?action=TrackerItemBrowse&tracker_id=224
- Agenda and Reminders: http://forge.universaal.org/gf/project/new_services/tracker/?action=TrackerItemBrowse&tracker_id=226
- Food and Shopping: http://forge.universaal.org/gf/project/new_services/tracker/?action=TrackerItemBrowse&tracker_id=227
- Health Manager: http://forge.universaal.org/gf/project/new_services/tracker/?action=TrackerItemBrowse&tracker_id=228
- Help When Outdoor: http://forge.universaal.org/gf/project/new_services/tracker/?action=TrackerItemBrowse&tracker_id=229
- Long Term Behaviour Analyzer: http://forge.universaal.org/gf/project/new_services/tracker/?action=TrackerItemBrowse&tracker_id=230
- Medication Manager: http://forge.universaal.org/gf/project/new_services/tracker/?action=TrackerItemBrowse&tracker_id=231
- Nutritional Advisor: http://forge.universaal.org/gf/project/new_services/tracker/?action=TrackerItemBrowse&tracker_id=232
- Personal Safety: http://forge.universaal.org/gf/project/new_services/tracker/?action=TrackerItemBrowse&tracker_id=233
- Security and Safety at home: http://forge.universaal.org/gf/project/new_services/tracker/?action=TrackerItemBrowse&tracker_id=234