You are viewing a plain text version of this content. The canonical link for it is here.
Posted to general@incubator.apache.org by Justin Mclean <ju...@classsoftware.com> on 2017/12/10 00:10:07 UTC

[PROPOSAL] PLC4X - proposal for Apache Incubation

Dear Apache Incubator Community,

Please accept the following proposal for presentation and discussion:
https://wiki.apache.org/incubator/PLC4XProposal

PLC4X is aiming at becoming a set of libraries providing a universal way to 
access industrial programmable logic controllers. While we are currently working
hard on Java implementations, we have other languages on our TODO list 
(therefore 4X and not 4J)

Christofer has been provided with the chance to initiate this project as part 
of a research project by his company (codecentric). It's caused quite a buzz
internally and a lot of his co-workers have started helping out. But they also
have been able to attract contributors outside of the company. There seems to be
quite an interest in this topic both with commercial companies as with research
institutes and universities.

Christofer asked me to be both champion and one of the four mentors for the
project.  We have several other ASF members involved who have worked
on multiple Apache projects and have a good understanding of the Apache Way.

If anyone else is interested in this project and wants to be involved just ask
and we’ll be happy to add your name to the proposal.

= PLC4XProposal =

== Abstract ==

PLC4X is intended to become a set of libraries for communicating with 
industrial programmable logic controllers (PLCs) using a variety of protocols 
but with a shared API.

For the most used of these protocols, PLC4X will provide implementations of 
drivers. Each protocol driver is hereby provided by an individual artifact.

In a first step, we are concentrating on Java but will be hoping to be able to 
port implementation to C and other languages.

== Background ==

Industrial machines have been controlled by PLCs for more than 30 years. In 
simpler pieces of machinery these may operate autonomously, in more complex 
ones several to hundreds of these industrial computers communicate with each 
other.

== Rationale ==

Currently software for communicating with PLCs is mainly proprietary software 
and a whole ecosystem of closed-source solutions exist. Usually this software 
is very expensive and licensing implies a lot of restrictions on its usage. 
There is a small set of open-source libraries available, but unfortunately most 
of these are GPL licensed and hereby disqualify themselves from commercial use. 
Most of these are direct ports from C/C++ implementations and therefore inherit 
their API. Usually these are implemented blocking socket operations and have 
great problems with concurrency. Also, the APIs of these tools differ quite a 
lot, so porting a software from communicating with one type of PLC to another 
sometimes requires re-writing a great part of the software.

There are multiple rationales behind this project:

 1. By providing libraries with Apache license, it will be possible to create 
commercial applications which access PLCs
 2. By providing a universal API for different protocols, it reduces the vendor 
lock-in when creating software
 3. Most of the proprietary commercial solutions are based on Windows systems, 
especially the Siemens solutions, sometimes require maintaining un-patched 
versions of older Windows version in order to run, this is a huge security risk 
(See Stuxnet)
 4. Most of the proprietary commercial solutions don't scale. Running them in 
public/private clouds and/or in containers is completely out of the question.

As a result of above, it would be possible to start writing secure, scalable 
and reliable software using the full stack of open-source solutions and hereby 
open a complete new market for developers. In order to make this even easier, 
we are planning on directly providing adapters and examples for using PLC4X 
together with other Apache frameworks.

== Initial Goals ==

Develop a universal API for accessing industrial programmable logic controllers 
in a protocol-agnostic way. Also implement Java versions of drivers for the 
most prominent protocols: S7, Modbus and OPC-UA - but not limited to those. On 
the side of the adapters, for existing OS solutions, we are currently working 
on adapters for: Apache Edgent (incubating), Apache Camel and eventually even 
Apache Brooklyn.

Also, we will be providing a Scala wrapper to ease integration of PLC4X in 
Scala based systems with an API Scala developers should easily adopt.

As soon as a C version exists, we are planning on providing an Apache Mynewt 
adapter as we see great benefits on this combination.

== Current Status ==

=== Meritocracy ===

PLC4X was initially created by Christofer Dutz. He is an Apache Member and also 
involved in a variety of Apache and Non-Apache Open-Source projects. Being PMC 
of the Apache Flex, Apache Kibble and the Apache Travel Assistance he 
definitely knows how Apache works and is a strong advocate of the Apache Way. 
He is also currently helping the Apache Edgent project as member of the PPMC. 
However, the team working on PLC4X also includes a diverse set of additional 
Apache Committers and Members as well as people, that are not yet affiliated 
with any Apache project. The team working on PLC4X are both working for 
codecentric as well as other entities, such as commercial companies as well as 
universities.

=== Community ===

Currently the PLC4X community exists out of a set of core developers working on 
a private code repository provided by codecentric (the company Christofer Dutz 
is working for). However, the set of developers, working on PLC4X is not 
limited to codecentric employees as we are also inviting outside contributors.

The main reason for using a private repo instead of a public one, is that we 
were planning on starting incubation at Apache within a few weeks after 
initiating the project. Therefore, we wanted to start writing everything with 
Apache package names and Apache Maven coordinates. Even our logo is directly 
designed including the Apache Feather and "Apache" inside the name. As only 
real Apache projects are allowed to use "Apache", we decided to go down the 
private repository path.

=== Core Developers ===

(In alphabetical order)

 * Benedikt Ritter (codecentric) (Apache Member)
 * Christofer Dutz (codecentric) (Apache Member)
 * Dale LaBossiere (IBM) (PPMC Member of the Apache Edgent incubator podling)
 * Frank Stibane (codecentric)
 * Greg Trasuk (Web Age Solutions) (Apache Member)
 * Justin McLean (External) (Apache Member)
 * Kai Herings (codecentric)
 * Lukas Friedrichsen (Hochschule Bochum)
 * Mark Keinhörster (codecentric)
 * Rolf Felker (codecentric)
 * Sebastian Rühl (codecentric)

=== Alignment ===

The build system is based on Apache Maven. Also, it uses Apache Edgent 
(incubating) and Apache Camel libraries for providing adapters to these 
systems. Being a full-blown Apache enthusiast, for Christofer there hasn't been 
any thought in bringing this project into any other collaboration platform or 
foundation. This idea is shared by a big majority of the core contributors.

=== Project Name ===

As we know that renaming a codebase can be a huge pain, we have invested quite 
a lot of time into finding a suitable name. In the end, we came up with a list 
of about 20 project names, which we did the fully required background checks 
for. On the options surviving these checks, we internally voted on the name. It 
was a pretty close tie between PLC4J and PLC4X, but we decided to go for the 
later as we are planning on providing libraries for multiple languages beyond 
Java.

