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:52:52 GMT
Hi John,

the only reason for it being private, is that we wanted to start using apache group-ids and
package names and therefore were not able to create it as a public repo.

It was our solution to the hen-egg-problem of setting up a project with the primary goal of
having it live at Apache. Can’t enter incubation without having code. Can’t write apache-code
publicly without being Apache ;-)

Chris


Am 11.12.17, 12:47 schrieb "John D. Ament" <johndament@apache.org>:

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