incubator-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Pierre Smits <pierre.sm...@gmail.com>
Subject Re: [PROPOSAL] PLC4X - proposal for Apache Incubation
Date Sun, 10 Dec 2017 08:15:14 GMT
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
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message