On Mon, Dec 11, 2017 at 6:46 AM Christofer Dutz <[email protected]> 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" <[email protected]>: > > 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 < > [email protected]> > 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 ([email protected]) > > * Christofer Dutz ([email protected]) > > * Dale LaBossiere ([email protected]) > > * Frank Stibane ([email protected]) > > * Greg Trasuk ([email protected]) > > * Justin McLean ([email protected]) > > * Kai Herings ([email protected]) > > * Lukas Friedrichsen ([email protected]) > > * Mark Keinhörster ([email protected]) > > * Rolf Felker ([email protected]) > > * Sebastian Rühl ([email protected]) > > > > == 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: [email protected] > > For additional commands, e-mail: [email protected] > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] >
