Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gcloud happybase port violates happybase license #1762

Closed
wbolster opened this issue Apr 28, 2016 · 50 comments
Closed

gcloud happybase port violates happybase license #1762

wbolster opened this issue Apr 28, 2016 · 50 comments
Assignees
Labels
api: bigtable Issues related to the Bigtable API.

Comments

@wbolster
Copy link

wbolster commented Apr 28, 2016

hello, happybase author here.

the gcloud happybase port violates my software's license. i do not like this.

the happybase license (mit+apache) is quite clear:

the above copyright notice and this permission notice shall be
included in all copies or substantial portions of the software.

http://happybase.readthedocs.io/en/latest/license.html

however, i don't see my name, the required notice, or even a small "thanks" or whatever, anywhere, neither in the gcloud docs, nor in the distributed software package itself.

the happybase port that is distributed with hbase contains considerable amounts of code written by me (for instance the whole api, and the implementation of connection pooling and other features is the same). and even though various docstrings have been partially adapted, proper attribution is in order here as well.

please fix this ASAP since this is NOT ok at all.

@tseaver tseaver added the api: bigtable Issues related to the Bigtable API. label Apr 28, 2016
@dhermes
Copy link
Contributor

dhermes commented Apr 28, 2016

@wbolster This is totally my fault. Sorry for the mess up. It's something I had planned to do but the implementation process / porting over from https://github.com/dhermes/gcloud-python-bigtable took quite some time.

We fully intended gcloud.bigtable.happybase to be a drop-in replacement for happybase, hence the interface matching ("for instance the whole api"). It is a quite good abstraction for a somewhat contrived HBase / Thrift / Google Cloud Bigtable API. I assure the majority of the code (beyond the interface) is novel to this library, though as you mentioned connection pooling (and some string helpers) are quite similar.

@jgeewax Can we put license info directly in modules or should it go in the project or maybe something else?

@dhermes dhermes assigned jgeewax and unassigned dhermes Apr 28, 2016
@wbolster
Copy link
Author

wbolster commented Apr 28, 2016

ok, thank your for acknowledging my objections.

please keep me posted about the resolution.

btw, regardless of the number of lines of code that are shared, the simple fact that this library tries to be a drop-in replacement (on top of a different technology stack), and even (re)uses the original name, obviously makes this part of gcloud libs a derivative work of happybase, and hence the original work deserves mentioning, as prescribed by its license.

@wbolster
Copy link
Author

btw, i'm totally fine with this library existing. i encourage derivative works. i open-source my work so that others can benefit from it. and it's good to see that exactly that is what's happening.

happybase's license is very permissive exactly for this reason, so please adhere to it. :)

@dhermes
Copy link
Contributor

dhermes commented Apr 29, 2016

Thanks for the clarification.

@jgeewax PTAL

@jgeewax
Copy link
Contributor

jgeewax commented May 3, 2016

@wbolster : First -- huge apology if we didn't go about this the right way. IANAL but we certainly didn't intend to violate the MIT license. Second, thanks so much for being understanding here. I was out on vacation otherwise I would've replied much more quickly... Sorry about that.

Again, IANAL, but it sounds like we should...

  1. Make sure there's proper attribution in the docs for the gcloud.bigtable.happybase module (along with a pointer to the Happybase library)
  2. Add the Happybase license to the repo

@tseaver / @dhermes : Is it acceptable to do as @wbolster did where we say that gcloud-python is Apache 2.0 licensed, and implements the Happybase API surface which is MIT licensed in our LICENSE file?

@wbolster
Copy link
Author

wbolster commented May 3, 2016

Thanks for getting back to me.

The easiest way to get everything solved is to simply include a snippet like this in a "license" page of the docs, alongside other licenses, including gcloud-python's own license, and be done with it:

Happybase API emulation for BigTable
====================================

The Happybase API emulation for BigTable as distributed with
gcloud-python is based on Happybase, which is distributed under the
MIT license. The original license text is included below.

HappyBase License

Copyright © 2012 Wouter Bolsterlee

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
“Software”), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