PLC4X has no registered trademarks that we could find and the only potential 
problem would be a hardware LPT Breakout Board by a Russian Company called 
Purelogic (https://purelogic.ru/doc/PDF/Controller/PLC4x.pdf) English version 
(http://www.zappautomation.co.uk/productattachments/index/download?id=99)
But we don't see any problems to arise from this. If there would be problems, 
we would probably fallback to using PLC4J, which had no conflicts at all and 
would eventually name our sub-products PLC4S (Scala) and PLC4C (C/C++).

== Known Risks ==

=== Orphaned projects ===

PLC4X is a new Project, which has just been started. The feedback from the 
industry has been overwhelming so the risk of the project being orphaned is 
minimal.

=== Inexperience with Open Source ===

The set of core developers of this project consists of a large set of 
experienced open-source developers, most of these even being Apache Members.

=== Homogeneous Developers ===

Even if a big part of the projects initial committer team is affiliated with 
codecentric, we have been successful and continuing to be in actively 
recruiting people from other commercial and non-commercial entities.

=== Reliance on Salaried Developers ===

Currently only Christofer Dutz is being paid to work on this project 
exclusively.

=== Relationships with Other Apache Products ===

PLC4X makes great used of Apache Maven for the build system and Apache Commons 
for providing a lot of basic functionality.

Also does it currently have direct relations to the Apache Camel and Apache 
Edgent projects as it provides modules for direct integration of PLC4X into 
these frameworks.

In the future we are planning on also adding such modules for Apache Brooklyn 
and as soon as a C-based version of PLC4X is available Apache Mynewt.

Currently there is no competing project at the Apache Software Foundation.

=== An Excessive Fascination with the Apache Brand ===

We are certain that PLC4X itself will profit from being an official Apache 
project, in terms of attracting a community and establishing a solid group of 
developers and users, but also to ease the interaction with other Apache 
projects, used in PLC4X or project PLC4X provides adapters for as all will 
share the same base.

Our general belief in the Apache way as well as the reasons mentioned above are 
the main reasons for us to send this proposal. We think that a good community 
is needed to build and maintain good software, such as PLC4X. Also do we need a 
big community to support a big variety of systems. However, even if PLC4X would 
not be accepted, development would definitely continue elsewhere. Apache is 
just our primary foundation of choice. As such, there is no need to, or reason 
to, "abuse" the Apache Brand.

=== Possibility of legal actions ===

Some of the protocols are not publicly defined. Existing open-source 
implementations contain licensing restrictions. To avoid licensing issues we 
made sure the license of information used to implement drivers in PLC4X are 
compatible with the Apache license and added references to these sources in the 
project documentation to prove this. This documentation is part of the 
codebase. We are therefore not expecting any real problems on this side.

=== Test setup could require hardware ===

A test-suite for PLC4X could involve tests run against virtual or real 
hardware. It could be problematic to include these in automated builds run on 
build.apache.org, but Apache infra have already signaled that there should be 
options to work this out.

== Documentation ==

Currently all documentation and information is stored alongside the code in a 
private corporate GIT repository and is available as part of the website which 
is generated as part of the build.

== Initial Source ==

Development of PLC4X started at codecentric in October of 2017. The source 
currently is located on a private corporate GIT repository. All the code is 
available at https://gitlab.codecentric.de/iot/plc4x (Accounts can be created 
on a request basis)

== Source and Intellectual Property Submission Plan ==

PLC4X is currently mainly developed by, but not limited to, codecentric 
employees. However, all code has been developed completely from scratch it was 
ensured from the start that each document is already fully licensed under the 
Apache 2.0 license. All source will be donated to Apache without any exceptions.

== External Dependencies ==

 * Apache Commons-IO, Apache License 2.0
 * Apache Edgent, Apache License 2.0
 * Netty, Apache License 2.0
 * Metrics Core, Apache License 2.0
 * Google Gson, Apache License 2.0

These sources can be included, according to 
http://www.apache.org/legal/resolved.html

 * Logback, EPL 1.0

This source can NOT be included, according to 
http://www.apache.org/legal/resolved.html

== Cryptography ==

Not applicable.

== Required Resources ==

=== Mailing Lists ===

 * plc4x-dev
 * plc4x-private

=== Git Repository ===

https://git-wip-us.apache.org/repos/asf/incubator-plc4x.git

=== Issue Tracking ===

JIRA PLC4X

=== Confluence Wiki ===

To be able to provide help, documentation, faq etc, a wiki is needed.

== Initial Committers ==

(In alphabetical order)

 * Benedikt Ritter (britter@apache.org)
 * Christofer Dutz (cdutz@apache.org)
 * Dale LaBossiere (dlaboss@apache.org)
 * Frank Stibane (frank.stibane@codecentric.de)
 * Greg Trasuk (gtrasuk@apache.org)
 * Justin McLean (jmclean@apache.org)
 * Kai Herings (kai.herings@codecentric.de)
 * Lukas Friedrichsen (friedrichsen.luk@googlemail.com)
 * Mark Keinhörster (mark.keinhoerster@codecentric.de)
 * Rolf Felker (rolf.felker@codecentric.de)
 * Sebastian Rühl (sebastian.ruehl@codecentric.de)

== Affiliations ==

Currently most of the initial committers are employees of codecentric. 
Currently Christofer Dutz is the only contributor paid to work on PLC4X 
full-time. The others participate as part of their so-called "+1 time" (At 
codecentric employees get to spend 20% of their time to work on open-source, 
education, etc. and they invest a lot of this time on the project).

Besides these we also have contributors from companies other than codecentric 
(Dale, Greg, Justin) as well as universities (Lukas).

== Sponsors ==

=== Champion ===

 * Justin McLean

=== Nominated Mentors ===

(In alphabetical order)

 * Greg Trasuk
 * Justin McLean
 * Luciano Resende
 * Stefan Bodewig

=== Sponsoring Entity ===

PLC4X is a new project and proposed is to release to code under the sponsorship 
of the Incubator.

Thanks,
Justin


---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@incubator.apache.org
For additional commands, e-mail: general-help@incubator.apache.org


Re: [PROPOSAL] PLC4X - proposal for Apache Incubation

Posted by Christofer Dutz <ch...@c-ware.de>.
Hi All,

I just changed the git-wip address with a gitbox version, as I was told that new incubator projects will require to use gitbox.

Chris

Am 13.12.17, 01:41 schrieb "Mike Drob" <md...@apache.org>:

    > Can’t enter incubation without having code.
    
    I think this has been done before, but it's not relevant now. I agree with
    John that you should expect to need an SGA.
    
    Good luck and good coding!
    
    On Tue, Dec 12, 2017, 3:42 PM Justin Mclean <ju...@classsoftware.com>
    wrote:
    
    > Hi,
    >
    > Anyone have feedback or see any issues with this proposal?
    >
    > If there are none in the next couple of days I'll go ahead and call a vote.
    >
    > Thanks,
    > Justin
    >
    > ---------------------------------------------------------------------
    > To unsubscribe, e-mail: general-unsubscribe@incubator.apache.org
    > For additional commands, e-mail: general-help@incubator.apache.org
    >
    >
    


Re: [PROPOSAL] PLC4X - proposal for Apache Incubation

Posted by Mike Drob <md...@apache.org>.
> Can’t enter incubation without having code.

I think this has been done before, but it's not relevant now. I agree with
John that you should expect to need an SGA.

Good luck and good coding!

On Tue, Dec 12, 2017, 3:42 PM Justin Mclean <ju...@classsoftware.com>
wrote:

> Hi,
>
> Anyone have feedback or see any issues with this proposal?
>
> If there are none in the next couple of days I'll go ahead and call a vote.
>
> Thanks,
> Justin
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: general-unsubscribe@incubator.apache.org
> For additional commands, e-mail: general-help@incubator.apache.org
>
>

Re: [PROPOSAL] PLC4X - proposal for Apache Incubation

Posted by Justin Mclean <ju...@classsoftware.com>.
Hi,

Anyone have feedback or see any issues with this proposal?

If there are none in the next couple of days I'll go ahead and call a vote.

Thanks,
Justin

---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@incubator.apache.org
For additional commands, e-mail: general-help@incubator.apache.org


Re: [PROPOSAL] PLC4X - proposal for Apache Incubation

Posted by Christofer Dutz <ch...@c-ware.de>.
Hi John,

the only reason for it being private, is that we wanted to start using apache group-ids and package names and therefore were not able to create it as a public repo.

It was our solution to the hen-egg-problem of setting up a project with the primary goal of having it live at Apache. Can’t enter incubation without having code. Can’t write apache-code publicly without being Apache ;-)

Chris


