Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [iot-pmc] top-level GitHub project

Hi Kai, Jens,

The Cyclone core does not have dependencies for now. It's the tests that currently need CUnit and Criterion (test frameworks). Criterion in turn needs Nanomsg, libcsptr, dyncall and BoxFort. More dependencies will be added when we add the C++ language binding and DDSI security for example.

The ecosystem that's been created by Bincrafters requires a repository per recipe. It builds, tests and stores the right artifacts. It does that for Linux with gcc 4.9 - 8, clang 3.9 -6.0, macOS with xcode 7.3 - 9.4, Windows with Visual Studio 2015 - 2017. It also does all of this for Debug, Release and x64, x86_64 combinations. All that I as a developer/user am required to do to set this up is create the instructions to build the source package. The rest is automatic.

We can do this under the Eclipse foundation. All that's required is Travis, AppVeyor and Bintray accounts. I'm fine with the Eclipse webmaster setting this up and arranging privileges so that the right people (or he/she) can manage it. I'm not comfortable with moving all of this to JIPP because I (or someone else) would have to manually keep all the code, environment, etc up-to-date. Moving that to JIPP is like building your own Ubuntu package build environment, servers and ecosystem to have PPA's, just because you don't want to use the service that Ubuntu offers.


Cyclone itself, we can build on JIPP and I'm fine with creating build scripts/instructions to do so. We currently require Linux, macOS and Windows targets, are those available on JIPP? We can simply smack conan, cmake and the required compilers on there and we should be in business.


Please advise on how to proceed.

Cheers,
Jeroen


P.S.
The reason I requested a TLOrg is to make everyone's life easier, I'm sorry if I over complicated things with providing to much detail or causing confusion.


On 2018-11-09 09:57, Kai Kreuzer wrote:

FWIW, I fully agree with Jens' assessment.

If the main reason for requesting a github org is "The process and the services (GitHub, Travis, AppVeyor, Bintray) work great, is it really that big of a problem if we don't use JIPP for now?", this imho is no valid argument for such a request.

I also agree that the dependency on adlink-managed repos&projects should be removed - you should really try to have the project being maintainable by the means that are offered by the Eclipse Foundation.

Regards,
Kai

Am 09.11.2018 um 09:51 schrieb Jens Reimann <jreimann@xxxxxxxxxx>:

Hi Jeroen,

sorry but now I am even more confused than before. If Cycleone doesn't need any dependencies, then what are we talking about? I thought the main goal of using conan was about dependencies?

But just in case did misunderstand you, and you indeed need dependencies:

I still don't see the reason why you need a GitHub organization. Because from what I saw, conon is just a tool that will run. And the way you set it up with Travis and a single repository is just one way to set it up. You could very well put this into a single repository, maybe use different branches, or an all-in-one registry. And you could also use JIPP to build this, instead of Travis, ...

And the whole description of "vendor neutral" that you just have, doesn't sound vendor neutral at all to me. If I would be a committer on the cyclonedds project, then I wouldn't have automatically permissions by this bintray repository, as you mentioned, that it is managed by adlink, and not by the Eclipse Foundation.

I think a good approach may be to start off small, and start building on JIPP. To me it looks like you can build all the dependencies you need e.g. with a Jenkins pipeline. That way it would even be self-contained. It could be replicated, doesn't require the management of additional outside services and could all be done in a single repository. Or two or three if you want to split it up. And it you then run into a real blocker, let's discuss what really required.

Cheers

Jens

On Thu, Nov 8, 2018 at 11:24 PM Jeroen Koekkoek <jeroen@xxxxxxxxxxx> wrote: Hi Alois,

It's precisely the opposite for Eclipse Cyclone. The project itself has
no external dependencies at this point (except the idl compiler, but
that's Java), it's just test cases that need test frameworks for now.
The code compiles cleanly on at least Linux, macOS and Windows (no
warnings) and the steps to get everything done are in the .travis.yml
(Linux and macOS) and the appveyor.yml (Windows). This discussion is
precisely to get everything setup so that the devs can take care of all
the hard work :)

Hope you'll reconsider about trying Eclipse Cyclone :)

Best regards,
Jeroen

On 2018-11-08 23:04, Alois Zoitl wrote:

Hi,

I have been following this discussion for a while. firstly if I can
learn something for my project and secondly I had Eclipse Cyclone on my
todo list for
getting it into 4diac. After today I must say it moved way down to the
bottom of my list. Because it looks now so complicated to get it build
for the many
different platforms we would like to use it on. Is this really needed
when I want to use Eclipse Cyclone?