That way everything is covered. You don't need to get into specifics about whether APIs are copied, (parts of the) code is reused, docs are (partially) rewritten, and you don't have to worry about that either from a legal perspective since the original license allows you to do whatever you want with it, as long as you put the above notice somewhere.

@jgeewax
Copy link
Contributor

jgeewax commented May 3, 2016

That sounds great. Thanks again @wbolster for being so accommodating -- I really really appreciate it.

@dhermes : Does this look good to you guys? Can you toss up a PR and CC everyone?

@theacodes
Copy link
Contributor

A PR would be great, but before we merge let's let our open-source people review and make sure we're doing the right thing for everyone. I've reached out to them.

@wbolster
Copy link
Author

wbolster commented Aug 12, 2016

<sarcasm>
i am very happy to see that google has taken appropriate steps to resolve this issue in such a timely manner. that "fix asap" label really helped.
</sarcasm>

to be clear: google is violating my software's license, and it can be fixed by JUST COPYING AND PASTING SOME TEXT INTO YOUR DOCS as i mentioned before in #1762 (comment)

very professional. great work. kudos.

@wbolster
Copy link
Author

ping @jgeewax @dhermes @jonparrott

@theacodes
Copy link
Contributor

@wbolster after some conversations with our lawyers, we need to actually split this into a completely separate package.

@jgeewax any reservations?

@dhermes @tseaver which of you wants to own doing this? Let me know if there's anything you need from our end to make this happen.

This is highest priority.

@wbolster
Copy link
Author

splitting code into separate packages is a purely technical choice. there is no need for it from a legal perspective as happybase's license allows you to simply copy/paste whatever parts you like... as long as you adhere to its license terms. :)

... and adhering to happybase's very permissive license really only requires mentioning its license information (see my earlier comment above) in the appropriate section of your own documentation.

@theacodes
Copy link
Contributor

theacodes commented Aug 12, 2016

@wbolster that may be the case, but our lawyers are the type to exercise an abundance of caution. So that there is no question, they would prefer we distribute the happybase portion of this separately and under the same license as the upstream happybase project. This is to protect both this project and your project.

We're trying to do the right thing here and it's sometimes difficult to make sure we're making the right move. I know we've asked a lot of your patience, please bear with us as we close this loop here.

@jgeewax needs to confirm he's fine with this approach and we can move forward.

@jgeewax
Copy link
Contributor

jgeewax commented Aug 13, 2016 via email

@jgeewax
Copy link
Contributor

jgeewax commented Aug 13, 2016

Just to be abundantly clear: this has a ticking clock starting now. If it's not resolved by Fri Aug 19th I'm going to fix it the shitty way by deleting a bunch of code. :(

@daspecster
Copy link
Contributor

daspecster added a commit to daspecster/google-cloud-python that referenced this issue Aug 15, 2016
@daspecster
Copy link
Contributor

@wbolster, @jonparrott @dhermes see #2101

@theacodes
Copy link
Contributor

@daspecster that's insufficient according to our lawyers.

@daspecster
Copy link
Contributor

Ok, what's required to split it out?

On Monday, August 15, 2016, Jon Wayne Parrott notifications@github.com
wrote:

@daspecster https://github.com/daspecster that's insufficient according
to our lawyers.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
#1762 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/AALvyH2quYbAQc2Pmo9_wDYVEl-euMOcks5qgIX9gaJpZM4IRvVK
.

Tom Schultz

@theacodes
Copy link
Contributor

Separate repository. We can publish it as its own pypi package.

@daspecster
Copy link
Contributor

@jonparrott could we update the license for now and then work on splitting it out? Seems like that might make everyone happy. Unless the lawyers think that would create new problems?

@theacodes
Copy link
Contributor

@daspecster our lawyers told us we had two options: (1) relicense this entire project under HappyBase's license, or (2) split out the happybase portion into its own repository and library.

@daspecster
Copy link
Contributor

@dhermes do you have permissions to create new repositories or maybe @omaray?

@jgeewax
Copy link
Contributor

jgeewax commented Aug 16, 2016

I don't have permission. @omaray can you go figure out who can create a new repo called google-cloud-python-bigtable-happybase ? (Yes, it's long, but most people will get it for free via pip install google-cloud or google-cloud-bigtable)