Am 11.12.17, 12:47 schrieb "John D. Ament" <jo...@apache.org>:

    On Mon, Dec 11, 2017 at 6:46 AM Christofer Dutz <ch...@c-ware.de>
    wrote:
    
    > Please let me add a little more information on the project:
    >
    > We have currently setup the repo and the CI on our companies GitLab
    > server. The site is already publishing the project website at:
    > https://iot.gitlab.codecentric.de/plc4x/
    > (As Gitlab adds the prefix of „iot” to the domain-name our currently
    > installed SSL certificate will make the browser complain)
    >
    > On the site, you can find a little more information on the project as well
    > as see the project logo.
    >
    > As soon as a VOTE thread is created, I’ll set the code-repo to public
    > readable so you know what you’re voting on.
    >
    >
    That's not necessary.  If the code is currently closed source, you would
    have to execute an SGA before bringing the code over.
    
    
    > Chris
    >
    >
    >
    >
    > Am 10.12.17, 09:15 schrieb "Pierre Smits" <pi...@gmail.com>:
    >
    >     HI Justin, All,
    >
    >     Great to see this initiative culminating here.
    >
    >     Best regards,
    >
    >     Pierre Smits
    >
    >     ORRTIZ.COM <http://www.orrtiz.com>
    >     OFBiz based solutions & services
    >
    >     OEM - The OFBiz Extensions Marketplace1
    >     http://oem.ofbizci.net/oci-2/
    >     1 not affiliated to (and not endorsed by) the OFBiz project
    >
    >     On Sun, Dec 10, 2017 at 1:10 AM, Justin Mclean <
    > justin@classsoftware.com>
    >     wrote:
    >
    >     > Dear Apache Incubator Community,
    >     >
    >     > Please accept the following proposal for presentation and discussion:
    >     > https://wiki.apache.org/incubator/PLC4XProposal
    >     >
    >     > PLC4X is aiming at becoming a set of libraries providing a universal
    > way to
    >     > access industrial programmable logic controllers. While we are
    > currently
    >     > working
    >     > hard on Java implementations, we have other languages on our TODO
    > list
    >     > (therefore 4X and not 4J)
    >     >
    >     > Christofer has been provided with the chance to initiate this
    > project as
    >     > part
    >     > of a research project by his company (codecentric). It's caused
    > quite a
    >     > buzz
    >     > internally and a lot of his co-workers have started helping out. But
    > they
    >     > also
    >     > have been able to attract contributors outside of the company. There
    > seems
    >     > to be
    >     > quite an interest in this topic both with commercial companies as
    > with
    >     > research
    >     > institutes and universities.
    >     >
    >     > Christofer asked me to be both champion and one of the four mentors
    > for the
    >     > project.  We have several other ASF members involved who have worked
    >     > on multiple Apache projects and have a good understanding of the
    > Apache
    >     > Way.
    >     >
    >     > If anyone else is interested in this project and wants to be
    > involved just
    >     > ask
    >     > and we’ll be happy to add your name to the proposal.
    >     >
    >     > = PLC4XProposal =
    >     >
    >     > == Abstract ==
    >     >
    >     > PLC4X is intended to become a set of libraries for communicating with
    >     > industrial programmable logic controllers (PLCs) using a variety of
    >     > protocols
    >     > but with a shared API.
    >     >
    >     > For the most used of these protocols, PLC4X will provide
    > implementations of
    >     > drivers. Each protocol driver is hereby provided by an individual
    > artifact.
    >     >
    >     > In a first step, we are concentrating on Java but will be hoping to
    > be
    >     > able to
    >     > port implementation to C and other languages.
    >     >
    >     > == Background ==
    >     >
    >     > Industrial machines have been controlled by PLCs for more than 30
    > years. In
    >     > simpler pieces of machinery these may operate autonomously, in more
    > complex
    >     > ones several to hundreds of these industrial computers communicate
    > with
    >     > each
    >     > other.
    >     >
    >     > == Rationale ==
    >     >
    >     > Currently software for communicating with PLCs is mainly proprietary
    >     > software
    >     > and a whole ecosystem of closed-source solutions exist. Usually this
    >     > software
    >     > is very expensive and licensing implies a lot of restrictions on its
    > usage.
    >     > There is a small set of open-source libraries available, but
    > unfortunately
    >     > most
    >     > of these are GPL licensed and hereby disqualify themselves from
    > commercial
    >     > use.
    >     > Most of these are direct ports from C/C++ implementations and
    > therefore
    >     > inherit
    >     > their API. Usually these are implemented blocking socket operations
    > and
    >     > have
    >     > great problems with concurrency. Also, the APIs of these tools differ
    >     > quite a
    >     > lot, so porting a software from communicating with one type of PLC to
    >     > another
    >     > sometimes requires re-writing a great part of the software.
    >     >
    >     > There are multiple rationales behind this project:
    >     >
    >     >  1. By providing libraries with Apache license, it will be possible
    > to
    >     > create
    >     > commercial applications which access PLCs
    >     >  2. By providing a universal API for different protocols, it reduces
    > the
    >     > vendor
    >     > lock-in when creating software
    >     >  3. Most of the proprietary commercial solutions are based on Windows
    >     > systems,
    >     > especially the Siemens solutions, sometimes require maintaining
    > un-patched
    >     > versions of older Windows version in order to run, this is a huge
    > security
    >     > risk
    >     > (See Stuxnet)
    >     >  4. Most of the proprietary commercial solutions don't scale.
    > Running them
    >     > in
    >     > public/private clouds and/or in containers is completely out of the
    >     > question.
    >     >
    >     > As a result of above, it would be possible to start writing secure,
    >     > scalable
    >     > and reliable software using the full stack of open-source solutions
    > and
    >     > hereby
    >     > open a complete new market for developers. In order to make this even
    >     > easier,
    >     > we are planning on directly providing adapters and examples for
    > using PLC4X
    >     > together with other Apache frameworks.
    >     >
    >     > == Initial Goals ==
    >     >
    >     > Develop a universal API for accessing industrial programmable logic
    >     > controllers
    >     > in a protocol-agnostic way. Also implement Java versions of drivers
    > for the
    >     > most prominent protocols: S7, Modbus and OPC-UA - but not limited to
    >     > those. On
    >     > the side of the adapters, for existing OS solutions, we are currently
    >     > working
    >     > on adapters for: Apache Edgent (incubating), Apache Camel and
    > eventually
    >     > even
    >     > Apache Brooklyn.
    >     >
    >     > Also, we will be providing a Scala wrapper to ease integration of
    > PLC4X in
    >     > Scala based systems with an API Scala developers should easily adopt.
    >     >
    >     > As soon as a C version exists, we are planning on providing an Apache
    >     > Mynewt
    >     > adapter as we see great benefits on this combination.
    >     >
    >     > == Current Status ==
    >     >
    >     > === Meritocracy ===
    >     >
    >     > PLC4X was initially created by Christofer Dutz. He is an Apache
    > Member and
    >     > also
    >     > involved in a variety of Apache and Non-Apache Open-Source projects.
    > Being
    >     > PMC
    >     > of the Apache Flex, Apache Kibble and the Apache Travel Assistance he
    >     > definitely knows how Apache works and is a strong advocate of the
    > Apache
    >     > Way.
    >     > He is also currently helping the Apache Edgent project as member of
    > the
    >     > PPMC.
    >     > However, the team working on PLC4X also includes a diverse set of
    >     > additional
    >     > Apache Committers and Members as well as people, that are not yet
    >     > affiliated
    >     > with any Apache project. The team working on PLC4X are both working
    > for
    >     > codecentric as well as other entities, such as commercial companies
    > as
    >     > well as
    >     > universities.
    >     >
    >     > === Community ===
    >     >
    >     > Currently the PLC4X community exists out of a set of core developers
    >     > working on
    >     > a private code repository provided by codecentric (the company
    > Christofer
    >     > Dutz
    >     > is working for). However, the set of developers, working on PLC4X is
    > not
    >     > limited to codecentric employees as we are also inviting outside
    >     > contributors.
    >     >
    >     > The main reason for using a private repo instead of a public one, is
    > that
    >     > we
    >     > were planning on starting incubation at Apache within a few weeks
    > after
    >     > initiating the project. Therefore, we wanted to start writing
    > everything
    >     > with
    >     > Apache package names and Apache Maven coordinates. Even our logo is
    >     > directly
    >     > designed including the Apache Feather and "Apache" inside the name.
    > As only
    >     > real Apache projects are allowed to use "Apache", we decided to go
    > down the
    >     > private repository path.
    >     >
    >     > === Core Developers ===
    >     >
    >     > (In alphabetical order)
    >     >
    >     >  * Benedikt Ritter (codecentric) (Apache Member)
    >     >  * Christofer Dutz (codecentric) (Apache Member)
    >     >  * Dale LaBossiere (IBM) (PPMC Member of the Apache Edgent incubator
    >     > podling)
    >     >  * Frank Stibane (codecentric)
    >     >  * Greg Trasuk (Web Age Solutions) (Apache Member)
    >     >  * Justin McLean (External) (Apache Member)
    >     >  * Kai Herings (codecentric)
    >     >  * Lukas Friedrichsen (Hochschule Bochum)
    >     >  * Mark Keinhörster (codecentric)
    >     >  * Rolf Felker (codecentric)
    >     >  * Sebastian Rühl (codecentric)
    >     >
    >     > === Alignment ===
    >     >
    >     > The build system is based on Apache Maven. Also, it uses Apache
    > Edgent
    >     > (incubating) and Apache Camel libraries for providing adapters to
    > these
    >     > systems. Being a full-blown Apache enthusiast, for Christofer there
    > hasn't
    >     > been
    >     > any thought in bringing this project into any other collaboration
    > platform
    >     > or
    >     > foundation. This idea is shared by a big majority of the core
    > contributors.
    >     >
    >     > === Project Name ===
    >     >
    >     > As we know that renaming a codebase can be a huge pain, we have
    > invested
    >     > quite
    >     > a lot of time into finding a suitable name. In the end, we came up
    > with a
    >     > list
    >     > of about 20 project names, which we did the fully required background
    >     > checks
    >     > for. On the options surviving these checks, we internally voted on
    > the
    >     > name. It
    >     > was a pretty close tie between PLC4J and PLC4X, but we decided to go
    > for
    >     > the
    >     > later as we are planning on providing libraries for multiple
    > languages
    >     > beyond
    >     > Java.
    >     >
    >     > PLC4X has no registered trademarks that we could find and the only
    >     > potential
    >     > problem would be a hardware LPT Breakout Board by a Russian Company
    > called
    >     > Purelogic (https://purelogic.ru/doc/PDF/Controller/PLC4x.pdf)
    > English
    >     > version
    >     > (
    > http://www.zappautomation.co.uk/productattachments/index/download?id=99)
    >     > But we don't see any problems to arise from this. If there would be
    >     > problems,
    >     > we would probably fallback to using PLC4J, which had no conflicts at
    > all
    >     > and
    >     > would eventually name our sub-products PLC4S (Scala) and PLC4C
    > (C/C++).
    >     >
    >     > == Known Risks ==
    >     >
    >     > === Orphaned projects ===
    >     >
    >     > PLC4X is a new Project, which has just been started. The feedback
    > from the
    >     > industry has been overwhelming so the risk of the project being
    > orphaned is
    >     > minimal.
    >     >
    >     > === Inexperience with Open Source ===
    >     >
    >     > The set of core developers of this project consists of a large set of
    >     > experienced open-source developers, most of these even being Apache
    >     > Members.
    >     >
    >     > === Homogeneous Developers ===
    >     >
    >     > Even if a big part of the projects initial committer team is
    > affiliated
    >     > with
    >     > codecentric, we have been successful and continuing to be in actively
    >     > recruiting people from other commercial and non-commercial entities.
    >     >
    >     > === Reliance on Salaried Developers ===
    >     >
    >     > Currently only Christofer Dutz is being paid to work on this project
    >     > exclusively.
    >     >
    >     > === Relationships with Other Apache Products ===
    >     >
    >     > PLC4X makes great used of Apache Maven for the build system and
    > Apache
    >     > Commons
    >     > for providing a lot of basic functionality.
    >     >
    >     > Also does it currently have direct relations to the Apache Camel and
    > Apache
    >     > Edgent projects as it provides modules for direct integration of
    > PLC4X into
    >     > these frameworks.
    >     >
    >     > In the future we are planning on also adding such modules for Apache
    >     > Brooklyn
    >     > and as soon as a C-based version of PLC4X is available Apache Mynewt.
    >     >
    >     > Currently there is no competing project at the Apache Software
    > Foundation.
    >     >
    >     > === An Excessive Fascination with the Apache Brand ===
    >     >
    >     > We are certain that PLC4X itself will profit from being an official
    > Apache
    >     > project, in terms of attracting a community and establishing a solid
    > group
    >     > of
    >     > developers and users, but also to ease the interaction with other
    > Apache
    >     > projects, used in PLC4X or project PLC4X provides adapters for as
    > all will
    >     > share the same base.
    >     >
    >     > Our general belief in the Apache way as well as the reasons mentioned
    >     > above are
    >     > the main reasons for us to send this proposal. We think that a good
    >     > community
    >     > is needed to build and maintain good software, such as PLC4X. Also
    > do we
    >     > need a
    >     > big community to support a big variety of systems. However, even if
    > PLC4X
    >     > would
    >     > not be accepted, development would definitely continue elsewhere.
    > Apache is
    >     > just our primary foundation of choice. As such, there is no need to,
    > or
    >     > reason
    >     > to, "abuse" the Apache Brand.
    >     >
    >     > === Possibility of legal actions ===
    >     >
    >     > Some of the protocols are not publicly defined. Existing open-source
    >     > implementations contain licensing restrictions. To avoid licensing
    > issues
    >     > we
    >     > made sure the license of information used to implement drivers in
    > PLC4X are
    >     > compatible with the Apache license and added references to these
    > sources
    >     > in the
    >     > project documentation to prove this. This documentation is part of
    > the
    >     > codebase. We are therefore not expecting any real problems on this
    > side.
    >     >
    >     > === Test setup could require hardware ===
    >     >
    >     > A test-suite for PLC4X could involve tests run against virtual or
    > real
    >     > hardware. It could be problematic to include these in automated
    > builds run
    >     > on
    >     > build.apache.org, but Apache infra have already signaled that there
    >     > should be
    >     > options to work this out.
    >     >
    >     > == Documentation ==
    >     >
    >     > Currently all documentation and information is stored alongside the
    > code
    >     > in a
    >     > private corporate GIT repository and is available as part of the
    > website
    >     > which
    >     > is generated as part of the build.
    >     >
    >     > == Initial Source ==
    >     >
    >     > Development of PLC4X started at codecentric in October of 2017. The
    > source
    >     > currently is located on a private corporate GIT repository. All the
    > code is
    >     > available at https://gitlab.codecentric.de/iot/plc4x (Accounts can
    > be
    >     > created
    >     > on a request basis)
    >     >
    >     > == Source and Intellectual Property Submission Plan ==
    >     >
    >     > PLC4X is currently mainly developed by, but not limited to,
    > codecentric
    >     > employees. However, all code has been developed completely from
    > scratch it
    >     > was
    >     > ensured from the start that each document is already fully licensed
    > under
    >     > the
    >     > Apache 2.0 license. All source will be donated to Apache without any
    >     > exceptions.
    >     >
    >     > == External Dependencies ==
    >     >
    >     >  * Apache Commons-IO, Apache License 2.0
    >     >  * Apache Edgent, Apache License 2.0
    >     >  * Netty, Apache License 2.0
    >     >  * Metrics Core, Apache License 2.0
    >     >  * Google Gson, Apache License 2.0
    >     >
    >     > These sources can be included, according to
    >     > http://www.apache.org/legal/resolved.html
    >     >
    >     >  * Logback, EPL 1.0
    >     >
    >     > This source can NOT be included, according to
    >     > http://www.apache.org/legal/resolved.html
    >     >
    >     > == Cryptography ==
    >     >
    >     > Not applicable.
    >     >
    >     > == Required Resources ==
    >     >
    >     > === Mailing Lists ===
    >     >
    >     >  * plc4x-dev
    >     >  * plc4x-private
    >     >
    >     > === Git Repository ===
    >     >
    >     > https://git-wip-us.apache.org/repos/asf/incubator-plc4x.git
    >     >
    >     > === Issue Tracking ===
    >     >
    >     > JIRA PLC4X
    >     >
    >     > === Confluence Wiki ===
    >     >
    >     > To be able to provide help, documentation, faq etc, a wiki is needed.
    >     >
    >     > == Initial Committers ==
    >     >
    >     > (In alphabetical order)
    >     >
    >     >  * Benedikt Ritter (britter@apache.org)
    >     >  * Christofer Dutz (cdutz@apache.org)
    >     >  * Dale LaBossiere (dlaboss@apache.org)
    >     >  * Frank Stibane (frank.stibane@codecentric.de)
    >     >  * Greg Trasuk (gtrasuk@apache.org)
    >     >  * Justin McLean (jmclean@apache.org)
    >     >  * Kai Herings (kai.herings@codecentric.de)
    >     >  * Lukas Friedrichsen (friedrichsen.luk@googlemail.com)
    >     >  * Mark Keinhörster (mark.keinhoerster@codecentric.de)
    >     >  * Rolf Felker (rolf.felker@codecentric.de)
    >     >  * Sebastian Rühl (sebastian.ruehl@codecentric.de)
    >     >
    >     > == Affiliations ==
    >     >
    >     > Currently most of the initial committers are employees of
    > codecentric.
    >     > Currently Christofer Dutz is the only contributor paid to work on
    > PLC4X
    >     > full-time. The others participate as part of their so-called "+1
    > time" (At
    >     > codecentric employees get to spend 20% of their time to work on
    >     > open-source,
    >     > education, etc. and they invest a lot of this time on the project).
    >     >
    >     > Besides these we also have contributors from companies other than
    >     > codecentric
    >     > (Dale, Greg, Justin) as well as universities (Lukas).
    >     >
    >     > == Sponsors ==
    >     >
    >     > === Champion ===
    >     >
    >     >  * Justin McLean
    >     >
    >     > === Nominated Mentors ===
    >     >
    >     > (In alphabetical order)
    >     >
    >     >  * Greg Trasuk
    >     >  * Justin McLean
    >     >  * Luciano Resende
    >     >  * Stefan Bodewig
    >     >
    >     > === Sponsoring Entity ===
    >     >
    >     > PLC4X is a new project and proposed is to release to code under the
    >     > sponsorship
    >     > of the Incubator.
    >     >
    >     > Thanks,
    >     > Justin
    >     >
    >     >
    >     > ---------------------------------------------------------------------
    >     > To unsubscribe, e-mail: general-unsubscribe@incubator.apache.org
    >     > For additional commands, e-mail: general-help@incubator.apache.org
    >     >
    >     >
    >
    >
    >
    > ---------------------------------------------------------------------
    > To unsubscribe, e-mail: general-unsubscribe@incubator.apache.org
    > For additional commands, e-mail: general-help@incubator.apache.org
    >
    


