incubator-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "John D. Ament" <johndam...@apache.org>
Subject Re: [PROPOSAL] PLC4X - proposal for Apache Incubation
Date Mon, 11 Dec 2017 11:47:29 GMT
On Mon, Dec 11, 2017 at 6:46 AM Christofer Dutz <christofer.dutz@c-ware.de>
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" <pierre.smits@gmail.com>:
>
>     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
>     >
>     >
>
>
>
> ---------------------------------------------------------------------
> 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