UOMo

The project has been created. Please visit the project page.

UOMo

The UOMo project is a proposed open source project under the Eclipse Technology Project.

This proposal is in the Project Proposal Phase (as defined in the Eclipse Development Process) and is written to declare its intent and scope. We solicit additional participation and input from the Eclipse community. Please send all feedback to the UOMo Forum.

Background

Developers frequently encounter the need to model units of measurement, because objects in the real world are subject to these measures. When working with units, developers need to understand the mathematics of units, how to convert between systems, and how to format and parse string representations of units. Most of this work can be consolidated into one or two Java packages, which is a primary aim of this project. This package will help developers create safe, correct software to deal with common problem of modeling units.

Scope

The scope of the UOMo project is to host a variety of implementation activities related to UCUM or other unit-related standards like UnitsML or MathML:

  • Unit Standards
  • Implementing Units of Measurement API
    • Strong Unit Typing (Compile time support)
    • Financial API based on general Units of Measurement implementation

The focus of the project is on Java implementations, but other languages both on the JVM or outside will be supported as appropriate, desired and/or contributed.

Description

The goal of Project UOMo is to combine what OHF UCUM archieved plus generic Units of Measure support in the spirit of OSGi Measurement, JSR-256 or UCAR/JSR-108 adding Static Type Safety like "Smart" Data or JScience/JSR-275.

UOMo stands for UnitsOfMeasure.org, home to UCUM or UnitsOfMeasurement.org, hosting the Units of Measurement API. Uomo also means "man" or "human" in Italian. And given that NASA and other Space Agencies rely on Type Safe Units of Measure APIs after serious and costly incidents in lack of those, his (Italian) words are probably the best argument:

"Questo è un piccolo passo per l'uomo ... uno ... balzo gigantesco per l'umanità"
(Neil Armstrong, July 21st, 1969)

Relationship with other Projects

  • Equinox: From the infrastructure point of view parts of UOMo consist of OSGi Bundles and so may be used within the Equinox system. Within OSGi parts of the OUMo project attention will be paid to ensure complete compatibility with Equinox at all times.
  • ICU4J: Although not an Eclipse project by itself, the standard library for Unicode, software globalization and i18n. All Static Type Safe Unit implementations are based on ICU4J. So will be all globalization and i18n within the project.
    • Apache Harmony also uses ICU4J as the basis for Java standard types like implementations of java.util.Date or Currency. This means, it is compatible with equivalent UOMo types. Allowing conversion and calculations between those. Harmony in all shapes and sizes (from Embedded to Enterprise Server) has ICU4J built-in already.
    • Other users of ICU4J, like Google App Engine, GWT or Google Finance for Java may equally profit from such compatibilities.
  • Units of Measurement API: A lean, Static Type Safe Java Unit-API (unitsofmeasurement.org) is used as the only non Eclipse.org dependency beside ICU4J. It provides full compatibility across different Java implementations e.g. with JScience or GeoAPI.
  • Eclipse Modeling: The Type Safe Units of Measure support may be used by selected EMF projects for modeling among other fields of use for measurements. Some modeling projects like AMP have already expressed their interest.
  • Test and Performance Tools Platform: Project Parfait, a performance monitoring library for Java demonstrates impressingly how JSR-275, important ancestor to Unit-API can be used for performance monitoring, analysis and reports. Using those features in Unit-API through UOMo can give TPTP similar power. And would allow its exchange of performance results with Parfait or compatible performance monitoring tools.
  • Mylyn: Interested in ways to improve time estimation and arithmetics or conversion to other time units (e.g. Story points), considering the notion of a task to be tightly coupled to time and date units, as in Mylyn ITask API.
  • Xtext: Groovy or Fantom have demonstrated real live use cases for DSLs, in the Healthcare/Pharma or any other business where exact measurment is crucial. Using libraries which influenced this projects or lead to its Static Type Safe Java API, it may be used together with building blocks for DSLs like Xtext for any equivalent purpose.
  • STEM/OHT: Healthcare projects both inside Eclipse Foundation and those affiliated on the outside rely on UCUM even more. HL7 or DICOM are just 2 of the most popular healthcare standards relying on UCUM as a Measurement meta-standard.
    • DICOM projects like mint (Medical Image Network Transport) at EclipseLabs also can profit from UCUM implementation support.
  • GEF/RAP/UI/E4: Units of Measure may be used e.g. for Layout Managers, demonstrated by MigLayout for SWT.
  • WTP: XML support, especially Vex shall be extended to support unit-related markup languages like UnitsML or MathML. Also UCUM support for Enterprise applications and services.
  • OFMP: Although little has moved in this sector for those areas ready to use Eclipse technologies this project can lay foundations for Financial applications like Currency Exchange. JScience or Google Financials (based on ICU4J) have demonstrated this. As it is based on both ICU4J and the same Java API, it's be compatible with both to some extent.
  • SMILA: Ontology Services like that used by SMILA heavily rely on context and type safe RDF data. For Units of Measure UCUM is the most widely accepted standard for such RDF markup.