Re: [PROPOSAL] PLC4X - proposal for Apache Incubation

Posted by "John D. Ament" <jo...@apache.org>.
On Mon, Dec 11, 2017 at 6:46 AM Christofer Dutz <ch...@c-ware.de>
wrote:

> Please let me add a little more information on the project:
>
> We have currently setup the repo and the CI on our companies GitLab
> server. The site is already publishing the project website at:
> https://iot.gitlab.codecentric.de/plc4x/
> (As Gitlab adds the prefix of „iot” to the domain-name our currently
> installed SSL certificate will make the browser complain)
>
> On the site, you can find a little more information on the project as well
> as see the project logo.
>
> As soon as a VOTE thread is created, I’ll set the code-repo to public
> readable so you know what you’re voting on.
>
>
That's not necessary.  If the code is currently closed source, you would
have to execute an SGA before bringing the code over.


> Chris
>
>
>
>
> Am 10.12.17, 09:15 schrieb "Pierre Smits" <pi...@gmail.com>:
>
>     HI Justin, All,
>
>     Great to see this initiative culminating here.
>
>     Best regards,
>
>     Pierre Smits
>
>     ORRTIZ.COM <http://www.orrtiz.com>
>     OFBiz based solutions & services
>
>     OEM - The OFBiz Extensions Marketplace1
>     http://oem.ofbizci.net/oci-2/
>     1 not affiliated to (and not endorsed by) the OFBiz project
>
>     On Sun, Dec 10, 2017 at 1:10 AM, Justin Mclean <
> justin@classsoftware.com>
>     wrote:
>
>     > Dear Apache Incubator Community,
>     >
>     > Please accept the following proposal for presentation and discussion:
>     > https://wiki.apache.org/incubator/PLC4XProposal
>     >
>     > PLC4X is aiming at becoming a set of libraries providing a universal
> way to
>     > access industrial programmable logic controllers. While we are
> currently
>     > working
>     > hard on Java implementations, we have other languages on our TODO
> list
>     > (therefore 4X and not 4J)
>     >
>     > Christofer has been provided with the chance to initiate this
> project as
>     > part
>     > of a research project by his company (codecentric). It's caused
> quite a
>     > buzz
>     > internally and a lot of his co-workers have started helping out. But
> they
>     > also
>     > have been able to attract contributors outside of the company. There
> seems
>     > to be
>     > quite an interest in this topic both with commercial companies as
> with
>     > research
>     > institutes and universities.
>     >
>     > Christofer asked me to be both champion and one of the four mentors
> for the
>     > project.  We have several other ASF members involved who have worked
>     > on multiple Apache projects and have a good understanding of the
> Apache
>     > Way.
>     >
>     > If anyone else is interested in this project and wants to be
> involved just
>     > ask
>     > and we’ll be happy to add your name to the proposal.
>     >
>     > = PLC4XProposal =
>     >
>     > == Abstract ==
>     >
>     > PLC4X is intended to become a set of libraries for communicating with
>     > industrial programmable logic controllers (PLCs) using a variety of
>     > protocols
>     > but with a shared API.
>     >
>     > For the most used of these protocols, PLC4X will provide
> implementations of
>     > drivers. Each protocol driver is hereby provided by an individual
> artifact.
>     >
>     > In a first step, we are concentrating on Java but will be hoping to
> be
>     > able to
>     > port implementation to C and other languages.
>     >
>     > == Background ==
>     >
>     > Industrial machines have been controlled by PLCs for more than 30
> years. In
>     > simpler pieces of machinery these may operate autonomously, in more
> complex
>     > ones several to hundreds of these industrial computers communicate
> with
>     > each
>     > other.
>     >
>     > == Rationale ==
>     >
>     > Currently software for communicating with PLCs is mainly proprietary
>     > software
>     > and a whole ecosystem of closed-source solutions exist. Usually this
>     > software
>     > is very expensive and licensing implies a lot of restrictions on its
> usage.
>     > There is a small set of open-source libraries available, but
> unfortunately
>     > most
>     > of these are GPL licensed and hereby disqualify themselves from
> commercial
>     > use.
>     > Most of these are direct ports from C/C++ implementations and
> therefore
>     > inherit
>     > their API. Usually these are implemented blocking socket operations
> and
>     > have
>     > great problems with concurrency. Also, the APIs of these tools differ
>     > quite a
>     > lot, so porting a software from communicating with one type of PLC to
>     > another
>     > sometimes requires re-writing a great part of the software.
>     >
>     > There are multiple rationales behind this project:
>     >
>     >  1. By providing libraries with Apache license, it will be possible
> to
>     > create
>     > commercial applications which access PLCs
>     >  2. By providing a universal API for different protocols, it reduces
> the
>     > vendor
>     > lock-in when creating software
>     >  3. Most of the proprietary commercial solutions are based on Windows
>     > systems,
>     > especially the Siemens solutions, sometimes require maintaining
> un-patched
>     > versions of older Windows version in order to run, this is a huge
> security
>     > risk
>     > (See Stuxnet)
>     >  4. Most of the proprietary commercial solutions don't scale.
> Running them
>     > in
>     > public/private clouds and/or in containers is completely out of the
>     > question.
>     >
>     > As a result of above, it would be possible to start writing secure,
>     > scalable
>     > and reliable software using the full stack of open-source solutions
> and
>     > hereby
>     > open a complete new market for developers. In order to make this even
>     > easier,
>     > we are planning on directly providing adapters and examples for
> using PLC4X
>     > together with other Apache frameworks.
>     >
>     > == Initial Goals ==
>     >
>     > Develop a universal API for accessing industrial programmable logic
>     > controllers
>     > in a protocol-agnostic way. Also implement Java versions of drivers
> for the
>     > most prominent protocols: S7, Modbus and OPC-UA - but not limited to
>     > those. On
>     > the side of the adapters, for existing OS solutions, we are currently
>     > working
>     > on adapters for: Apache Edgent (incubating), Apache Camel and
> eventually
>     > even
>     > Apache Brooklyn.
>     >
>     > Also, we will be providing a Scala wrapper to ease integration of
> PLC4X in
>     > Scala based systems with an API Scala developers should easily adopt.
>     >
>     > As soon as a C version exists, we are planning on providing an Apache
>     > Mynewt
>     > adapter as we see great benefits on this combination.
>     >
>     > == Current Status ==
>     >
>     > === Meritocracy ===
>     >
>     > PLC4X was initially created by Christofer Dutz. He is an Apache
> Member and
>     > also
>     > involved in a variety of Apache and Non-Apache Open-Source projects.
> Being
>     > PMC
>     > of the Apache Flex, Apache Kibble and the Apache Travel Assistance he
>     > definitely knows how Apache works and is a strong advocate of the
> Apache
>     > Way.
>     > He is also currently helping the Apache Edgent project as member of
> the
>     > PPMC.
>     > However, the team working on PLC4X also includes a diverse set of
>     > additional
>     > Apache Committers and Members as well as people, that are not yet
>     > affiliated
>     > with any Apache project. The team working on PLC4X are both working
> for
>     > codecentric as well as other entities, such as commercial companies
> as
>     > well as
>     > universities.
>     >
>     > === Community ===
>     >
>     > Currently the PLC4X community exists out of a set of core developers
>     > working on
>     > a private code repository provided by codecentric (the company
> Christofer
>     > Dutz
>     > is working for). However, the set of developers, working on PLC4X is
> not
>     > limited to codecentric employees as we are also inviting outside
>     > contributors.
>     >
>     > The main reason for using a private repo instead of a public one, is
> that
>     > we
>     > were planning on starting incubation at Apache within a few weeks
> after
>     > initiating the project. Therefore, we wanted to start writing
> everything
>     > with
>     > Apache package names and Apache Maven coordinates. Even our logo is
>     > directly
>     > designed including the Apache Feather and "Apache" inside the name.
> As only
>     > real Apache projects are allowed to use "Apache", we decided to go
> down the
>     > private repository path.
>     >
>     > === Core Developers ===
>     >
>     > (In alphabetical order)
>     >
>     >  * Benedikt Ritter (codecentric) (Apache Member)
>     >  * Christofer Dutz (codecentric) (Apache Member)
>     >  * Dale LaBossiere (IBM) (PPMC Member of the Apache Edgent incubator
>     > podling)
>     >  * Frank Stibane (codecentric)
>     >  * Greg Trasuk (Web Age Solutions) (Apache Member)
>     >  * Justin McLean (External) (Apache Member)
>     >  * Kai Herings (codecentric)
>     >  * Lukas Friedrichsen (Hochschule Bochum)
>     >  * Mark Keinhörster (codecentric)
>     >  * Rolf Felker (codecentric)
>     >  * Sebastian Rühl (codecentric)
>     >
>     > === Alignment ===
>     >
>     > The build system is based on Apache Maven. Also, it uses Apache
> Edgent
>     > (incubating) and Apache Camel libraries for providing adapters to
> these
>     > systems. Being a full-blown Apache enthusiast, for Christofer there
> hasn't
>     > been
>     > any thought in bringing this project into any other collaboration
> platform
>     > or
>     > foundation. This idea is shared by a big majority of the core
> contributors.
>     >
>     > === Project Name ===
>     >
>     > As we know that renaming a codebase can be a huge pain, we have
> invested
>     > quite
>     > a lot of time into finding a suitable name. In the end, we came up
> with a
>     > list
>     > of about 20 project names, which we did the fully required background
>     > checks
>     > for. On the options surviving these checks, we internally voted on
> the
>     > name. It
>     > was a pretty close tie between PLC4J and PLC4X, but we decided to go
> for
>     > the
>     > later as we are planning on providing libraries for multiple
> languages
>     > beyond
>     > Java.
>     >
>     > PLC4X has no registered trademarks that we could find and the only
>     > potential
>     > problem would be a hardware LPT Breakout Board by a Russian Company
> called
>     > Purelogic (https://purelogic.ru/doc/PDF/Controller/PLC4x.pdf)
> English
>     > version
>     > (
> http://www.zappautomation.co.uk/productattachments/index/download?id=99)
>     > But we don't see any problems to arise from this. If there would be
>     > problems,
>     > we would probably fallback to using PLC4J, which had no conflicts at
> all
>     > and
>     > would eventually name our sub-products PLC4S (Scala) and PLC4C
> (C/C++).
>     >
>     > == Known Risks ==
>     >
>     > === Orphaned projects ===
>     >
>     > PLC4X is a new Project, which has just been started. The feedback
> from the
>     > industry has been overwhelming so the risk of the project being
> orphaned is
>     > minimal.
>     >
>     > === Inexperience with Open Source ===
>     >
>     > The set of core developers of this project consists of a large set of
>     > experienced open-source developers, most of these even being Apache
>     > Members.
>     >
>     > === Homogeneous Developers ===
>     >
>     > Even if a big part of the projects initial committer team is
> affiliated
>     > with
>     > codecentric, we have been successful and continuing to be in actively
>     > recruiting people from other commercial and non-commercial entities.
>     >
>     > === Reliance on Salaried Developers ===
>     >
>     > Currently only Christofer Dutz is being paid to work on this project
>     > exclusively.
>     >
>     > === Relationships with Other Apache Products ===
>     >
>     > PLC4X makes great used of Apache Maven for the build system and
> Apache
>     > Commons
>     > for providing a lot of basic functionality.
>     >
>     > Also does it currently have direct relations to the Apache Camel and
> Apache
>     > Edgent projects as it provides modules for direct integration of
> PLC4X into
>     > these frameworks.
>     >
>     > In the future we are planning on also adding such modules for Apache
>     > Brooklyn
>     > and as soon as a C-based version of PLC4X is available Apache Mynewt.
>     >
>     > Currently there is no competing project at the Apache Software
> Foundation.
>     >
>     > === An Excessive Fascination with the Apache Brand ===
>     >
>     > We are certain that PLC4X itself will profit from being an official
> Apache
>     > project, in terms of attracting a community and establishing a solid
> group
>     > of
>     > developers and users, but also to ease the interaction with other
> Apache
>     > projects, used in PLC4X or project PLC4X provides adapters for as
> all will
>     > share the same base.
>     >
>     > Our general belief in the Apache way as well as the reasons mentioned
>     > above are
>     > the main reasons for us to send this proposal. We think that a good
>     > community
>     > is needed to build and maintain good software, such as PLC4X. Also
> do we
>     > need a
>     > big community to support a big variety of systems. However, even if
> PLC4X
>     > would
>     > not be accepted, development would definitely continue elsewhere.
> Apache is
>     > just our primary foundation of choice. As such, there is no need to,
> or
>     > reason
>     > to, "abuse" the Apache Brand.
>     >
>     > === Possibility of legal actions ===
>     >
>     > Some of the protocols are not publicly defined. Existing open-source
>     > implementations contain licensing restrictions. To avoid licensing
> issues
>     > we
>     > made sure the license of information used to implement drivers in
> PLC4X are
>     > compatible with the Apache license and added references to these
> sources
>     > in the
>     > project documentation to prove this. This documentation is part of
> the
>     > codebase. We are therefore not expecting any real problems on this
> side.
>     >
>     > === Test setup could require hardware ===
>     >
>     > A test-suite for PLC4X could involve tests run against virtual or
> real
>     > hardware. It could be problematic to include these in automated
> builds run
>     > on
>     > build.apache.org, but Apache infra have already signaled that there
>     > should be
>     > options to work this out.
>     >
>     > == Documentation ==
>     >
>     > Currently all documentation and information is stored alongside the
> code
>     > in a
>     > private corporate GIT repository and is available as part of the
> website
>     > which
>     > is generated as part of the build.
>     >
>     > == Initial Source ==
>     >
>     > Development of PLC4X started at codecentric in October of 2017. The
> source
>     > currently is located on a private corporate GIT repository. All the
> code is
>     > available at https://gitlab.codecentric.de/iot/plc4x (Accounts can
> be
>     > created
>     > on a request basis)
>     >
>     > == Source and Intellectual Property Submission Plan ==
>     >
>     > PLC4X is currently mainly developed by, but not limited to,
> codecentric
>     > employees. However, all code has been developed completely from
> scratch it
>     > was
>     > ensured from the start that each document is already fully licensed
> under
>     > the
>     > Apache 2.0 license. All source will be donated to Apache without any
>     > exceptions.
>     >
>     > == External Dependencies ==
>     >
>     >  * Apache Commons-IO, Apache License 2.0
>     >  * Apache Edgent, Apache License 2.0
>     >  * Netty, Apache License 2.0
>     >  * Metrics Core, Apache License 2.0
>     >  * Google Gson, Apache License 2.0
>     >
>     > These sources can be included, according to
>     > http://www.apache.org/legal/resolved.html
>     >
>     >  * Logback, EPL 1.0
>     >
>     > This source can NOT be included, according to
>     > http://www.apache.org/legal/resolved.html
>     >
>     > == Cryptography ==
>     >
>     > Not applicable.
>     >
>     > == Required Resources ==
>     >
>     > === Mailing Lists ===
>     >
>     >  * plc4x-dev
>     >  * plc4x-private
>     >
>     > === Git Repository ===
>     >
>     > https://git-wip-us.apache.org/repos/asf/incubator-plc4x.git
>     >
>     > === Issue Tracking ===
>     >
>     > JIRA PLC4X
>     >
>     > === Confluence Wiki ===
>     >
>     > To be able to provide help, documentation, faq etc, a wiki is needed.
>     >
>     > == Initial Committers ==
>     >
>     > (In alphabetical order)
>     >
>     >  * Benedikt Ritter (britter@apache.org)
>     >  * Christofer Dutz (cdutz@apache.org)
>     >  * Dale LaBossiere (dlaboss@apache.org)
>     >  * Frank Stibane (frank.stibane@codecentric.de)
>     >  * Greg Trasuk (gtrasuk@apache.org)
>     >  * Justin McLean (jmclean@apache.org)
>     >  * Kai Herings (kai.herings@codecentric.de)
>     >  * Lukas Friedrichsen (friedrichsen.luk@googlemail.com)
>     >  * Mark Keinhörster (mark.keinhoerster@codecentric.de)
>     >  * Rolf Felker (rolf.felker@codecentric.de)
>     >  * Sebastian Rühl (sebastian.ruehl@codecentric.de)
>     >
>     > == Affiliations ==
>     >
>     > Currently most of the initial committers are employees of
> codecentric.
>     > Currently Christofer Dutz is the only contributor paid to work on
> PLC4X
>     > full-time. The others participate as part of their so-called "+1
> time" (At
>     > codecentric employees get to spend 20% of their time to work on
>     > open-source,
>     > education, etc. and they invest a lot of this time on the project).
>     >
>     > Besides these we also have contributors from companies other than
>     > codecentric
>     > (Dale, Greg, Justin) as well as universities (Lukas).
>     >
>     > == Sponsors ==
>     >
>     > === Champion ===
>     >
>     >  * Justin McLean
>     >
>     > === Nominated Mentors ===
>     >
>     > (In alphabetical order)
>     >
>     >  * Greg Trasuk
>     >  * Justin McLean
>     >  * Luciano Resende
>     >  * Stefan Bodewig
>     >
>     > === Sponsoring Entity ===
>     >
>     > PLC4X is a new project and proposed is to release to code under the
>     > sponsorship
>     > of the Incubator.
>     >
>     > Thanks,
>     > Justin
>     >
>     >
>     > ---------------------------------------------------------------------
>     > To unsubscribe, e-mail: general-unsubscribe@incubator.apache.org
>     > For additional commands, e-mail: general-help@incubator.apache.org
>     >
>     >
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: general-unsubscribe@incubator.apache.org
> For additional commands, e-mail: general-help@incubator.apache.org
>

