+1 (binding) Greg Trasuk
> On Dec 14, 2017, at 10:55 PM, Sergio Fernández <wik...@apache.org> wrote: > > +1 (binding) > > On Dec 14, 2017 15:19, "Justin Mclean" <jus...@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 (brit...@apache.org) >> * Christofer Dutz (cd...@apache.org) >> * Dale LaBossiere (dlab...@apache.org) >> * Frank Stibane (frank.stib...@codecentric.de) >> * Greg Trasuk (gtra...@apache.org) >> * Justin McLean (jmcl...@apache.org) >> * Kai Herings (kai.heri...@codecentric.de) >> * Lukas Friedrichsen (friedrichsen....@googlemail.com) >> * Mark Keinhörster (mark.keinhoers...@codecentric.de) >> * Rolf Felker (rolf.fel...@codecentric.de) >> * Sebastian Rühl (sebastian.ru...@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-unsubscr...@incubator.apache.org For additional commands, e-mail: general-h...@incubator.apache.org