Initial Contribution

The initial code contribution will consist of the following components:

Committers

The following individuals are proposed as initial committers to the project:

Werner Keil, emergn (project lead)
Werner is founding member and committer on the Babel project where he has made significant contributions over many years. Also helped Eclipse OHF over the years and following its move into a separate project, STEM. He will especially contribute to the Static Type Safe Units functionality using Unit-API and to Business/Financial bundles on top of it.
Grahame Grieve, Jiva Medical
Grahame has provided significant contributions to the existing code base. He will contribute to the UCUM functionality in this new project.
Daniel Leuck, Ikayzo
Daniel has provided significant contributions to the existing code base, especially leading Globalization and infrastructure like CI or SCM for initial contribution.
He will especially contribute to Globalization and i18n in this new project, through means of Eclipse Babel. Allowing him to share his experience with other projects using Babel where applicable.
John Paul Morrison, J.P. Morrison Enterprises, Ltd.
Paul is probably best known for inventing Flow-based programming (FBP). He worked at IBM since the 1960s on compilers, data bases, text processing, and applications in a number of different areas, especially in the field of banking. He will help this new project with his unique half century IT experience in Business and Domain- or Flow-driven development.
Scott Murphy, Ikayzo
Scott has provided significant contributions to the existing code base, especially Japanese Translation. He will continue supporting Globalization and i18n in this new project, through means of Eclipse Babel, allowing him to share translations also with other projects using Babel.
Mika Terada, Ikayzo
Mika has provided significant contributions to the existing code base, especially Japanese Translation. She will continue supporting Globalization and i18n in this new project, through means of Eclipse Babel, allowing her to share translations also with other projects using Babel.
Anatol Filin, Gramant
Anatol has provided significant contributions to the existing code base, especially Russian Translation. He will continue supporting Globalization and i18n in this new project, through means of Eclipse Babel, allowing him to share translations also with other projects using Babel.

Mentors

The following Architecture Council members will mentor this project:

  • Chris Aniszczyk
  • Gunnar Wagenknecht

Interested Parties

The following individuals, organisations, companies and projects have expressed interest in this project:

  • Peter Kriens, Eclipse Equinox/OSGi Alliance
  • Gunther Schadow, UCUM Organization
  • Christof Gessner, ISO TC 215
  • Martin Lorenz, Austrian Standards Institute
  • Arnold Leitner, Director of the Metrology Service (BEV)
  • Eishay Smith, kaChing
  • Martin Desruisseaux, GeoAPI
  • Karen Legrand, IEM
  • Jean-Marie Dautelle, Thales Group
  • Chris Senior, Snap-on Incorporated
  • Ben Hoskins, emergn
  • Paul Morrison, J.P. Morrison Enterprises, Ltd.
  • Denis Garneau, Individual
  • Dr. Davide Sottara, Italian National Agency for the Energy and the Environment (ENEA)
  • Mik Kersten, TaskTop/Mylyn
  • Miles Parker, Eclipse AMP
  • John Conlon, Verticon, Inc.
  • Tonny Madsen, The RCP Company
  • Brian Frank, Fantom Language
  • Paul Cowan, Parfait
  • Frederic Conrotte, Eclipse OFMP
  • Deepak Dasaratha Rao, Samsung Electronics Corporation

Project Scheduling

  • Q3/2010: First version based on existing framework (UCUM, Units)
  • Q4/2010: Rework of extension framework, extending support for other languages/platforms (UCUM), increased support for Business applications (Units)
  • Q2/2011: Adding to Indigo Release Train where appropriate
  • Q3/2011: Support and adjustments to Java 7, once available

Changes to this Document

Date Change
02-June-2010
Document created
23-June-2010
Updated for declaration
25-July-2010 Updated with further interested party and financial API
02-September-2010 Updated with further interested parties, projects and business/DSL aspects
12-September-2010 Updated with additional standards like UnitsML or MathML
28-September-2010 Updated with additional projects, interested parties and changes to Unit-API. Ready for CR