blob: 6ac8c6a51e2d15774474ba1404d41aae0d7726e4 [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>
<!--
Include the title here. We will parse it out of here and include it on the
rendered webpage. Do not duplicate the title within the text of your page.
-->
<title>Eclipse SCADA</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<!--
We make use of the 'classic' HTML Definition List (dl) tag to specify
committers. I know... you haven't seen this tag in a long while...
-->
<style type="text/css">
dt {
display: list-item;
list-style-position: outside;
list-style-image:
url(/eclipse.org-common/themes/Phoenix/images/arrow.gif);
margin-left: 16px;
}
dd {
margin-left: 25px;
margin-bottom: 5px;
}
</style>
<body>
<p>
The Eclipse SCADA project is a proposed open source project under the
<a
href="http://www.eclipse.org/projects/project_summary.php?projectid=technology">Technology
Container Project</a>.
</p>
<!-- // an alternative top level project would be the m2m working group -->
<!--
The communication channel must be specified. Typically, this is the
"Proposals" forum. In general, you don't need to change this.
-->
<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.proposals">Eclipse
Proposals</a> Forum.
</p>
<h2>Background</h2>
<!--
Optionally provide the background that has lead you to creating this project.
-->
<p>
In 2006 we started a series of projects which would at first require
some sort of connectivity to process control hardware and software. It
was obvious that with the upcoming projects more SCADA like
functionality would be required. The target platform had to be 64bit
Linux and a JEE environment. Since there was no room for a full blown
SCADA system and also existing solutions on the market did not seem to
fit (or were to expensive), development of a custom SCADA system was
started in these projects. It was clear from the beginning that it
would be hard to place this custom built solution as a commercial
product on the market. Therefore it was decided to create it as a an
open source project from the start. It is currently hosted at <a
href="http://openscada.org">http://openscada.org</a>.
</p>
<h2>Scope</h2>
<!--
All projects must have a well-defined scope. Describe, concisely, what
is in-scope and (optionally) what is out-of-scope. An Eclipse project
cannot have an open-ended scope.
-->
<p>EclipseSCADA provides a state of the art open source SCADA
system, including:</p>
<ul>
<li>A communication system
<ul>
<li>An internal communication bus</li>
<li>A framework for implementing driver modules/device adapters</li>
<li>A set of out-of-the-box drivers modules/device adapters</li>
</ul>
</li>
<li>A monitoring system, evaluating gathered data, storing
generated events</li>
<li>A data archive, storing gathered data</li>
<li>Create a reference implementation</li>
<li>A graphical user interface for gathered data, alarms &amp;
events from the monitoring system, archived value data</li>
<li>A system to configure and document the system</li>
</ul>
<p>Not part of the this project are:</p>
<ul>
<li>An embedded systems platform (like PLCs or embedded control
systems)</li>
<li>A communication system that transports arbitrary complex data
structures</li>
</ul>
<h2>Description</h2>
<!--
Describe the project here. Be concise, but provide enough information that
somebody who doesn't already know very much about your project idea or domain
has at least a fighting chance of understanding its purpose.
-->
<p>
Definition from wikipedia: <a
href="https://en.wikipedia.org/wiki/SCADA">https://en.wikipedia.org/wiki/SCADA</a>
</p>
<blockquote cite="https://en.wikipedia.org/wiki/SCADA">
<p>SCADA (supervisory control and data acquisition) is a type of
industrial control system (ICS). Industrial control systems are
computer controlled systems that monitor and control industrial
processes that exist in the physical world. SCADA systems
historically distinguish themselves from other ICS systems by being
large scale processes that can include multiple sites, and large
distances.</p>
</blockquote>
<p>Simply speaking the primary target of Eclipse SCADA is a way to
connect different industrial devices to a common communication system
and post-process as well as visualize the data to operating personnel.</p>
<p>
Since this scheme will also work with non-industrial devices and
devices do become more complex and tend to become software solutions
themselves the term &ldquo;device&rdquo; should be more considered as an &ldquo;other
system&rdquo;.
</p>
<p>The idea of a SCADA system is to provide mostly scalar values
instead of complex data structures. Where necessary data structures
are split up into multiple scalar values. This is done in order to
process the data more quickly and allow common processing of data.</p>
<!-- not sure if this example explains adequatly what SCADA is about, maybe it should be reformulated or just removed -->
<p>For example a meteo station is providing current weather
information. It can provide temperature and solar radiation. These are
two floating point values which are processed independently. Still the
same alarming schema (high level alarm) can be applied to both values.
The values can both be assigned a quality/alarm information (alarm
state) which can then be shown using the same user interface element
and the same visualization scheme (alarm is displayed with red
background). This way many different scalar values can be processed
exactly the same way.</p>
<h2>Why Eclipse?</h2>
<!--
Answer these two questions: What value does this project bring to the Eclipse
community? What value do you expect to obtain from hosting your project at Eclipse?
What value do you get by having your project at Eclipse over and above the value
of hosting at Eclipse Labs?
-->
<p>First of all this project uses several Eclipse technologies like
OSGi, RCP, EMF and a few more. This is the reason why the existing
openSCADA project is technologically already quite close to the
Eclipse project set. Also a lot of code already exists which could be
used by other projects in the Eclipse Foundation.</p>
<p>We hope that bringing openSCADA into Eclipse as Eclipse SCADA
will increase the visibility of the open source SCADA system and
attract other contributors and companies to an open source SCADA
solution. An open source SCADA communication stack could be used by
system integrators and device manufactures to provide a default way of
communicating with devices, in an open source ecosystem. Due to the
connected nature of a SCADA system it is important to have an open
connection infrastructure. As ibh SYSTEMS GmbH we are not in the
position to provide an industry standard way, as an Eclipse project it
would be possible to set a standard together with other industrial
projects in that area. We also do not begin from scratch, since we
already have a working solution.</p>
<p>We as ibh SYSTEMS GmbH of course hope to assist in realizing
such solutions and enhance Eclipse SCADA in future projects as we did
with openSCADA up to now. Yet the Eclipse Foundation provides a much
broader audience.</p>
<p>openSCADA already has a small community and several users. It
has an open communication channel (google group), a wiki and bug
tracker at Atlassian, three publicly accessible git repositories. This
is why we don't see any additional value in migrating to Eclipse Labs.
</p>
<h2>Initial Contribution</h2>
<!--
Projects are expected to arrive at Eclipse with existing code.
Describe the existing code that will be contributed to the project. Please provide
a couple of paragraphs describing the code with modest detail, including important
information like code ownership (who holds the copyright?), and some consideration
of community that exists around the code. Include a listing of third-party libraries
and associated licenses.
-->
<p>As base for Eclipse SCADA we want to use the existing openSCADA
project source code. The code is currently hosted by ibh SYSTEMS GmbH.
The copyright owners are the proposed committers which already worked
as freelancer on the project as well the companies TH4 SYSTEMS GmbH
(formerly inavare GmbH) and ibh SYSTEMS GmbH.</p>
<p>The source code was originally managed in several subversion
repositories which were converted to git repositories some time ago.
The openSCADA project itself is grouped into different sub-projects in
order to modularize it.</p>
<!-- actually I am a fan of "dl" -->
<dl>
<dt>External</dt>
<dd>Contains all external libraries (except j-interop). This
project will not be contributed. Eclipse Orbit will be used instead.</dd>
<dt>Aurora</dt>
<dd>Holds non-user interface utility components</dd>
<dt>Utgard</dt>
<dd>The OPC driver implementation, based on j-interop</dd>
<dt>Oxygen</dt>
<dd>Implementations of some protocols, mostly openSCADA internal</dd>
<dt>Atlantis</dt>
<dd>Non-user interface components of the openSCADA system.
Including driver modules, alarming, archiving.</dd>
<dt>Orilla</dt>
<dd>User interface components of the openSCADA system.</dd>
<dt>Infinity</dt>
<dd>An SWT based time series chart widget.</dd>
<dt>Dakara</dt>
<dd>The Draw2D based vector graphics visualization</dd>
<dt>Othala</dt>
<dd>
An Eclipse RCP project build which provides the <q>OSTC</q> an
admin/test client for use with openSCADA.
</dd>
<dt>Orion</dt>
<dd>Some additional user interface components used within the
Eclipse IDE</dd>
<dt>Tau'ri</dt>
<dd>Some example projects and setups for demoing openSCADA</dd>
<dt>Contrib</dt>
<dd>Some source code that can be used with openSCADA but does not
fit into the release version of openSCADA due to the lack of use,
testing or license issues.</dd>
</dl>
<!--
Describe any initial contributions of code that will be brought to the
project. If there is no existing code, just remove this section.
-->
<p>The initial contribution of Eclipse SCADA would be the openSCADA
Git repositories which are currently replicated to:</p>
<ul>
<li><a href="http://git.openscada.org">http://git.openscada.org</a></li>
<li><a href="https://bitbucket.org/ctron">https://bitbucket.org/ctron</a></li>
<li><a href="https://github.com/ctron">https://github.com/ctron</a></li>
</ul>
<p>The initial components we want to contribute are:</p>
<ul>
<li>Aurora</li>
<li>Oxgyen</li>
<li>Utgard (as the j-interop dependencies are resolved)</li>
<li>Atlantis</li>
<li>Orilla</li>
<li>Infinity</li>
<li>Othala</li>
<li>Dakara</li>
<li>Deploy</li>
<li>Orion</li>
</ul>
<p>
Note that the <em>Orion</em> component will renamed to avoid confusion
with the Eclipse Orion project.
</p>
<p>The following external libraries are used by openSCADA at the
moment:</p>
<table>
<thead>
<tr>
<th>Library</th>
<th>License</th>
</tr>
</thead>
<tbody>
<tr>
<td>Apache Mina 2.0.7</td>
<td>Apache License, Version 2.0</td>
</tr>
<tr>
<td>SLF4J 1.6.4</td>
<td><a href="http://www.slf4j.org/license.html">MIT license</a>
</td>
</tr>
<tr>
<td>Logback 1.0.0</td>
<td>EPL v1.0 &amp; LGPL 2.1</td>
</tr>
<tr>
<td>jzlib 1.1.1</td>
<td>BSD-style</td>
</tr>
<tr>
<td>guava 10.0.1</td>
<td>Apache License, Version 2.0</td>
</tr>
<tr>
<td>antlr 3.1.3</td>
<td><a
href="https://github.com/antlr/antlr4/blob/master/LICENSE.txt">BSD
License, </a></td>
</tr>
<tr>
<td>commons-daemon 1.0.10</td>
<td>Apache License, Version 2.0</td>
</tr>
<tr>
<td>commons-dbcp 1.4</td>
<td>Apache License, Version 2.0</td>
</tr>
<tr>
<td>commons-io 2.3</td>
<td>Apache License, Version 2.0</td>
</tr>
<tr>
<td>commons-pool 1.6</td>
<td>Apache License, Version 2.0</td>
</tr>
<tr>
<td>javax.transaction 1.1.1</td>
<td>Apache License, Version 2.0</td>
</tr>
<tr>
<td>commons-beanutils 1.8.0</td>
<td>Apache License, Version 2.0</td>
</tr>
<tr>
<td>commons-collections 3.2.0</td>
<td>Apache License, Version 2.0</td>
</tr>
<tr>
<td>commons-lang 2.6.0</td>
<td>Apache License, Version 2.0</td>
</tr>
<tr>
<td>tomcat-apr 5.5.23</td>
<td>Apache License, Version 2.0</td>
</tr>
<tr>
<td>Apache Xerces 2.9.0</td>
<td>Apache License, Version 2.0</td>
</tr>
<tr>
<td>J-Interop</td>
<td>LGPLv3</td>
<td>Need to check dependencies</td>
</tr>
<tr>
<td>JCIFS 1.2.25</td>
<td><a href="http://www.gnu.org/licenses/lgpl-2.1.txt">LGPLv2.1</a>
</td>
<td>Required for j-interop</td>
</tr>
<tr>
<td>GNU Crypto</td>
<td>GPLv2+</td>
<td>Required for j-interop, could be replaced with bouncycastle</td>
</tr>
<tr>
<td>jarapac</td>
<td>LGPLv3</td>
<td>Required for j-interop</td>
</tr>
<tr>
<td>JTDS JDBC Driver</td>
<td>LGPLv2.1</td>
<td>Required for j-interop</td>
</tr>
<tr>
<td>iWombat</td>
<td><a href="http://www.iwombat.com/java/license.html">iWombat
License</a></td>
<td>Required for j-interop, Could be replaced by own
implementation, check with Hudson</td>
</tr>
<tr>
<td>Apache XML Beans</td>
<td>-</td>
<td>Will be removed before contributing</td>
</tr>
<tr>
<td>Apache ODFDOM</td>
<td>Apache License, Version 2.0</td>
</tr>
<tr>
<td>Apache POI</td>
<td>Apache License, Version 2.0</td>
</tr>
</tbody>
</table>
<h2>Legal Issues</h2>
<!--
Please describe any potential legal issues in this section. Does somebody else
own the trademark to the project name? Is there some issue that prevents you
from licensing the project under the Eclipse Public License? Are parts of the
code available under some other license? Are there any LGPL/GPL bits that you
absolutely require?
-->
<p>The openSCADA project, which will be the source base for Eclipse
SCADA, is developed by the named contributors (see below). At the
moment the license is LGPLv3, but all contributors have agreed to
change the license to the EPL license for contributing the project
openSCADA to the Eclipse Foundation.</p>
<p>There however several external libraries which openSCADA
requires at the moment which are not EPL. In order to reduce issues
with the upcoming contribution to Eclipse, dependencies were removed
or replaced with versions from the Eclipse Orbit repository. The plan
is to complete this transition for all required libraries for the
openSCADA release 1.2, which is planned to be the initial version
contributed to Eclipse (also see below).</p>
<p>
One special case remaining is the library <q>j-interop</q>. This
library and its dependencies are required for one important driver
(OPC driver) of the openSCADA System. Although the system can work
without this driver module, it is a very useful component. Also is
this library used by the Eclipse Project <q>Hudson</q> for the
DCOM/Windows Slave plugin. Possible solutions are: either to remove
the module from Eclipse SCADA and leave it with the openSCADA <q>contrib</q>
repository, or to import j-interop (if not already done) into the
Eclipse Foundation in some way. Since the author of the j-interop
library (Vikram Roopchand) and us worked together in the past and also
contributed to the library, it should be an interesting contribution
to Eclipse in any way. j-interop includes some code from other
libraries (iWombat and GNU Crypto) with incompatible licensing, but
this is easily resolvable with a custom implementation and the use of
bouncycastle (which is licensed under a variant of the MIT X11
License, <a href="http://www.bouncycastle.org/licence.html">http://www.bouncycastle.org/licence.html</a>).
</p>
<h2>Committers</h2>
<!--
List any initial committers that should be provisioned along with the
new project. Include affiliation, but do not include email addresses at
this point.
-->
<p>The following individuals are proposed as initial committers to
the project:</p>
<dl>
<dt>Jens Reimann, ibh SYSTEMS GmbH (Project lead)</dt>
<dd>Jens Reimann is a commiter on the openSCADA project where he
has made significant contributions over many years.</dd>
<dt>Jürgen Rose, ibh SYSTEMS GmbH</dt>
<dd>Jürgen Rose is a commiter on the openSCADA project where he
has made significant contributions over many years.</dd>
<!--
<dt>Committer 1, Affiliation</dt>
<dd>Committer 1 is a committer on the *** project where he has made significant contributions over
many years. S/he will be contribute to the *** functionality in this new project.</dd>
<dt>Committer 2, Affiliation</dt>
<dd>Committer 2 has provided significant contributions to the existing code base. S/he will contribute
to the *** functionality in this new project.
</dd>
-->
</dl>
<p>We welcome additional committers and contributions.</p>
<h2>Mentors</h2>
<!--
New Eclipse projects require a minimum of two mentors from the Architecture
Council. You need to identify two mentors before the project is created. The
proposal can be posted before this section is filled in (it's a little easier
to find a mentor when the proposal itself is public).
-->
<p>The following Architecture Council members will mentor this
project:</p>
<ul>
<li>Achim Loerke</li>
<li>Martin Oberhuber</li>
</ul>
<h2>Interested Parties</h2>
<!--
Provide a list of individuals, organisations, companies, and other Eclipse
projects that are interested in this project. This list will provide some
insight into who your project's community will ultimately include. Where
possible, include affiliations. Do not include email addresses.
-->
<p>The following individuals, organisations, companies and projects
have expressed interest in this project:</p>
<ul>
<li>OMV Solutions, User of openSCADA</li>
<li>E.ON CR, User of openSCADA</li>
<li>XION AT, Integrator</li>
<li>eTrice, Eclipse Project</li>
<li>ScadaBR, another open source SCADA which uses parts of
openSCADA</li>
<li>4DIAC, an open source framework from fortiss GmbH for
distributed industrial automation and control</li>
<li>Werner Keil, Eclipse UOMo Project lead</li>
<li>Holger Siegel, HST GmbH Technische Entwicklungen</li>
<!--
<li>…</li>
<li>Somebody, Affiliation</li>
<li>Somebody else, Affiliation</li>
-->
</ul>
<h2>Project Scheduling</h2>
<!--
Describe, in rough terms, what the basic scheduling of the project will
be. You might, for example, include an indication of when an initial contribution
should be expected, when your first build will be ready, etc. Exact
dates are not required.
-->
<p>The project will be started by contributing the openSCADA source
code to the Eclipse Foundation. At the moment openSCADA is released as
version 1.1 and the version 1.2 is planned withing the next view
months. The idea is to clean up some parts and dependencies from 1.1
to 1.2 before contributing version 1.2 to the Eclipse Foundation.</p>
<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>Date</th>
<th>Change</th>
</tr>
<tr>
<td>28-May-2013</td>
<td>Document created</td>
</tr>
<!--
<tr>
<td>DD-Month-YYYY</td>
<td>Document created</td>
</tr>
-->
</table>
</body>
</html>