Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id BF5D3200D59 for ; Sun, 10 Dec 2017 09:15:32 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id BDDFB160C09; Sun, 10 Dec 2017 08:15:32 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 8C8B7160C00 for ; Sun, 10 Dec 2017 09:15:31 +0100 (CET) Received: (qmail 1585 invoked by uid 500); 10 Dec 2017 08:15:30 -0000 Mailing-List: contact general-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: general@incubator.apache.org Delivered-To: mailing list general@incubator.apache.org Received: (qmail 1573 invoked by uid 99); 10 Dec 2017 08:15:29 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 10 Dec 2017 08:15:29 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id 8211A1A02A4 for ; Sun, 10 Dec 2017 08:15:29 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.879 X-Spam-Level: * X-Spam-Status: No, score=1.879 tagged_above=-999 required=6.31 tests=[DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=2, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_PASS=-0.001] autolearn=disabled Authentication-Results: spamd2-us-west.apache.org (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.com Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id V6ocK0QnF1bp for ; Sun, 10 Dec 2017 08:15:23 +0000 (UTC) Received: from mail-vk0-f46.google.com (mail-vk0-f46.google.com [209.85.213.46]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with ESMTPS id B79B45F296 for ; Sun, 10 Dec 2017 08:15:22 +0000 (UTC) Received: by mail-vk0-f46.google.com with SMTP id f73so9182906vki.3 for ; Sun, 10 Dec 2017 00:15:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=QUspK/fu8a6pC3fMJsM0FiZ4szsRyo4VMgSkIlDmdfo=; b=lByyFlPhCz8X/aPBrnqupGzzC4hxGo9/pndwmJv9sEryoH9hQlr2M3rCQ0BQH1C62W CHH5xFdFHWwCqbf2GDk4F21xroNAVkQ7PuILVdHlFe6wfdRa1bum8pNgVUcrYsq1CK97 7DbJnJ0dLkDGvfi+bb64JHz6E0qmHDHLpHx1vtAc8ZCOtMNGrc9m3hmCyzRMqEd2KIjs FwWWU6ruC/+wf9AzicK7OGUMC7wMnyZ+JWenVvMUFr43Ph6owaiQiqNt/2rqMXoFt56s gXjDiSH3VuNz3m5qbW1rNnhsQd/Wq+Y/dWFuvGiTHVHO7xUiWmuvDEGQpIzJVR597SIk Uckg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=QUspK/fu8a6pC3fMJsM0FiZ4szsRyo4VMgSkIlDmdfo=; b=M5rrMIHEVlVjhO4jANj8VxpDONnSy6V3lfhb+lZwRlwSKgn02v0uiemGjeWzqZQ9oe cpSWhp1bPoRPX7Y/t+w+mOg2pbONx2FJty/CvAmZ/vr9BTXCmQwlygombyvUcj5+WpI1 Qr+QVm7oQ8wjbhdngnS7OcT78W9YWXlwVUEvyJLPZu939ZlkMqkrNmBDOQ+EWff8RluR PxFVMkZxLT/iNSwr5WIUcg+988EOVDCsMIxAaYIJr/NsY+hcreXofki7Nh0fzDLMiTw/ 68smyWuwku6DUQRKU1riMFurF2CvHmY0WnqVKCSQYSRZPmyHpicBhnJUp5KFlhSwtws4 VrVw== X-Gm-Message-State: AKGB3mLg65NZdCbkXge0J2haECrnekk83DQchtP6UUNA1ND0XANKXMK9 m3VMDLFpr5teZ3udytXV4ckxYahAYsnj4RC3brM= X-Google-Smtp-Source: AGs4zMbn3wrEactVn/tx915lL/c7fJDiMLRj06zFOr+Ny1q5un7F/mp/irTP3U2aDpMgPrlTJLJrqKVkmt+8vm0AGEU= X-Received: by 10.31.86.199 with SMTP id k190mr21279829vkb.19.1512893715270; Sun, 10 Dec 2017 00:15:15 -0800 (PST) MIME-Version: 1.0 Received: by 10.176.80.20 with HTTP; Sun, 10 Dec 2017 00:15:14 -0800 (PST) In-Reply-To: References: From: Pierre Smits Date: Sun, 10 Dec 2017 09:15:14 +0100 Message-ID: Subject: Re: [PROPOSAL] PLC4X - proposal for Apache Incubation To: general@incubator.apache.org Content-Type: multipart/alternative; boundary="001a114e56b27b5309055ff804cf" archived-at: Sun, 10 Dec 2017 08:15:32 -0000 --001a114e56b27b5309055ff804cf Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable HI Justin, All, Great to see this initiative culminating here. Best regards, Pierre Smits 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 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 seem= s > 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 t= he > 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 jus= t > ask > and we=E2=80=99ll be happy to add your name to the proposal. > > =3D PLC4XProposal =3D > > =3D=3D Abstract =3D=3D > > 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 artifac= t. > > In a first step, we are concentrating on Java but will be hoping to be > able to > port implementation to C and other languages. > > =3D=3D Background =3D=3D > > Industrial machines have been controlled by PLCs for more than 30 years. = In > simpler pieces of machinery these may operate autonomously, in more compl= ex > ones several to hundreds of these industrial computers communicate with > each > other. > > =3D=3D Rationale =3D=3D > > 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 usag= e. > There is a small set of open-source libraries available, but unfortunatel= y > most > of these are GPL licensed and hereby disqualify themselves from commercia= l > 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-patche= d > versions of older Windows version in order to run, this is a huge securit= y > risk > (See Stuxnet) > 4. Most of the proprietary commercial solutions don't scale. Running the= m > 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 PLC= 4X > together with other Apache frameworks. > > =3D=3D Initial Goals =3D=3D > > Develop a universal API for accessing industrial programmable logic > controllers > in a protocol-agnostic way. Also implement Java versions of drivers for t= he > 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 i= n > 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. > > =3D=3D Current Status =3D=3D > > =3D=3D=3D Meritocracy =3D=3D=3D > > PLC4X was initially created by Christofer Dutz. He is an Apache Member an= d > also > involved in a variety of Apache and Non-Apache Open-Source projects. Bein= g > 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. > > =3D=3D=3D Community =3D=3D=3D > > 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 on= ly > real Apache projects are allowed to use "Apache", we decided to go down t= he > private repository path. > > =3D=3D=3D Core Developers =3D=3D=3D > > (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=C3=B6rster (codecentric) > * Rolf Felker (codecentric) > * Sebastian R=C3=BChl (codecentric) > > =3D=3D=3D Alignment =3D=3D=3D > > 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 platfor= m > or > foundation. This idea is shared by a big majority of the core contributor= s. > > =3D=3D=3D Project Name =3D=3D=3D > > 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 calle= d > Purelogic (https://purelogic.ru/doc/PDF/Controller/PLC4x.pdf) English > version > (http://www.zappautomation.co.uk/productattachments/index/download?id=3D9= 9) > 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++). > > =3D=3D Known Risks =3D=3D > > =3D=3D=3D Orphaned projects =3D=3D=3D > > PLC4X is a new Project, which has just been started. The feedback from th= e > industry has been overwhelming so the risk of the project being orphaned = is > minimal. > > =3D=3D=3D Inexperience with Open Source =3D=3D=3D > > 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. > > =3D=3D=3D Homogeneous Developers =3D=3D=3D > > 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. > > =3D=3D=3D Reliance on Salaried Developers =3D=3D=3D > > Currently only Christofer Dutz is being paid to work on this project > exclusively. > > =3D=3D=3D Relationships with Other Apache Products =3D=3D=3D > > 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 Apac= he > Edgent projects as it provides modules for direct integration of PLC4X in= to > 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= . > > =3D=3D=3D An Excessive Fascination with the Apache Brand =3D=3D=3D > > We are certain that PLC4X itself will profit from being an official Apach= e > project, in terms of attracting a community and establishing a solid grou= p > 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 wil= l > 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. > > =3D=3D=3D Possibility of legal actions =3D=3D=3D > > 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 a= re > 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. > > =3D=3D=3D Test setup could require hardware =3D=3D=3D > > A test-suite for PLC4X could involve tests run against virtual or real > hardware. It could be problematic to include these in automated builds ru= n > on > build.apache.org, but Apache infra have already signaled that there > should be > options to work this out. > > =3D=3D Documentation =3D=3D > > 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. > > =3D=3D Initial Source =3D=3D > > Development of PLC4X started at codecentric in October of 2017. The sourc= e > 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) > > =3D=3D Source and Intellectual Property Submission Plan =3D=3D > > PLC4X is currently mainly developed by, but not limited to, codecentric > employees. However, all code has been developed completely from scratch i= t > 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. > > =3D=3D External Dependencies =3D=3D > > * 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 > > =3D=3D Cryptography =3D=3D > > Not applicable. > > =3D=3D Required Resources =3D=3D > > =3D=3D=3D Mailing Lists =3D=3D=3D > > * plc4x-dev > * plc4x-private > > =3D=3D=3D Git Repository =3D=3D=3D > > https://git-wip-us.apache.org/repos/asf/incubator-plc4x.git > > =3D=3D=3D Issue Tracking =3D=3D=3D > > JIRA PLC4X > > =3D=3D=3D Confluence Wiki =3D=3D=3D > > To be able to provide help, documentation, faq etc, a wiki is needed. > > =3D=3D Initial Committers =3D=3D > > (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=C3=B6rster (mark.keinhoerster@codecentric.de) > * Rolf Felker (rolf.felker@codecentric.de) > * Sebastian R=C3=BChl (sebastian.ruehl@codecentric.de) > > =3D=3D Affiliations =3D=3D > > 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" (A= t > 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). > > =3D=3D Sponsors =3D=3D > > =3D=3D=3D Champion =3D=3D=3D > > * Justin McLean > > =3D=3D=3D Nominated Mentors =3D=3D=3D > > (In alphabetical order) > > * Greg Trasuk > * Justin McLean > * Luciano Resende > * Stefan Bodewig > > =3D=3D=3D Sponsoring Entity =3D=3D=3D > > 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 > > --001a114e56b27b5309055ff804cf--