@dhermes
Copy link
Contributor

dhermes commented Aug 16, 2016

Is google-cloud-python-happybase not clear? Ditto on the PyPI package name?

@theacodes
Copy link
Contributor

I'm good with google-cloud-python-happybase.

@jgeewax
Copy link
Contributor

jgeewax commented Aug 17, 2016 via email

@tseaver
Copy link
Contributor

tseaver commented Aug 17, 2016

I can work on setting up the new repository locally. I believe the repo name should be google-cloud-python-happybase, but the PyPI name should be google-cloud-happybase.

@daspecster
Copy link
Contributor

@tseaver, @dhermes sounded like him and @jonparrott had already started on this. Is there a confirmation?

@dhermes
Copy link
Contributor

dhermes commented Aug 17, 2016

I haven't started. Waiting for @omaray, @jonparrott or someone else with Google permission to create the new repo. (I used to be able to but no longer do.)

@dhermes
Copy link
Contributor

dhermes commented Aug 17, 2016

Just created https://pypi.python.org/pypi/google-cloud-happybase

@theacodes
Copy link
Contributor

I'm gonna reach out to our devrel github admin @elibixby to get it created.

@tseaver
Copy link
Contributor

tseaver commented Aug 17, 2016

@dhermes, @daspecster, @jgeewax I have a version pushed under my account, with the license text from the Happybase project. tox passes everything: I'm still waiting to see Travis green.

@theacodes
Copy link
Contributor

Thanks, @tseaver. Can you go ahead and add me and @elibixby as admins on that repo? We'll transfer it to GoogleCloudPlatform.

@omaray
Copy link
Contributor

omaray commented Aug 17, 2016

Thanks @jonparrott.

@omaray
Copy link
Contributor

omaray commented Aug 17, 2016

... for future reference I don't have permissions on the org to create repos... but we know who does.

@tseaver
Copy link
Contributor

tseaver commented Aug 17, 2016

@jonparrott I've sent invites to the two of you, and will make you admins as soon as they are completed.

@tseaver
Copy link
Contributor

tseaver commented Aug 17, 2016

@jonparrott I see you have accepted the invite, but I don't seem to have the ability to give you anything other than "Collaborator" access (no "Teams" on personal repos).

@theacodes
Copy link
Contributor

@tseaver yeah hang tight.

@tseaver
Copy link
Contributor

tseaver commented Aug 17, 2016

If I have push access to the new "canonical" repo, I can just push there and delete my repo.

@theacodes
Copy link
Contributor

Canonical repo is setup at https://github.com/GoogleCloudPlatform/google-cloud-python-happybase

All admins here should have admin there.

I synced the canonical one with yours, so feel free to go ahead and delete yours.

Thanks everyone!

@tseaver
Copy link
Contributor

tseaver commented Aug 17, 2016

PR #2109 removes the Happybase-related code from this repository.

I also created an issue in the new repo for the one open Happybase-releated issue here (#1546).

@theacodes
Copy link
Contributor

@wbolster thank you for your patience. Is everything acceptable to you? Please let us know if there's anything else you feel we should do.

@jgeewax
Copy link
Contributor

jgeewax commented Aug 22, 2016

@wbolster : Again, apologies for the lag on getting this done, and thank you for the patience. Can you let us know if this fixes things?

Thanks all (@tseaver, @jonparrott , @daspecster , and everyone else) who helped to resolve this. Let's try to speed up next time so it doesn't take so long...

@wbolster
Copy link
Author

wbolster commented Sep 7, 2016

yeah, as i said numerous times before, just include the license and point out that your package is an emulation of my happybase package. i think both are covered now in the new repo's README.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: bigtable Issues related to the Bigtable API.
Projects
None yet
Development

No branches or pull requests

7 participants