blob: 0105e113fdcf6df979e85b38bc16c8a37d601476 [file] [log] [blame]
<!--
This document is provided as a template along with some guidance for creating
your project proposal. This is just a template. Feel free to change it as
you see fit (add sections, remove section). We feel, however, that the
suggestions represented in this document represent the reasonable minimum
amount of information to move forward.
Please keep the formatting in this document simple. Please do not edit
this document in Microsoft Word as it adds huge piles of markup that make
it difficult to restyle.
More information is available here:
http://wiki.eclipse.org/Development_Resources/HOWTO/Pre-Proposal_Phase
Direct any questions about this template to emo@eclipse.org
-->
<html>
<head>
<title>UOMo</title>
</head>
<style>
dt {
display: list-item;
list-style-position:outside;
list-style-image:url(/eclipse.org-common/themes/Phoenix/images/arrow.gif);
margin-left:16px;
}
.style1 {color: #000000}
</style>
<body>
<p>The UOMo project is a proposed open source project under the <a href="http://www.eclipse.org/technology/">Eclipse Technology Project</a>.</p>
<p>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 <a href="http://www.eclipse.org/forums/eclipse.uomo">UOMo</a>
Forum.</p>
<h2>Background</h2>
<p> <span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span class="Apple-style-span" style="line-height: 16px;">Developers frequently encounter the need to model units<span class="Apple-converted-space">&nbsp;</span><span class="searchword">of</span><span class="Apple-converted-space">&nbsp;</span>measurement, because objects in the real world are subject to these measures. When working with units, developers need to understand the mathematics<span class="Apple-converted-space">&nbsp;</span><span class="searchword">of</span><span class="Apple-converted-space">&nbsp;</span>units, how to convert between systems, and how to format and parse string representations<span class="Apple-converted-space">&nbsp;</span><span class="searchword">of</span><span class="Apple-converted-space">&nbsp;</span>units. Most<span class="Apple-converted-space">&nbsp;</span><span class="searchword">of</span><span class="Apple-converted-space">&nbsp;</span>this work can be consolidated into one or two Java packages, which is a primary aim<span class="Apple-converted-space">&nbsp;</span><span class="searchword">of</span><span class="Apple-converted-space">&nbsp;</span>this project. This package will help developers create safe, correct s<span class="searchword">of</span>tware to deal with common problem<span class="Apple-converted-space">&nbsp;</span><span class="searchword">of</span><span class="Apple-converted-space">&nbsp;</span>modeling units.</span></span></p>
<h2>Scope</h2>
<p> 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:</p>
<ul>
<li>Unit Standards</li>
<ul>
<li>Basic implementation of <a href="http://www.unitsofmeasure.org">UCUM</a> Logic for use in any context</li>
<li>Help to incorporate units into <a href="http://www.w3.org">W3C</a> standard <a href="http://www.w3.org/TR/mathml-units/">MathML</a></li>
<li>Support <a href="http://www.oasis-open.org">OASIS</a> standard <a href="http://unitsml.nist.gov/">Units Markup Language (UnitsML)</a></li>
</ul>
<li>Implementing Units of Measurement API</li>
<ul>
<li>Strong Unit Typing (Compile time support)</li>
<li>Financial API based on general Units of Measurement implementation </li>
</ul>
</ul>
<blockquote>
<p>The focus of the project is on <strong>Java</strong> implementations, but other languages both on the JVM or outside will be supported as appropriate, desired and/or contributed.</p>
</blockquote>
<h2>Description</h2>
<blockquote>
<p>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 &quot;Smart&quot; Data or JScience/JSR-275.</p>
<p>UOMo stands for UnitsOfMeasure.org, home to UCUM or UnitsOfMeasurement.org, hosting the Units of Measurement API. Uomo also means &quot;man&quot; or &quot;human&quot; 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:</p>
<p><em><strong>"Questo &egrave; un piccolo passo per l'uomo ... uno ... balzo gigantesco per l'umanit&agrave;" </strong><br>
(Neil Armstrong, July 21st, 1969) </em></p>
</blockquote>
<h2>Relationship with other Projects</h2>
<ul>
<li><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span class="Apple-style-span" style=""><b>Equinox</b>: 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.</span></span></li>
<li><strong>ICU4J</strong>: 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.
<ul>
<li> <strong>Apache Harmony</strong> also uses ICU4J as the basis for Java standard types like implementations of <code>java.util.Date</code> or <code>Currency</code>. 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. </li>
<li>Other users of ICU4J, like Google App Engine, GWT or Google Finance for Java may equally profit from such compatibilities. </li>
</ul>
</li>
<li><strong>Units of Measurement API</strong>: 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. </li>
<li><strong>Eclipse Modeling</strong>: 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 <strong>AMP</strong> have already expressed their interest.</li>
<li><strong>Test and Performance Tools Platform</strong>: <a href="http://code.google.com/p/parfait/">Project Parfait</a>, 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.</li>
<li><strong>Mylyn</strong>: 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.</li>
<li><strong>Xtext</strong>: 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.</li>
<li><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span class="Apple-style-span" style=""><b>STEM/OHT</b>: 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.</span></span>
<ul>
<li>DICOM projects like mint (Medical Image Network Transport) at <strong>EclipseLabs</strong> also can profit from UCUM implementation support.</li>
</ul>
</li>
<li><strong>GEF/RAP/UI/E4</strong>: Units of Measure may be used e.g. for Layout Managers, demonstrated by MigLayout for SWT. </li>
<li><strong>WTP</strong>: XML support, especially <strong>Vex</strong> shall be extended to support unit-related markup languages like UnitsML or MathML. Also UCUM support for Enterprise applications and services.</li>
<li><strong>OFMP: </strong>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 <strong>both</strong> to some extent. </li>
<li><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span class="Apple-style-span" style=""><b>SMILA</b>: 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.</span></span>
</li>
</ul>
<h2>Initial Contribution</h2>
<p>The initial code contribution will consist of the following components:</p>
<ul>
<li>The <a href="http://www.unitsofmeasure.org">UCUM</a> component as currently present in the <a href="http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.ohf/plugins/org.eclipse.ohf.ucum/?root=Technology_Project">OHF project</a></li>
<li>The <a href="http://ikayzo.org/svn/UOMo/trunk">Static Type Safe Units</a> Implementation based on <a href="http://wiki.eclipse.org/index.php/ICU4J">ICU4J</a> and <a href="http://code.google.com/p/unitsofmeasure/">Units of Measurement API</a>
<ul>
<li>contributed by Werner Keil, Ikayzo and others</li>
<li>with help and inspiration from <a href="http://www.jpaulmorrison.com/datatyps.shtml">"Smart&quot; Data</a> by Paul Morrison</li>
<li>further input and concepts provided by Peter Kriens based on <a href="http://www.osgi.org/javadoc/r4v42/org/osgi/util/measurement/package-summary.html#package_description">OSGi Measurement</a></li>
<li>Business bundle based on <a href="http://www.jpaulmorrison.com/busdtyps.shtml">Business Data Types</a> by Paul Morrison and Denis Garneau</li>
</ul>
</li>
</ul>
<h2>Committers</h2>
<p>The following individuals are proposed as initial committers to the project:</p>
<dl>
<dt>Werner Keil, emergn (project lead) </dt>
<dd>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.</dd>
<dt>Grahame Griev<span class="style1">e, <span class="Apple-style-span" style="border-collapse: separate; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;">Jiva Medical</span></span></dt>
<dd>Grahame has provided significant contributions to the existing code base. He will contribute
to the UCUM functionality in this new project.</dd>
<dt><name>Daniel Leuck,</name> <organization>Ikayzo</organization></dt>
<dd>Daniel has provided significant contributions to the existing code base, especially leading Globalization and infrastructure like CI or SCM for initial contribution. <br>
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.</dd>
<dt><name>John Paul Morrison,</name> <organization>J.P. Morrison Enterprises, Ltd.</organization></dt>
<dd>Paul is probably best known for inventing <a href="http://en.wikipedia.org/wiki/Flow-based_programming">Flow-based programming</a> (FBP). He worked at IBM since the 1960s
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span class="Apple-style-span" style="line-height: 19px;"> on compilers, data bases, text processing, and applications in a number of different areas, especially in the field of banking.</span></span> He will help this new project with his unique half century IT experience in Business and Domain- or Flow-driven development.</dd>
<dt><name>Scott Murphy,</name> <organization>Ikayzo</organization></dt>
<dd>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.</dd>
<dt><name><contributor><roles> </roles> </contributor> <contributor> <name>Mika Terada</name></contributor>,</name> <organization>Ikayzo</organization></dt>
<dd>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.</dd>
<dt><name><contributor><name>Anatol Filin</name></contributor>,</name> <organization>Gramant</organization></dt>
<dd>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.<contributor><roles></roles> </contributor> </dd>
</dl>
<h2>Mentors</h2>
<p>The following Architecture Council members will mentor this
project:</p>
<ul>
<li>Chris Aniszczyk</li>
<li>Gunnar Wagenknecht </li>
</ul>
<h2>Interested Parties</h2>
<p>The following individuals, organisations, companies and projects have
expressed interest in this project:</p>
<ul>
<li>Peter Kriens, Eclipse Equinox/OSGi Alliance </li>
<li>Gunther Schadow, UCUM Organization</li>
<li>Christof Gessner, ISO TC 215</li>
<li>Martin Lorenz, Austrian Standards Institute</li>
<li>Arnold Leitner, Director of the Metrology Service (BEV)</li>
<li>Eishay Smith, kaChing </li>
<li>Martin Desruisseaux, GeoAPI</li>
<li>Karen Legrand, IEM</li>
<li>Jean-Marie Dautelle, Thales Group</li>
<li>Chris Senior, Snap-on Incorporated</li>
<li>Ben Hoskins, emergn</li>
<li>Paul Morrison, J.P. Morrison Enterprises, Ltd.</li>
<li>Denis Garneau, Individual</li>
<li>Dr. Davide Sottara, Italian National Agency for the Energy and the Environment (ENEA)</li>
<li>Mik Kersten, TaskTop/Mylyn</li>
<li>Miles Parker, Eclipse AMP</li>
<li>John Conlon, Verticon, Inc.</li>
<li>Tonny Madsen, The RCP Company</li>
<li>Brian Frank, Fantom Language</li>
<li>Paul Cowan, Parfait</li>
<li>Frederic Conrotte, Eclipse OFMP</li>
<li>Deepak Dasaratha Rao, Samsung Electronics Corporation</li>
</ul>
<h2>Project Scheduling</h2>
<ul>
<li>Q3/2010: First version based on existing framework (UCUM, Units)</li>
<li>Q4/2010: Rework of extension framework, extending support for other languages/platforms (UCUM), increased support for Business applications (Units) </li>
<li>Q2/2011: Adding to Indigo Release Train where appropriate</li>
<li>Q3/2011: Support and adjustments to Java 7, once available</li>
</ul>
<h2>Changes to this Document</h2>
<!--
List any changes that have occurred in the document here.
You only need to document changes that have occurred after the document
has been posted live for the community to view and comment.
-->
<table>
<tr>
<th width="130">Date</th>
<th>Change</th>
</tr>
<tr>
<td><div align="left">02-June-2010</div></td>
<td>Document created</td>
</tr>
<tr>
<td><div align="left">23-June-2010</div></td>
<td>Updated for declaration</td>
</tr>
<tr>
<td>25-July-2010</td>
<td>Updated with further interested party and financial API </td>
</tr>
<tr>
<td>02-September-2010</td>
<td>Updated with further interested parties, projects and business/DSL aspects </td>
</tr>
<tr>
<td>12-September-2010</td>
<td>Updated with additional standards like UnitsML or MathML</td>
</tr>
<tr>
<td>28-September-2010</td>
<td>Updated with additional projects, interested parties and changes to Unit-API. Ready for CR </td>
</tr>
</table>
</body>
</html>