incubator-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Christofer Dutz <christofer.d...@c-ware.de>
Subject Re: [PROPOSAL] PLC4X - proposal for Apache Incubation
Date Mon, 11 Dec 2017 11:45:58 GMT
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.

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
View raw message