incubator-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Greg Trasuk <tras...@stratuscom.com>
Subject Re: [VOTE] Accept PLC4X into the Apache Incubator
Date Fri, 15 Dec 2017 05:27:03 GMT
+1 (binding)

Greg Trasuk

> On Dec 14, 2017, at 10:55 PM, Sergio Fernández <wikier@apache.org> wrote:
> 
> +1 (binding)
> 
> On Dec 14, 2017 15:19, "Justin Mclean" <justin@classsoftware.com> wrote:
> 
>> Hi All,
>> 
>> I would like to start a VOTE to propose the PLC4X project as a podling
>> into the Apache incubator.
>> 
>> The ASF voting rules are described:
>> 
>> https://www.apache.org/foundation/voting.html <https://www.apache.org/
>> foundation/voting.html>
>> 
>> A vote for accepting a new Apache Incubator podling is a majority vote for
>> which only Incubator PMC member votes are binding.
>> 
>> This vote will run for at least 72 hours. Please VOTE as follows
>> [] +1 Accept PLC4X into the Apache Incubator
>> [] +0 Abstain.
>> [] -1 Do not accept PLC4X into the Apache Incubator because ...
>> 
>> The proposal is listed below, but you can view it on the wiki:
>> https://wiki.apache.org/incubator/PLC4XProposal
>> 
>> = 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://gitbox.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 Mclean


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


Mime
View raw message