BR,
Alois

On Thu, 2018-11-08 at 22:10 +0100, Jeroen Koekkoek wrote: (1) Yes, we
could. But we've just setup everything wrt to Travis and
AppVeyor and it works really well. The process and the services
(GitHub,
Travis, AppVeyor, Bintray) work great, is it really that big of a
problem if we don't use JIPP for now?
(3) There are multiple recipes. There's two direct dependencies, but
those have dependencies as well. All-in-all there's currently five and
more are to follow when we start work on the C++ language binding,
support for security, etc. Yes, you can build all of it manually and
set
it up that way, but it requires an awful lot of work that needs to be
repeated every time we want to upgrade etc. Conan more-or-less requires
a repository per dependency. You could view the recipe as an RPM/DEB
source package, but with instructions for multiple operating systems.
Is
that really something we want to create a repositories for directly
under the Eclipse GitHub organization?

It's vendor neutral to use Conan and Bintray. It's currently managed by
me and owned by the atolab GitHub organization (division of ADLINK).
Anyone with the right privileges on the repository can push a new
version and it automatically gets uploaded if the build is successful,
all the tests pass and it's in a stable branch. If anyone wants to fix
a
bug, add a platform etc, all they need to do is submit a pull request.
Of course if they rather maintain their own copy, they simply fork the
repository and push to their own Bintray repository or internal
Conan/Artifactory server and use that.

All of these services are tied to GitHub organizations. For example,
the
binary artifacts in Bintray are hosted per organization. e.g. the Conan
repository that we use is now https://bintray.com/atolab/public-conan/
that would become https://bintray.com/cyclonedds/public-conan/ for
instance. But descriptions and that sort of thing need to be updated,
perhaps older versions discarded and that's something that would then
require action by people with privileges, aka the Eclipse webmaster.
With a TLOrg all of that becomes just that much easier.

On 2018-11-08 18:16, Jens Reimann wrote:

So summing this all up, and only focusing on the topic of a dedicated
organization, I don't really see the need for that.

(1) You can build with JIPP, so that should be fine. You can still have
a Travis build in addition, so that others can use this. But the
project default can be JIPP. And it can validate PRs as well.
(3) I am not really sure if those recipes belong in cyclonedds or not.
In any case the project must be buildable without relying on conan, or
bintray IMHO. And even if you want to store the recipes in cyclone,
then you can do this in e.g. a dedicated cyclonedds-dependencies
repository.

Aside from the question about the organization, a question to me would
be how the project would ensure a vendor neutral approach to the
management of binary artifacts? I, as a committer of cyclonedds, not
being an adlink employee: how would I push new binaries into this
bintray repository? Or set up a new job to do so?

On Thu, Nov 8, 2018 at 5:33 PM Jeroen Koekkoek <jeroen@xxxxxxxxxxx>
wrote:

Hi Jens,

(3a) Yes, it's possible if they have the libraries installed on their
system and CMake can find them. But it's tricky to create them
yourself
especially on Windows (Debug, Release, x86, x86_64, patches).
Something
we rather not have potential contributors (or colleagues) go through.

(3b) The recipes are rather small and certainly wouldn't qualify as an
open source project in their own right. However, they are purposely
created for cyclonedds (CUnit got adopted by Bincrafters) and I think
the project should be able to exercise some level of control which
versions, binaries etc are used as long as they're not "official"
packages (as in adopted by Bincrafters or the Conan project itself).

(3c) The recipes themselves are automatically build and tested on both
Travis and AppVeyor, if successful, the artifacts are automatically
pushed to Bintray. There are a lot of custom scripts provided by
Bincrafters, an initiative to create recipes for many open source
libraries, that require a special repository layout etc. Something I
don't want to recreate myself.

To give an idea of how/when Conan comes into play.

---- with conan ----
$ pip install conan
$ mkdir cyclonedds/build
$ cd cyclonedds/build
$ conan install ..
$ cmake -DBUILD_TESTING=on ../src
$ cmake --build .
---- /with conan ----

