Hosted continuous integration with community edition

Post Reply
nemequ
Posts: 15
Joined: Feb 12 2017

Hosted continuous integration with community edition

Post by nemequ » Sun Feb 12, 2017 7:00 pm

I recently discovered the community edition (which is awesome, thank you!), and I've been trying to get some of my open source projects ported. Assuming I'm able to, I'd like to set up continuous integration to make sure that I don't accidentally break support for it in the future.

Based on a quick look I think it would be quite easy to get the compilers running on Travis (or Drone, Snap, Circle, etc.). The installer can be run in silent mode, and there are no technical license shenanigans trying to restrict usage like there are with ICC (thank you).

I have a feeling that nobody at PGI would object to such a use, and I'm happy to share the work so others could reproduce the set-up for their project, but I'm not sure the license would permit it. Specifically, § 2A is giving me pause. You could argue that it's not me running the compiler, but rather the CI provider… this is especially true if I enable it for pull requests and/or allowed other users to push to a repo.

Basically, can I use the community edition for this? Would it require a special exception from PGI?

jtull
Posts: 1103
Joined: Jun 30 2004

Post by jtull » Mon Feb 13, 2017 1:03 pm

The community edition does not come out every month.

The license provided does not use the license service, so it will typically
work for more than one user at a time.

We do not police the execution of the community license.

dave

nemequ
Posts: 15
Joined: Feb 12 2017

Post by nemequ » Mon Feb 13, 2017 4:33 pm

Dave,

Thanks, but I don't think that really answers the question.
jtull wrote:The license provided does not use the license service, so it will typically work for more than one user at a time.
My concern isn't with getting it to work at a technical level, it's that the license seems to disallow it. Specifically, § 2A:
2A) Except as set forth in Sections 3, 4 and 5 below, under the terms and conditions of this ELA, You are hereby granted a limited, revocable, nontransferable, and nonexclusive license, without the right to sublicense or distribute, to use the Software subject to the restrictions and other terms within. That use must be
  1. only by You,
  2. only on a computer system running a specific operating system on which the Software is designed to run and for which portions of the Software and subsequent components in the compilation process are intended to produce an executable image ("Target Systems") for which the corresponding product license has been lawfully entered into,
  3. only on the network(s) and only by the number of users for which the corresponding product license has been lawfully entered into,
  4. only to utilize no more than the maximum number of CPUs, or the maximum number of processes, for which the corresponding product license has been lawfully entered into, and
Except as set forth in Section 2B and Section 2C below, any other use of the Software is strictly prohibited.
Even if there aren't any technical restrictions preventing multiple users, the license could be interpreted as disallowing my use case. On the other hand, it may not… it depends on how you interpret that first clause.

If I'm the one who added the CI support then maybe that's enough for me to be considered the one running the code, even if other people submitting pull requests are the ones who trigger the build. If so, then AFAICT my use case would be allowed.
We do not police the execution of the community license.
IANAL, but that sounds dangerous… If PGI chooses to start enforcing it I would still be liable. While I don't believe that PGI wouldn't object to this use, I'd be much more comfortable with some sort of indication that PGI doesn't consider such use to be a violation.

Sorry, I know the legal stuff is unpleasant to deal with :/

jtull
Posts: 1103
Joined: Jun 30 2004

Post by jtull » Tue Feb 14, 2017 2:41 pm

We are certainly not trying to advise you to ignore the licensing
agreement. The license does not use the flexlm license service, so there
is no central controlling mechanism that can monitor compiler usage.

If each platform running the compilers had a community license in $PGI,
and the users were aware of it and/or placed it there, I believe the license
agreement is being followed.

We do not ask that each Community user have a PGI web account set up
at http://www.pgroup.com/register , but if you are concerned about the
license agreement, having a web account would indicate every user was
aware of the product and its availability, would be enough to relieve concern.

But the concern here is largely yours. Ours is that your users have a good
PGI compiling experience.

dave

nemequ
Posts: 15
Joined: Feb 12 2017

Post by nemequ » Thu Feb 16, 2017 6:03 pm

Thanks, Dave!

I've decided to proceed with this. I think the EULA allows it, but if PGI decides they disagree, or even that they just don't want it, I'll comply with any requests to disable it.

I put together a quick script to do the work, and am making it available for anyone who wants it. For more information, see https://github.com/nemequ/pgi-travis. FWIW, I'd be happy to transfer ownership of that repo to PGI if you want.

When downloading the installer, the script will set the following HTTP headers:

User-Agent: pgi-travis (https://github.com/nemequ/pgi-travis; $TRAVIS_REPO_SLUG)
X-Travis-Build-Number: $TRAVIS_BUILD_NUMBER
X-Travis-Event-Type: $TRAVIS_BUILD_TYPE
X-Travis-Job-Number: $TRAVIS_JOB_NUMBER

You can find a description of the variables at https://docs.travis-ci.com/user/environment-variables/. These can be used to see who is using the script.[/url]

Post Reply