Re: [PROPOSAL] PLC4X - proposal for Apache Incubation

Posted by Christofer Dutz <ch...@c-ware.de>.
Please let me add a little more information on the project:

We have currently setup the repo and the CI on our companies GitLab server. The site is already publishing the project website at:
https://iot.gitlab.codecentric.de/plc4x/
(As Gitlab adds the prefix of „iot” to the domain-name our currently installed SSL certificate will make the browser complain)

On the site, you can find a little more information on the project as well as see the project logo.

As soon as a VOTE thread is created, I’ll set the code-repo to public readable so you know what you’re voting on.

Chris




Am 10.12.17, 09:15 schrieb "Pierre Smits" <pi...@gmail.com>:

    HI Justin, All,
    
    Great to see this initiative culminating here.
    
    Best regards,
    
    Pierre Smits
    
    ORRTIZ.COM <http://www.orrtiz.com>
    OFBiz based solutions & services
    
    OEM - The OFBiz Extensions Marketplace1
    http://oem.ofbizci.net/oci-2/
    1 not affiliated to (and not endorsed by) the OFBiz project
    
    On Sun, Dec 10, 2017 at 1:10 AM, Justin Mclean <ju...@classsoftware.com>
    wrote:
    
    > Dear Apache Incubator Community,
    >
    > Please accept the following proposal for presentation and discussion:
    > https://wiki.apache.org/incubator/PLC4XProposal
    >
    > PLC4X is aiming at becoming a set of libraries providing a universal way to
    > access industrial programmable logic controllers. While we are currently
    > working
    > hard on Java implementations, we have other languages on our TODO list
    > (therefore 4X and not 4J)
    >
    > Christofer has been provided with the chance to initiate this project as
    > part
    > of a research project by his company (codecentric). It's caused quite a
    > buzz
    > internally and a lot of his co-workers have started helping out. But they
    > also
    > have been able to attract contributors outside of the company. There seems
    > to be
    > quite an interest in this topic both with commercial companies as with
    > research
    > institutes and universities.
    >
    > Christofer asked me to be both champion and one of the four mentors for the
    > project.  We have several other ASF members involved who have worked
    > on multiple Apache projects and have a good understanding of the Apache
    > Way.
    >
    > If anyone else is interested in this project and wants to be involved just
    > ask
    > and we’ll be happy to add your name to the proposal.
    >
    > = PLC4XProposal =
    >
    > == Abstract ==
    >
    > PLC4X is intended to become a set of libraries for communicating with
    > industrial programmable logic controllers (PLCs) using a variety of
    > protocols
    > but with a shared API.
    >
    > For the most used of these protocols, PLC4X will provide implementations of
    > drivers. Each protocol driver is hereby provided by an individual artifact.
    >
    > In a first step, we are concentrating on Java but will be hoping to be
    > able to
    > port implementation to C and other languages.
    >
    > == Background ==
    >
    > Industrial machines have been controlled by PLCs for more than 30 years. In
    > simpler pieces of machinery these may operate autonomously, in more complex
    > ones several to hundreds of these industrial computers communicate with
    > each
    > other.
    >
    > == Rationale ==
    >
    > Currently software for communicating with PLCs is mainly proprietary
    > software
    > and a whole ecosystem of closed-source solutions exist. Usually this
    > software
    > is very expensive and licensing implies a lot of restrictions on its usage.
    > There is a small set of open-source libraries available, but unfortunately
    > most
    > of these are GPL licensed and hereby disqualify themselves from commercial
    > use.
    > Most of these are direct ports from C/C++ implementations and therefore
    > inherit
    > their API. Usually these are implemented blocking socket operations and
    > have
    > great problems with concurrency. Also, the APIs of these tools differ
    > quite a
    > lot, so porting a software from communicating with one type of PLC to
    > another
    > sometimes requires re-writing a great part of the software.
    >
    > There are multiple rationales behind this project:
    >
    >  1. By providing libraries with Apache license, it will be possible to
    > create
    > commercial applications which access PLCs
    >  2. By providing a universal API for different protocols, it reduces the
    > vendor
    > lock-in when creating software
    >  3. Most of the proprietary commercial solutions are based on Windows
    > systems,
    > especially the Siemens solutions, sometimes require maintaining un-patched
    > versions of older Windows version in order to run, this is a huge security
    > risk
    > (See Stuxnet)
    >  4. Most of the proprietary commercial solutions don't scale. Running them
    > in
    > public/private clouds and/or in containers is completely out of the
    > question.
    >
    > As a result of above, it would be possible to start writing secure,
    > scalable
    > and reliable software using the full stack of open-source solutions and
    > hereby
    > open a complete new market for developers. In order to make this even
    > easier,
    > we are planning on directly providing adapters and examples for using PLC4X
    > together with other Apache frameworks.
    >
    > == Initial Goals ==
    >
    > Develop a universal API for accessing industrial programmable logic
    > controllers
    > in a protocol-agnostic way. Also implement Java versions of drivers for the
    > most prominent protocols: S7, Modbus and OPC-UA - but not limited to
    > those. On
    > the side of the adapters, for existing OS solutions, we are currently
    > working
    > on adapters for: Apache Edgent (incubating), Apache Camel and eventually
    > even
    > Apache Brooklyn.
    >
    > Also, we will be providing a Scala wrapper to ease integration of PLC4X in
    > Scala based systems with an API Scala developers should easily adopt.
    >
    > As soon as a C version exists, we are planning on providing an Apache
    > Mynewt
    > adapter as we see great benefits on this combination.
    >
    > == Current Status ==
    >
    > === Meritocracy ===
    >
    > PLC4X was initially created by Christofer Dutz. He is an Apache Member and
    > also
    > involved in a variety of Apache and Non-Apache Open-Source projects. Being
    > PMC
    > of the Apache Flex, Apache Kibble and the Apache Travel Assistance he
    > definitely knows how Apache works and is a strong advocate of the Apache
    > Way.
    > He is also currently helping the Apache Edgent project as member of the
    > PPMC.
    > However, the team working on PLC4X also includes a diverse set of
    > additional
    > Apache Committers and Members as well as people, that are not yet
    > affiliated
    > with any Apache project. The team working on PLC4X are both working for
    > codecentric as well as other entities, such as commercial companies as
    > well as
    > universities.
    >
    > === Community ===
    >
    > Currently the PLC4X community exists out of a set of core developers
    > working on
    > a private code repository provided by codecentric (the company Christofer
    > Dutz
    > is working for). However, the set of developers, working on PLC4X is not
    > limited to codecentric employees as we are also inviting outside
    > contributors.
    >
    > The main reason for using a private repo instead of a public one, is that
    > we
    > were planning on starting incubation at Apache within a few weeks after
    > initiating the project. Therefore, we wanted to start writing everything
    > with
    > Apache package names and Apache Maven coordinates. Even our logo is
    > directly
    > designed including the Apache Feather and "Apache" inside the name. As only
    > real Apache projects are allowed to use "Apache", we decided to go down the
    > private repository path.
    >
    > === Core Developers ===
    >
    > (In alphabetical order)
    >
    >  * Benedikt Ritter (codecentric) (Apache Member)
    >  * Christofer Dutz (codecentric) (Apache Member)
    >  * Dale LaBossiere (IBM) (PPMC Member of the Apache Edgent incubator
    > podling)
    >  * Frank Stibane (codecentric)
    >  * Greg Trasuk (Web Age Solutions) (Apache Member)
    >  * Justin McLean (External) (Apache Member)
    >  * Kai Herings (codecentric)
    >  * Lukas Friedrichsen (Hochschule Bochum)
    >  * Mark Keinhörster (codecentric)
    >  * Rolf Felker (codecentric)
    >  * Sebastian Rühl (codecentric)
    >
    > === Alignment ===
    >
    > The build system is based on Apache Maven. Also, it uses Apache Edgent
    > (incubating) and Apache Camel libraries for providing adapters to these
    > systems. Being a full-blown Apache enthusiast, for Christofer there hasn't
    > been
    > any thought in bringing this project into any other collaboration platform
    > or
    > foundation. This idea is shared by a big majority of the core contributors.
    >
    > === Project Name ===
    >
    > As we know that renaming a codebase can be a huge pain, we have invested
    > quite
    > a lot of time into finding a suitable name. In the end, we came up with a
    > list
    > of about 20 project names, which we did the fully required background
    > checks
    > for. On the options surviving these checks, we internally voted on the
    > name. It
    > was a pretty close tie between PLC4J and PLC4X, but we decided to go for
    > the
    > later as we are planning on providing libraries for multiple languages
    > beyond
    > Java.
    >
    > PLC4X has no registered trademarks that we could find and the only
    > potential
    > problem would be a hardware LPT Breakout Board by a Russian Company called
    > Purelogic (https://purelogic.ru/doc/PDF/Controller/PLC4x.pdf) English
    > version
    > (http://www.zappautomation.co.uk/productattachments/index/download?id=99)
    > But we don't see any problems to arise from this. If there would be
    > problems,
    > we would probably fallback to using PLC4J, which had no conflicts at all
    > and
    > would eventually name our sub-products PLC4S (Scala) and PLC4C (C/C++).
    >
    > == Known Risks ==
    >
    > === Orphaned projects ===
    >
    > PLC4X is a new Project, which has just been started. The feedback from the
    > industry has been overwhelming so the risk of the project being orphaned is
    > minimal.
    >
    > === Inexperience with Open Source ===
    >
    > The set of core developers of this project consists of a large set of
    > experienced open-source developers, most of these even being Apache
    > Members.
    >
    > === Homogeneous Developers ===
    >
    > Even if a big part of the projects initial committer team is affiliated
    > with
    > codecentric, we have been successful and continuing to be in actively
    > recruiting people from other commercial and non-commercial entities.
    >
    > === Reliance on Salaried Developers ===
    >
    > Currently only Christofer Dutz is being paid to work on this project
    > exclusively.
    >
    > === Relationships with Other Apache Products ===
    >
    > PLC4X makes great used of Apache Maven for the build system and Apache
    > Commons
    > for providing a lot of basic functionality.
    >
    > Also does it currently have direct relations to the Apache Camel and Apache
    > Edgent projects as it provides modules for direct integration of PLC4X into
    > these frameworks.
    >
    > In the future we are planning on also adding such modules for Apache
    > Brooklyn
    > and as soon as a C-based version of PLC4X is available Apache Mynewt.
    >
    > Currently there is no competing project at the Apache Software Foundation.
    >
    > === An Excessive Fascination with the Apache Brand ===
    >
    > We are certain that PLC4X itself will profit from being an official Apache
    > project, in terms of attracting a community and establishing a solid group
    > of
    > developers and users, but also to ease the interaction with other Apache
    > projects, used in PLC4X or project PLC4X provides adapters for as all will
    > share the same base.
    >
    > Our general belief in the Apache way as well as the reasons mentioned
    > above are
    > the main reasons for us to send this proposal. We think that a good
    > community
    > is needed to build and maintain good software, such as PLC4X. Also do we
    > need a
    > big community to support a big variety of systems. However, even if PLC4X
    > would
    > not be accepted, development would definitely continue elsewhere. Apache is
    > just our primary foundation of choice. As such, there is no need to, or
    > reason
    > to, "abuse" the Apache Brand.
    >
    > === Possibility of legal actions ===
    >
    > Some of the protocols are not publicly defined. Existing open-source
    > implementations contain licensing restrictions. To avoid licensing issues
    > we
    > made sure the license of information used to implement drivers in PLC4X are
    > compatible with the Apache license and added references to these sources
    > in the
    > project documentation to prove this. This documentation is part of the
    > codebase. We are therefore not expecting any real problems on this side.
    >
    > === Test setup could require hardware ===
    >
    > A test-suite for PLC4X could involve tests run against virtual or real
    > hardware. It could be problematic to include these in automated builds run
    > on
    > build.apache.org, but Apache infra have already signaled that there
    > should be
    > options to work this out.
    >
    > == Documentation ==
    >
    > Currently all documentation and information is stored alongside the code
    > in a
    > private corporate GIT repository and is available as part of the website
    > which
    > is generated as part of the build.
    >
    > == Initial Source ==
    >
    > Development of PLC4X started at codecentric in October of 2017. The source
    > currently is located on a private corporate GIT repository. All the code is
    > available at https://gitlab.codecentric.de/iot/plc4x (Accounts can be
    > created
    > on a request basis)
    >
    > == Source and Intellectual Property Submission Plan ==
    >
    > PLC4X is currently mainly developed by, but not limited to, codecentric
    > employees. However, all code has been developed completely from scratch it
    > was
    > ensured from the start that each document is already fully licensed under
    > the
    > Apache 2.0 license. All source will be donated to Apache without any
    > exceptions.
    >
    > == External Dependencies ==
    >
    >  * Apache Commons-IO, Apache License 2.0
    >  * Apache Edgent, Apache License 2.0
    >  * Netty, Apache License 2.0
    >  * Metrics Core, Apache License 2.0
    >  * Google Gson, Apache License 2.0
    >
    > These sources can be included, according to
    > http://www.apache.org/legal/resolved.html
    >
    >  * Logback, EPL 1.0
    >
    > This source can NOT be included, according to
    > http://www.apache.org/legal/resolved.html
    >
    > == Cryptography ==
    >
    > Not applicable.
    >
    > == Required Resources ==
    >
    > === Mailing Lists ===
    >
    >  * plc4x-dev
    >  * plc4x-private
    >
    > === Git Repository ===
    >
    > https://git-wip-us.apache.org/repos/asf/incubator-plc4x.git
    >
    > === Issue Tracking ===
    >
    > JIRA PLC4X
    >
    > === Confluence Wiki ===
    >
    > To be able to provide help, documentation, faq etc, a wiki is needed.
    >
    > == Initial Committers ==
    >
    > (In alphabetical order)
    >
    >  * Benedikt Ritter (britter@apache.org)
    >  * Christofer Dutz (cdutz@apache.org)
    >  * Dale LaBossiere (dlaboss@apache.org)
    >  * Frank Stibane (frank.stibane@codecentric.de)
    >  * Greg Trasuk (gtrasuk@apache.org)
    >  * Justin McLean (jmclean@apache.org)
    >  * Kai Herings (kai.herings@codecentric.de)
    >  * Lukas Friedrichsen (friedrichsen.luk@googlemail.com)
    >  * Mark Keinhörster (mark.keinhoerster@codecentric.de)
    >  * Rolf Felker (rolf.felker@codecentric.de)
    >  * Sebastian Rühl (sebastian.ruehl@codecentric.de)
    >
    > == Affiliations ==
    >
    > Currently most of the initial committers are employees of codecentric.
    > Currently Christofer Dutz is the only contributor paid to work on PLC4X
    > full-time. The others participate as part of their so-called "+1 time" (At
    > codecentric employees get to spend 20% of their time to work on
    > open-source,
    > education, etc. and they invest a lot of this time on the project).
    >
    > Besides these we also have contributors from companies other than
    > codecentric
    > (Dale, Greg, Justin) as well as universities (Lukas).
    >
    > == Sponsors ==
    >
    > === Champion ===
    >
    >  * Justin McLean
    >
    > === Nominated Mentors ===
    >
    > (In alphabetical order)
    >
    >  * Greg Trasuk
    >  * Justin McLean
    >  * Luciano Resende
    >  * Stefan Bodewig
    >
    > === Sponsoring Entity ===
    >
    > PLC4X is a new project and proposed is to release to code under the
    > sponsorship
    > of the Incubator.
    >
    > Thanks,
    > Justin
    >
    >
    > ---------------------------------------------------------------------
    > To unsubscribe, e-mail: general-unsubscribe@incubator.apache.org
    > For additional commands, e-mail: general-help@incubator.apache.org
    >
    >
    


---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@incubator.apache.org
For additional commands, e-mail: general-help@incubator.apache.org

Re: [PROPOSAL] PLC4X - proposal for Apache Incubation

Posted by Pierre Smits <pi...@gmail.com>.
HI Justin, All,

Great to see this initiative culminating here.

Best regards,

Pierre Smits

ORRTIZ.COM <http://www.orrtiz.com>
OFBiz based solutions & services

OEM - The OFBiz Extensions Marketplace1
http://oem.ofbizci.net/oci-2/
1 not affiliated to (and not endorsed by) the OFBiz project

On Sun, Dec 10, 2017 at 1:10 AM, Justin Mclean <ju...@classsoftware.com>
wrote:

> Dear Apache Incubator Community,
>
> Please accept the following proposal for presentation and discussion:
> https://wiki.apache.org/incubator/PLC4XProposal
>
> PLC4X is aiming at becoming a set of libraries providing a universal way to
> access industrial programmable logic controllers. While we are currently
> working
> hard on Java implementations, we have other languages on our TODO list
> (therefore 4X and not 4J)
>
> Christofer has been provided with the chance to initiate this project as
> part
> of a research project by his company (codecentric). It's caused quite a
> buzz
> internally and a lot of his co-workers have started helping out. But they
> also
> have been able to attract contributors outside of the company. There seems
> to be
> quite an interest in this topic both with commercial companies as with
> research
> institutes and universities.
>
> Christofer asked me to be both champion and one of the four mentors for the
> project.  We have several other ASF members involved who have worked
> on multiple Apache projects and have a good understanding of the Apache
> Way.
>
> If anyone else is interested in this project and wants to be involved just
> ask
> and we’ll be happy to add your name to the proposal.
>
> = PLC4XProposal =
>
> == Abstract ==
>
> PLC4X is intended to become a set of libraries for communicating with
> industrial programmable logic controllers (PLCs) using a variety of
> protocols
> but with a shared API.
>
> For the most used of these protocols, PLC4X will provide implementations of
> drivers. Each protocol driver is hereby provided by an individual artifact.
>
> In a first step, we are concentrating on Java but will be hoping to be
> able to
> port implementation to C and other languages.
>
> == Background ==
>
> Industrial machines have been controlled by PLCs for more than 30 years. In
> simpler pieces of machinery these may operate autonomously, in more complex
> ones several to hundreds of these industrial computers communicate with
> each
> other.
>
> == Rationale ==
>
> Currently software for communicating with PLCs is mainly proprietary
> software
> and a whole ecosystem of closed-source solutions exist. Usually this
> software
> is very expensive and licensing implies a lot of restrictions on its usage.
> There is a small set of open-source libraries available, but unfortunately
> most
> of these are GPL licensed and hereby disqualify themselves from commercial
> use.
> Most of these are direct ports from C/C++ implementations and therefore
> inherit
> their API. Usually these are implemented blocking socket operations and
> have
> great problems with concurrency. Also, the APIs of these tools differ
> quite a
> lot, so porting a software from communicating with one type of PLC to
> another
> sometimes requires re-writing a great part of the software.
>
> There are multiple rationales behind this project:
>
>  1. By providing libraries with Apache license, it will be possible to
> create
> commercial applications which access PLCs
>  2. By providing a universal API for different protocols, it reduces the
> vendor
> lock-in when creating software
>  3. Most of the proprietary commercial solutions are based on Windows
> systems,
> especially the Siemens solutions, sometimes require maintaining un-patched
> versions of older Windows version in order to run, this is a huge security
> risk
> (See Stuxnet)
>  4. Most of the proprietary commercial solutions don't scale. Running them
> in
> public/private clouds and/or in containers is completely out of the
> question.
>
> As a result of above, it would be possible to start writing secure,
> scalable
> and reliable software using the full stack of open-source solutions and
> hereby
> open a complete new market for developers. In order to make this even
> easier,
> we are planning on directly providing adapters and examples for using PLC4X
> together with other Apache frameworks.
>
> == Initial Goals ==
>
> Develop a universal API for accessing industrial programmable logic
> controllers
> in a protocol-agnostic way. Also implement Java versions of drivers for the
> most prominent protocols: S7, Modbus and OPC-UA - but not limited to
> those. On
> the side of the adapters, for existing OS solutions, we are currently
> working
> on adapters for: Apache Edgent (incubating), Apache Camel and eventually
> even
> Apache Brooklyn.
>
> Also, we will be providing a Scala wrapper to ease integration of PLC4X in
> Scala based systems with an API Scala developers should easily adopt.
>
> As soon as a C version exists, we are planning on providing an Apache
> Mynewt
> adapter as we see great benefits on this combination.
>
> == Current Status ==
>
> === Meritocracy ===
>
> PLC4X was initially created by Christofer Dutz. He is an Apache Member and
> also
> involved in a variety of Apache and Non-Apache Open-Source projects. Being
> PMC
> of the Apache Flex, Apache Kibble and the Apache Travel Assistance he
> definitely knows how Apache works and is a strong advocate of the Apache
> Way.
> He is also currently helping the Apache Edgent project as member of the
> PPMC.
> However, the team working on PLC4X also includes a diverse set of
> additional
> Apache Committers and Members as well as people, that are not yet
> affiliated
> with any Apache project. The team working on PLC4X are both working for
> codecentric as well as other entities, such as commercial companies as
> well as
> universities.
>
> === Community ===
>
> Currently the PLC4X community exists out of a set of core developers
> working on
> a private code repository provided by codecentric (the company Christofer
> Dutz
> is working for). However, the set of developers, working on PLC4X is not
> limited to codecentric employees as we are also inviting outside
> contributors.
>
> The main reason for using a private repo instead of a public one, is that
> we
> were planning on starting incubation at Apache within a few weeks after
> initiating the project. Therefore, we wanted to start writing everything
> with
> Apache package names and Apache Maven coordinates. Even our logo is
> directly
> designed including the Apache Feather and "Apache" inside the name. As only
> real Apache projects are allowed to use "Apache", we decided to go down the
> private repository path.
>
> === Core Developers ===
>
> (In alphabetical order)
>
>  * Benedikt Ritter (codecentric) (Apache Member)
>  * Christofer Dutz (codecentric) (Apache Member)
>  * Dale LaBossiere (IBM) (PPMC Member of the Apache Edgent incubator
> podling)
>  * Frank Stibane (codecentric)
>  * Greg Trasuk (Web Age Solutions) (Apache Member)
>  * Justin McLean (External) (Apache Member)
>  * Kai Herings (codecentric)
>  * Lukas Friedrichsen (Hochschule Bochum)
>  * Mark Keinhörster (codecentric)
>  * Rolf Felker (codecentric)
>  * Sebastian Rühl (codecentric)
>
> === Alignment ===
>
> The build system is based on Apache Maven. Also, it uses Apache Edgent
> (incubating) and Apache Camel libraries for providing adapters to these
> systems. Being a full-blown Apache enthusiast, for Christofer there hasn't
> been
> any thought in bringing this project into any other collaboration platform
> or
> foundation. This idea is shared by a big majority of the core contributors.
>
> === Project Name ===
>
> As we know that renaming a codebase can be a huge pain, we have invested
> quite
> a lot of time into finding a suitable name. In the end, we came up with a
> list
> of about 20 project names, which we did the fully required background
> checks
> for. On the options surviving these checks, we internally voted on the
> name. It
> was a pretty close tie between PLC4J and PLC4X, but we decided to go for
> the
> later as we are planning on providing libraries for multiple languages
> beyond
> Java.
>
> PLC4X has no registered trademarks that we could find and the only
> potential
> problem would be a hardware LPT Breakout Board by a Russian Company called
> Purelogic (https://purelogic.ru/doc/PDF/Controller/PLC4x.pdf) English
> version
> (http://www.zappautomation.co.uk/productattachments/index/download?id=99)
> But we don't see any problems to arise from this. If there would be
> problems,
> we would probably fallback to using PLC4J, which had no conflicts at all
> and
> would eventually name our sub-products PLC4S (Scala) and PLC4C (C/C++).
>
> == Known Risks ==
>
> === Orphaned projects ===
>
> PLC4X is a new Project, which has just been started. The feedback from the
> industry has been overwhelming so the risk of the project being orphaned is
> minimal.
>
> === Inexperience with Open Source ===
>
> The set of core developers of this project consists of a large set of
> experienced open-source developers, most of these even being Apache
> Members.
>
> === Homogeneous Developers ===
>
> Even if a big part of the projects initial committer team is affiliated
> with
> codecentric, we have been successful and continuing to be in actively
> recruiting people from other commercial and non-commercial entities.
>
> === Reliance on Salaried Developers ===
>
> Currently only Christofer Dutz is being paid to work on this project
> exclusively.
>
> === Relationships with Other Apache Products ===
>
> PLC4X makes great used of Apache Maven for the build system and Apache
> Commons
> for providing a lot of basic functionality.
>
> Also does it currently have direct relations to the Apache Camel and Apache
> Edgent projects as it provides modules for direct integration of PLC4X into
> these frameworks.
>
> In the future we are planning on also adding such modules for Apache
> Brooklyn
> and as soon as a C-based version of PLC4X is available Apache Mynewt.
>
> Currently there is no competing project at the Apache Software Foundation.
>
> === An Excessive Fascination with the Apache Brand ===
>
> We are certain that PLC4X itself will profit from being an official Apache
> project, in terms of attracting a community and establishing a solid group
> of
> developers and users, but also to ease the interaction with other Apache
> projects, used in PLC4X or project PLC4X provides adapters for as all will
> share the same base.
>
> Our general belief in the Apache way as well as the reasons mentioned
> above are
> the main reasons for us to send this proposal. We think that a good
> community
> is needed to build and maintain good software, such as PLC4X. Also do we
> need a
> big community to support a big variety of systems. However, even if PLC4X
> would
> not be accepted, development would definitely continue elsewhere. Apache is
> just our primary foundation of choice. As such, there is no need to, or
> reason
> to, "abuse" the Apache Brand.
>
> === Possibility of legal actions ===
>
> Some of the protocols are not publicly defined. Existing open-source
> implementations contain licensing restrictions. To avoid licensing issues
> we
> made sure the license of information used to implement drivers in PLC4X are
> compatible with the Apache license and added references to these sources
> in the
> project documentation to prove this. This documentation is part of the
> codebase. We are therefore not expecting any real problems on this side.
>
> === Test setup could require hardware ===
>
> A test-suite for PLC4X could involve tests run against virtual or real
> hardware. It could be problematic to include these in automated builds run
> on
> build.apache.org, but Apache infra have already signaled that there
> should be
> options to work this out.
>
> == Documentation ==
>
> Currently all documentation and information is stored alongside the code
> in a
> private corporate GIT repository and is available as part of the website
> which
> is generated as part of the build.
>
> == Initial Source ==
>
> Development of PLC4X started at codecentric in October of 2017. The source
> currently is located on a private corporate GIT repository. All the code is
> available at https://gitlab.codecentric.de/iot/plc4x (Accounts can be
> created
> on a request basis)
>
> == Source and Intellectual Property Submission Plan ==
>
> PLC4X is currently mainly developed by, but not limited to, codecentric
> employees. However, all code has been developed completely from scratch it
> was
> ensured from the start that each document is already fully licensed under
> the
> Apache 2.0 license. All source will be donated to Apache without any
> exceptions.
>
> == External Dependencies ==
>
>  * Apache Commons-IO, Apache License 2.0
>  * Apache Edgent, Apache License 2.0
>  * Netty, Apache License 2.0
>  * Metrics Core, Apache License 2.0
>  * Google Gson, Apache License 2.0
>
> These sources can be included, according to
> http://www.apache.org/legal/resolved.html
>
>  * Logback, EPL 1.0
>
> This source can NOT be included, according to
> http://www.apache.org/legal/resolved.html
>
> == Cryptography ==
>
> Not applicable.
>
> == Required Resources ==
>
> === Mailing Lists ===
>
>  * plc4x-dev
>  * plc4x-private
>
> === Git Repository ===
>
> https://git-wip-us.apache.org/repos/asf/incubator-plc4x.git
>
> === Issue Tracking ===
>
> JIRA PLC4X
>
> === Confluence Wiki ===
>
> To be able to provide help, documentation, faq etc, a wiki is needed.
>
> == Initial Committers ==
>
> (In alphabetical order)
>
>  * Benedikt Ritter (britter@apache.org)
>  * Christofer Dutz (cdutz@apache.org)
>  * Dale LaBossiere (dlaboss@apache.org)
>  * Frank Stibane (frank.stibane@codecentric.de)
>  * Greg Trasuk (gtrasuk@apache.org)
>  * Justin McLean (jmclean@apache.org)
>  * Kai Herings (kai.herings@codecentric.de)
>  * Lukas Friedrichsen (friedrichsen.luk@googlemail.com)
>  * Mark Keinhörster (mark.keinhoerster@codecentric.de)
>  * Rolf Felker (rolf.felker@codecentric.de)
>  * Sebastian Rühl (sebastian.ruehl@codecentric.de)
>
> == Affiliations ==
>
> Currently most of the initial committers are employees of codecentric.
> Currently Christofer Dutz is the only contributor paid to work on PLC4X
> full-time. The others participate as part of their so-called "+1 time" (At
> codecentric employees get to spend 20% of their time to work on
> open-source,
> education, etc. and they invest a lot of this time on the project).
>
> Besides these we also have contributors from companies other than
> codecentric
> (Dale, Greg, Justin) as well as universities (Lukas).
>
> == Sponsors ==
>
> === Champion ===
>
>  * Justin McLean
>
> === Nominated Mentors ===
>
> (In alphabetical order)
>
>  * Greg Trasuk
>  * Justin McLean
>  * Luciano Resende
>  * Stefan Bodewig
>
> === Sponsoring Entity ===
>
> PLC4X is a new project and proposed is to release to code under the
> sponsorship
> of the Incubator.
>
> Thanks,
> Justin
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: general-unsubscribe@incubator.apache.org
> For additional commands, e-mail: general-help@incubator.apache.org
>
>