---- without conan ---- Download, build and install CUnit (mostly
available in distro
repositories, but not for Windows or macOS, Windows even needs some
patches)
Download, build and install Criterion (ppa available for Ubuntu, but
a
nightmare for every other platform, official source tarball doesn't
include everything to build)
The same as above for all future dependencies, let's hope the user
built everything with the right flags etc.
Export paths for all dependencies
$ mkdir cyclonedds/build
$ cd cyclonedds/build
$ cmake -DBUILD_TESTING=on ../src
$ cmake --build .
---- /without conan ----

I know the "without conan" doesn't seem like a lot of work, it's just
two extra lines :), but trust me when I say it saves A LOT of time and
effort.

Cheers,
Jeroen

On 2018-11-08 16:37, Jens Reimann wrote:

Hi Jeroen,

regarding (3), I would like to understand:

(a) if it is possible for people to build cyclonedds without having
access to precompiled dependencies?
(b) what would be the benefit of having an additional organization?
(c) As this organization would be part of your project, why can't you
store those dependencies in your project repository instead?

Thanks

Jens

On Thu, Nov 8, 2018 at 1:57 PM Jeroen Koekkoek <jeroen@xxxxxxxxxxx>
wrote:

Hi Kai,

I too am sorry for taking this long to respond. It's not lack of
interest, but rather to get an idea first on how to proceed.

(1) While it's not impossible for cyclonedds to use JIPP, using
Travis
and AppVeyor is easier for developers that want to send us pull
requests
because they build their sources on the exact same platform using
the
exact same build recipes and dependencies.

(2) We're still looking into this, but we're probably going to fork
and
start the process for the CQ soon.

(3) Build recipes for dependencies. We use Conan.io to manage build
dependencies for the platforms on which we build. This makes it
extremely easy for developers and users to simply get pre-compiled
dependencies by pulling them from Bintray (https://bintray.com/) if
they're not available on their system. Apart from that we have a
guarantee that the product is build on the "exact same" platform
every
time because even the build dependencies are version controlled.
I've
written a bunch of these recipes, so the source for the recipe is
"owned" by the project already, but it must not (and cannot) be
stored
in the cyclonedds repository. Currently we provide them through a
GitHub
organization tied to the company I work for (ADLINK), but it would
be
better if they're hosted with the project. We're going to be adding
more
and more of these recipes in the future as the number of
dependencies
grows. Please see https://github.com/atolab/conan-criterion to get
an
idea of what such a recipe looks like. I think maintaining them
under
our own organization would be best.

I'll get a bugzilla ticket created, let's continue the discussion
there
if there's still doubts wrt the validity of the request.

Cheers,
Jeroen

On 2018-10-31 11:37, Kai Kreuzer wrote:

Hi Jeroen,

Sorry for my late reply on this.
As an outcome of the PMC discussion, I have added a section about
Github orgs here: https://wiki.eclipse.org/IoT/PMC#Project

As you can see, there are no general requirements that would allow
it,
but decisions have to be taken on a case by case evaluation.

So please let us again dive into your two arguments, why you are
requesting such an org:

(1) In general, the PMC is of the opinion that Eclipse projects
should
use the provided build infrastructure (i.e. JIPP). Note that it is
possible to also use Windows nodes for JIPP. External services such
as
Travis should only be a last resort, if it isn't possible to use
JIPP.
It would therefore be nice if you could check whether you can do
the
builds on JIPP and if this isn't possible to give the concrete
reasons
for that.

(2) As Wayne already stated: Any source code that is added in
Eclipse
project repositories IS source code of the Eclipse project. So you
cannot maintain a fork (as part of your project) and continue to
claim
that it is merely a dependency of your project. The code would
require
to go through a full CQ as a code contribution to Eclipse. In any
case,
this should not require a dedicated Github org, but could be done
as
a
sub-project in its own repo under the eclipse org.

Best regards,
Kai

On 30. Oct 2018, at 15:18, Jeroen Koekkoek <jeroen@xxxxxxxxxxx>
wrote:

Hi All,

Just curious what the outcome of the discussion regarding TLOrg's
is.
Perhaps I can read about it somewhere or a short summary with
requirements etc can be given?

Thanks in advance.

Cheers,
Jeroen

On 2018-10-23 12:54, Wayne Beaton wrote:

If you want to keep content under the project's control, it needs
to
become project code. The first step to do that is to convince the
PMC
that it makes sense to do so (i.e. convince them that forking is
desirable and in the best interests of the project and the Eclipse
community). Then you need to engage the IP Team to get their review
and
approval.
HTH,
Wayne
On Mon, Oct 22, 2018 at 6:27 PM Jeroen Koekkoek
<jeroen@xxxxxxxxxxx>
wrote:
Hi Kai,
Well we need it primarily for our own Conan recipes (build
dependency
build recipes), currently six or so, and faster Travis and AppVeyor
builds. The recipes are all written by me btw, so no forking
involved
there.
That being said, and this just out of curiosity and trying to
understand
the reasons, mcpp is very likely to become a dependency for
cyclonedds,
one that we must have to do code generation. mcpp is a fine
project,
but
it's not very actively maintained. I could just write a Conan
recipe
and
keep some patches on the side, or I could fork it under the
ADLINK-IST
GitHub organization, but it all boils down to the same thing
really.
What's wrong with keeping a dependency directly under the projects
control? Keeping some level of control over it is actually why I
thought
it would be a good idea.
Cheers,
Jeroen
On 2018-10-22 21:04, Kai Kreuzer wrote:
Hi Jeroen,
Please wait with creating an according Bugzilla ticket - while it
is
in
general technically possible, we would like to discuss this within
the
PMC (which is together at ECE this week).
Also note that a TLOrg won't allow you to add a (2) forked
sourceforge
project, so this actually won't help you much (EMO, correct me, if
I
am
wrong).
Cheers,
Kai
Am 22.10.2018 um 18:12 schrieb Jeroen Koekkoek
<jeroen@xxxxxxxxxxx>:
Hi Wayne,
Never mind. I saw a GitHub Organization request for a different
project, so I know what to do now. Thanks for your help.
Best regards,
Jeroen
P.S.
Should anyone find this thread in search of the same information,
here's an example of a BugZilla ticket requesting a GitHub
Organization
for a project: https://bugs.eclipse.org/bugs/show_bug.cgi?id=539829
On 2018-10-22 17:45, Jeroen Koekkoek wrote:
Hi Wayne,
I take it you mean requesting another repository under the Eclipse
organization? I can't find any bugs regarding the promotion to to a
top-level GitHub project?
Thanks in advance.
Regards,
Jeroen
On 2018-10-22 16:50, Wayne Beaton wrote: We added this sort of
support
recently. Open a bug against Community/GitHub to ask the webmaster
for
assistance.
Wayne
On Mon, Oct 22, 2018, 14:29 Kai Kreuzer, <kai@xxxxxxxxxxx> wrote:
Hi Jeroen,
I very much doubt that this is possible. Afaik, ALL Eclipse
projects
are under the eclipse github org and that's mandatory. For a
definitive
answer on this, you might want to contact EMO.
Note that it is possible to request additional repositories for
your
sub projects / components, though (see e.g.
https://github.com/eclipse/smarthome-packaging-sample, which
belongs
to
the SmartHome project, where the main repo is
https://github.com/eclipse/smarthome) - simply create a Bugzilla
issue
for it and the webmasters will provision it for you.
Regards,
Kai
Am 22.10.2018 um 12:04 schrieb Jeroen Koekkoek
<jeroen@xxxxxxxxxxx>:
Hi All,
I've got a question regarding the possibility of making cyclonedds
a
top-level GitHub project. I'm not sure if this is the right list to
ask
that question, if it isn't, please let me know the right list. If
it
is, and I'm looking at the problem in the wrong way, please let me
know
too. It's just that making it a top-level project seems like the
best
solution.
There's two reasons for me to want to promote it to a top-level
GitHub
project.
1. Faster Travis and AppVeyor builds. Right now builds for pull
requests take a long time and that'll only get worse when more
projects
are going to join.
2. Dependencies. We're planning on implementing a better IDL
compiler
to get quicker build and drop the Java dependency. Because we're
looking to implement support for more language bindings, now seems
like
the right time to do that. Now, the IDL compiler will need a
preprocessor. We've more-or-less decided to go with mcpp
(http://mcpp.sourceforge.net/). The product itself is hosted on
SourceForge, which is a little slow and code is still hosted in
svn.
The biggest problem however is that the original author isn't doing
any
work on the project anymore and nobody can accept patches etc. For
that
reason we want to "fork" it (svn import on GitHub) to fix some
small
bugs etc. In my opinion hosting the project under a top-level
cyclonedds GitHub project is the best place. That way it's neatly
separated from the cyclonedds code while all members/privileges etc
can
be managed by the project leads and committers.
Please let me know if it's possible or if there are better ways to
go
about this.
Best regards,
Jeroen Koekkoek
_______________________________________________
iot-pmc mailing list
iot-pmc@xxxxxxxxxxx
To change your delivery options, retrieve your password, or
unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/iot-pmc
_______________________________________________
iot-pmc mailing list
iot-pmc@xxxxxxxxxxx
To change your delivery options, retrieve your password, or
unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/iot-pmc
_______________________________________________
iot-pmc mailing list
iot-pmc@xxxxxxxxxxx
To change your delivery options, retrieve your password, or
unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/iot-pmc
_______________________________________________
iot-pmc mailing list
iot-pmc@xxxxxxxxxxx
To change your delivery options, retrieve your password, or
unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/iot-pmc
_______________________________________________
iot-pmc mailing list
iot-pmc@xxxxxxxxxxx
To change your delivery options, retrieve your password, or
unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/iot-pmc
_______________________________________________
iot-pmc mailing list
iot-pmc@xxxxxxxxxxx
To change your delivery options, retrieve your password, or
unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/iot-pmc
_______________________________________________
iot-pmc mailing list
iot-pmc@xxxxxxxxxxx
To change your delivery options, retrieve your password, or
unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/iot-pmc --
Wayne Beaton
Director of Open Source Projects | Eclipse Foundation, Inc. Meet us
at
EclipseCon Europe 2018: LUDWIGSBURG, OCTOBER 23 - 25
_______________________________________________
iot-pmc mailing list
iot-pmc@xxxxxxxxxxx
To change your delivery options, retrieve your password, or
unsubscribe
from this list, visit
https://dev.eclipse.org/mailman/listinfo/iot-pmc
_______________________________________________
iot-pmc mailing list
iot-pmc@xxxxxxxxxxx
To change your delivery options, retrieve your password, or
unsubscribe
from this list, visit
https://www.eclipse.org/mailman/listinfo/iot-pmc
_______________________________________________
iot-pmc mailing list
iot-pmc@xxxxxxxxxxx
To change your delivery options, retrieve your password, or
unsubscribe
from this list, visit
https://www.eclipse.org/mailman/listinfo/iot-pmc
_______________________________________________
iot-pmc mailing list
iot-pmc@xxxxxxxxxxx
To change your delivery options, retrieve your password, or
unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/iot-pmc

--

Jens Reimann
Senior Software Engineer / EMEA ENG Middleware
Werner-von-Siemens-Ring 14
85630 Grasbrunn
Germany
phone: +49 89 2050 71286
_____________________________________________________________________________

Red Hat GmbH, www.de.redhat.com,
Registered seat: Grasbrunn, Commercial register: Amtsgericht
Muenchen,
HRB 153243,
Managing Directors: Paul Argiry, Charles Cachera, Michael Cunningham,
Michael O'Neill
_______________________________________________
iot-pmc mailing list
iot-pmc@xxxxxxxxxxx
To change your delivery options, retrieve your password, or
unsubscribe
from this list, visit
https://www.eclipse.org/mailman/listinfo/iot-pmc
--

Jens Reimann
Senior Software Engineer / EMEA ENG Middleware
Werner-von-Siemens-Ring 14
85630 Grasbrunn
Germany
phone: +49 89 2050 71286
_____________________________________________________________________________

Red Hat GmbH, www.de.redhat.com,
Registered seat: Grasbrunn, Commercial register: Amtsgericht Muenchen,
HRB 153243,
Managing Directors: Paul Argiry, Charles Cachera, Michael Cunningham,
Michael O'Neill _______________________________________________
iot-pmc mailing list
iot-pmc@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://www.eclipse.org/mailman/listinfo/iot-pmc
_______________________________________________
iot-pmc mailing list
iot-pmc@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe
from this list, visit
https://www.eclipse.org/mailman/listinfo/iot-pmc

--

Jens Reimann
Senior Software Engineer / EMEA ENG Middleware
Werner-von-Siemens-Ring 14
85630 Grasbrunn
Germany
phone: +49 89 2050 71286
_____________________________________________________________________________

Red Hat GmbH, www.de.redhat.com,
Registered seat: Grasbrunn, Commercial register: Amtsgericht Muenchen, HRB 153243, Managing Directors: Paul Argiry, Charles Cachera, Michael Cunningham, Michael O'Neill _______________________________________________
iot-pmc mailing list
iot-pmc@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://www.eclipse.org/mailman/listinfo/iot-pmc


Back to the top