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

Change name to (if we have to)? #66

Closed
ralphtheninja opened this issue Apr 13, 2019 · 32 comments
Closed

Change name to (if we have to)? #66

ralphtheninja opened this issue Apr 13, 2019 · 32 comments
Labels
discussion Discussion

Comments

@ralphtheninja
Copy link
Member

ralphtheninja commented Apr 13, 2019

We've been asked by Google to change the name of the organisation, all repositories and also all packages on npm. This is by no means a small feat, but we will do our best to comply.

Before we do this we need a discussion around names.

A common strategy is to try and come up with some synonyms to level but maybe there are other names that are more fitting. Any suggestions?

cc @Level/core

Ps @heapwolf has been helpful in removing leveldb.org (the repository for the old website has now been renamed to https://github.com/Level/leveljs.org).

@ralphtheninja ralphtheninja added the discussion Discussion label Apr 13, 2019
@vweevers
Copy link
Member

Before Google's request, the thought of renaming crossed my mind as part of the #58 effort. I dismissed that thought then because the pain of renaming wasn't justified. It was along the lines of:

  • abstract-leveldown: @abstract-db/abstract-db
  • levelup: gone (long term)
  • leveldown: @abstract-db/leveldb
  • level.js: @abstract-db/idb
  • memdown: @abstract-db/mem
  • encoding-down: @abstract-db/encode

@ralphtheninja
Copy link
Member Author

One approach I was thinking about was to emphasize that this is a modular ecosystem instead of trying to come up with synonyms to level. E.g. something like:

https://github.com/moduledb

@ralphtheninja
Copy link
Member Author

@mafintosh brought up on irc that something touching on key/value store could also be a good naming scheme. It's a concept that most devs are familiar with and is a good approach.

@ralphtheninja
Copy link
Member Author

ralphtheninja commented Apr 13, 2019

Jotting down some more ideas:

@vweevers
Copy link
Member

And some more:

Considering that we plan to refactor out levelup, which is a big change for the ecosystem and how packages relate to each other, this is a good time (and the only time!) to rethink the names and move away from the *up vs *down naming scheme. We could do:

  • kv-abstract (abstract-leveldown)
  • kv-leveldb (leveldown), kv-mem (memdown), kv-indexed-db (level.js), etc
  • kv (would re-export one of the former based on the runtime environment)

NB: This would delay the rename. However, doing a rename twice (now and when we finish #58) is not an option. As @ralphtheninja summarized on IRC: we are willing to work on this but we need time to do it.

@mcollina
Copy link
Member

Is Google demand mentioning level or is it solely referred to leveldb? Would you mind sharing that letter?

I see the reasoning for the domain name. I’m not sure about the name “level” and “leveljs”.

moduledb is really nice 👍

@No9
Copy link
Contributor

No9 commented Apr 13, 2019

Would also like to see the letter pls

@ralphtheninja
Copy link
Member Author

ralphtheninja commented Apr 13, 2019

@No9 I can forward it to you. But need an email address :)

@vweevers
Copy link
Member

Letter shared in @Level/core

@rvagg
Copy link
Member

rvagg commented Apr 14, 2019

You guys are jumping far too quick too fast. Giving in to bullies is always a bad strategy and the letter is clearly a thinly veiled bully letter, typical lawyer activity to intimidate into action.

@mikeal pointed out that the USPTO doesn't show a mark for leveldb. It'd also be an amazing stretch to claim "level" and getting us to give it up without a fight might just clear the way for them to make a broad claim.

There's also the awkward fact that Google wants to be seen as a good actor in the node ecosystem. If they're going to go hard on this then it's going to cost them some brownie points because of the prominent place level* has in the Node world. I'm fine with imposing such a cost if they want to pay this game.

Basically: slow down please, there's no good reason for hasty action and it'll likely lead to sub-optimal outcomes. And, screw bullies.

@mikeal
Copy link

mikeal commented Apr 14, 2019

I’ll second Rod’s comment. Having read the email from Google, they don’t actually say outright that they have a trademark or any legal claim, they are just implying it by noting that they handle trademark related matters for Google.

Changing the name would be incredibly disruptive to the ecosystem. Several people we know at Google have been pinged about this, let’s give them some time to potentially resolve this and if for some reason they can’t and people are still concerned about potential actions there are many alternatives to explore before changing the name which is very disruptive to everyone who has built on and depends on this ecosystem.

@ralphtheninja
Copy link
Member Author

You guys are jumping far too quick too fast. Giving in to bullies is always a bad strategy and the letter is clearly a thinly veiled bully letter, typical lawyer activity to intimidate into action.

There has been communication with google developers as well in private. They say we should comply, so it isn't just a bully email.

Basically: slow down please, there's no good reason for hasty action and it'll likely lead to sub-optimal outcomes. And, screw bullies.

Yep!

@ralphtheninja ralphtheninja changed the title Change name to? Change name to (if we have to)? Apr 14, 2019
@chjj
Copy link

chjj commented Apr 14, 2019

So, some background on the past 24 hours:

After I saw that email, I took a minute to process it: my initial reaction was rage but a calmer head eventually prevailed.

I figured this law firm was just out looking for things it could make claims against on Google's behalf and that this wasn't necessarily Google targetting us. I figured that if we were to discuss things with the LevelDB team directly, they would be more understanding and be able to clear some of this up. But like @ralphtheninja said, they were surprisingly unsympathetic, and in fact, mentioned that they had had some issues with users being confused by the name "Level" in the past (why they never voiced these concerns to us at any point in the past 7 years remains a mystery).

Like you guys, I thought I might call the firm's bluff by responding the way I did, but it turned out to not be a bluff. So, I think a lot of us last night felt as though we had already tried the "ping some people at Google" route. This isn't just some rogue law firm: it does seem as though Google the company is unhappy with us, so we began discussing tentatively complying by taking the website down. We haven't heard word back, but maybe a show of good faith like that can squash this (?). Not sure. Personally, I do feel like I'm losing part of my soul by complying with this kind of coercion.

That said, taking the website down or eventually renaming it is probably correct (it does seem confusing). I don't think changing the package names makes sense though (nevermind that it's all but impossible to begin with). Google shouldn't have a monopoly on the word "level".

Waiting a while for this to settle, to hear back from them, and to come to consensus on what to do is a good idea though.

Anyway, it seems I've been spontaneously appointed as the de facto spokesperson of Level. If anyone wants to take over the email discussion, let me know (please).

@jprichardson
Copy link

@chjj please forward the letter to jp@exodus.io. I'd like to take a look as well.

We should consider all avenues before any action is taken here.

@rvagg
Copy link
Member

rvagg commented Apr 14, 2019

@chjj @ralphtheninja I saw all the emails and my (admittedly uncharitable) read of the chromium response is that they don't like that the majority of developers that interact directly with leveldb do it through Node and the level* packages and they have to answer questions that have the two concerns mixed into one.

There's an incredible amount of contempt being demonstrated for the users of their open source software. If you don't like having to deal with the unwashed plebs, stop open sourcing stuff. Even if my interpretation is incorrect, the contempt is still being demonstrated by this legal weaponisation alone.

I'm not going to help make this easy for them and it'd be great if we decided collectively to make it difficult for the sake of our users, and just as importantly, for the sake of the next open source project that Google decides to go after. And you know they will, that's just how bullies work, so let's make that next decision a little more difficult.

Maybe this is the proper use of the open collective money? I'm pretty sure we could raise more to engage some professional legal help.

@ralphtheninja
Copy link
Member Author

@rvagg @mikeal First of all I'd like to thank you for stopping by this thread. You both represent a lot of "muscle" in the node ecosystem and it means a lot.

I'm not going to help make this easy for them and it'd be great if we decided collectively to make it difficult for the sake of our users, and just as importantly, for the sake of the next open source project that Google decides to go after. And you know they will, that's just how bullies work, so let's make that next decision a little more difficult.

I'm not used to dealing with stuff like this so my first reaction was like "eh wtf, help". I don't think anyone currently or previously involved with level wants to do this name change. To me it would feel like losing something dear even though I normally don't have any emotional attachment to code. Anyway, you have my +1.

I can understand their concern about using leveldb.org as website, but claiming level as well in the process feels wrong to me. They also have concerns about confusion, which sounded like they have had to deal with hundreds of confused users where the leveldb google group was mentioned (https://groups.google.com/d/forum/leveldb).

I made a search for leveldown and levelup and noticed just a handful threads and this was from 2013 to today, where most of them were from 2013 and 2014 and I wouldn't really call this a big confusion. Why not just kindly redirect people instead? We do this all the time in github issues.

Maybe this is the proper use of the open collective money? I'm pretty sure we could raise more to engage some professional legal help.

That's a great idea. I think we have like 300 bucks right now, which probably doesn't take us that far, but it's a start at least.

@ralphtheninja
Copy link
Member Author

If anyone feels like stepping up to @chjj 's unfortunate random main spokesman role, please just raise your hand. @chjj shouldn't have to deal with this if he's not comfortable doing so. Maybe getting some professional legal help would solve this?

@chjj
Copy link

chjj commented Apr 14, 2019

@rvagg, I can't say I disagree. Though I'm partly inclined to give the leveldb guys the benefit of the doubt. I don't know them well enough to say and this decision still may have been out of their hands (I have no idea how Google works internally or what the culture is like). I will say I was astonished by the response though. I did not expect that. =/

Maybe this is the proper use of the open collective money? I'm pretty sure we could raise more to engage some professional legal help.

The way I see it, if we choose to refuse, even with legal help, we should take one major thing into account. Right now, we should probably assume that our potential adversary already has emails prepared, ready to be sent to Github, NPM, Afilias, etc. in the case that we don't comply. I imagine these emails would be requests to remove us on trademark grounds. Even if we win this fight, we have to consider the possibility that Level may be censored into oblivion for the whole duration of the legal conflict and only restored after it ends. It won't be an easy task, and our users may end up getting hurt no matter what.

I've spent the past two years trying to figure out how to make naming uncensorable. Even if we decide to resist this and succeed in doing so, it's still just treating the symptoms of a much more deadly disease. I feel like the current game is just broken. Decentralized naming is probably the only solution to this nonsense in the long term. It'll take a while to get there though.

Anyways, I'm not saying it's not worth fighting the good fight here, but we should be prepared for whatever gets thrown our way.

I'll be on board for whatever the org and the community decides, but I'm going to try to take a break from thinking about this for tonight. It's kind of wearing me out.

@vweevers
Copy link
Member

We've shown good faith by taking down the website and will be updating the Twitter account as well. This clears up potential confusion regarding affiliation with Google and/or the LevelDB project.

Beyond that, "LevelDB" is not a registered trademark in US or EU. "Level" is, but completely unrelated, not owned by Google. So IANAL they don't have much to stand on.

I only say this now because I feel empowered by the support of @rvagg and @mikeal. Most of the time it's just @ralphtheninja and me who are active in the Level org. I forget there's a strong community and I very much appreciate everyone chiming in.

That said, the first thing to do now, is wait for a reply from Google or the law firm. Getting defensive too soon can hurt us too. So far the conversation has been reasonably amicable - at least enough so that there's room for a peaceful resolution. Whatever emotion there was in the beginning - I apologize for my part in that - was limited to unofficial channels. It cooled down quick.

I'll be on board for whatever the org and the community decides, but I'm going to try to take a break from thinking about this for tonight. It's kind of wearing me out.

@chjj Should you receive any more emails, forward them to us, we'll figure something out. ❤️

@mikeal
Copy link

mikeal commented Apr 14, 2019

We’re reaching a point now where a lot of different concerns are getting bundled together. Let me try to untangle this a bit into 3 separate concerns.

  1. Calling “level” ecosystem stuff “leveldb.”
  2. Calling “level” ecosystem stuff “level*”
  3. Calling “leveldb” stuff (like leveldb bindings for nodejs) “leveldb”

IMO, there’s a lot of good reasons to stop calling level ecosystem stuff “leveldb.” It is legitimately confusing and if people who actually need to get support from the level community are finding the wrong channels because of this it’s probably worth changing. This also isn’t a very disruptive change from what I can tell and mostly involves renaming the website and setting up a forward. You could argue that this renaming would actually make all of the naming more consistent.

Calling the level ecosystem “level*” is the situation we’re already in and given that we can’t actually rename the packages and migrate people easily it’s the situation we’re sort of stuck with indefinitely. Trying to rename the entire ecosystem would effectively fork the naming and cause a lot of unnecessary pain.

In the last case, calling “leveldb” stuff “leveldb” we should also persist. This is the proper description of these projects and packages. In this case, people other than Google have written and maintain bindings to their project dramatically increasing the user base and if they had issues with that they should have said so 7 years ago. These kinds of bindings are what you expect the intention of Google open sourcing leveldb was in the first place. This use is properly descriptive of their project, this shouldn’t be causing any confusion as the name properly describes these project’s relationship to leveldb.

@vweevers
Copy link
Member

FWIW we have been and are continuing to improve documentation to clarify the relation between Level and LevelDB, as well as to shift the focus away from LevelDB (because leveldown is not the only store anymore). Where use of the term LevelDB was not necessary, we removed it. The website was the notable exception. I've been working on that today.

@vweevers
Copy link
Member

An example of that effort: Level/levelup@911c8b2#diff-04c6e90faac2675aa89e2176d2eec7d8L33 (2017).

@chjj
Copy link

chjj commented Apr 14, 2019

IMO, there’s a lot of good reasons to stop calling level ecosystem stuff “leveldb.” It is legitimately confusing and if people who actually need to get support from the level community are finding the wrong channels because of this it’s probably worth changing.

In the last case, calling “leveldb” stuff “leveldb” we should also persist. This is the proper description of these projects and packages.

Just a thought: In our defense, I would argue that calling some stuff "leveldb" is not as questionable as it sounds. It's convention in a lot of language ecosystems to name the binding after the project, even if it's unofficial. I've personally done this: my node.js binding to libunbound is called "unbound". Here's an unofficial golang binding to libunbound, also called "unbound". Here's a golang DNS server plugin, also called "unbound".

I'd wager the authors of unbound don't mind and if anything are happy that people are using their project (this is what I thought would be the case with LevelDB, but I guess not).

This has sent me down a rabbit hole. Here's another example: LevelDB has an official golang reimplementation from Google, but here's an unofficial one named goleveldb with ~3,000 stars. Here's a java reimplementation of leveldb called "leveldb" with ~1,000 stars (this is not even a binding, it's a completely different project!). Here's a python binding -- the repo is called "py-leveldb", but it's registered in pip as "leveldb" (pip install leveldb).

I feel like precedent matters a lot, and there's definitely precedent for doing this kind of thing. And after looking at all of this now, I'm really scratching my head as to why we're being targetted for just using "level".

edit: fixed some mistaken project descriptions.

@rvagg
Copy link
Member

rvagg commented Apr 15, 2019

OK, it sounds like we don't have an urgent need for action, but it's definitely worth talking these issues through so we're more clear when forced to take additional steps. Maybe we should try and have a realtime call to discuss strategy if/when the next interaction happens demanding further action.

@jprichardson
Copy link

I've reviewed the letter. I don't see how there is a leg for them to stand on. To my knowledge, there is no trademark for "Level" in the context of databases. Also, as @chjj pointed out, in every programming language, the DB adapter usually has a name similar to the database.

Exodus has a trademark legal firm on retainer, I'd be happy to have them investigate and respond if this is of interest to everyone?

@tynes
Copy link

tynes commented Apr 15, 2019

This makes me think that Google could have a service in the pipelines that they want to call Level* or is based on LevelDB and is targeting JavaScript developers.

@Thann
Copy link

Thann commented Apr 15, 2019

I think their lawyers are out looking for a reason to get paid

@dominictarr
Copy link
Contributor

I'm with @rvagg and @mikeal

Of course the bindings are named after the things they bind too. is there something that isn't like that? wouldn't it be more confusing if ports and bindings weren't named after the thing they bound to?

If it's not trademarked... then what sort of claim are they making?

@rvagg
Copy link
Member

rvagg commented Apr 16, 2019

Let's hold fire for now. We're aware that internal discussions are taking place at Google regarding this matter. I'm confident that some parties to those discussions know the damage this will cause to their reputation and the precedent it will set (way beyond just leveldb and Node) if they proceed. So, let's proceed in good faith and wait for word from them before we take any concrete action. That doesn't preclude lining up potential next steps, but for now let's assume that they will take the sensible option and we can step down.

@pwnall
Copy link

pwnall commented Apr 23, 2019

On behalf of Google's LevelDB team, we apologize for any confusion caused by our legal team's recent letter to a Node.js LevelDB project. We have now set up an internal process to ensure that all relevant stakeholders are informed of a potential issue relating to an OS project, and all attempts will be made to resolve any concerns informally. To clarify, we do not have an objection to existing NPM packages bearing various level* names, so long as it is clear that they are not directly associated with Google. We also have no objection to any referential uses of the LevelDB name, e.g., "___ for LevelDB." We greatly appreciate the members of this community and look forward to our continued collaboration; again, we are sorry for any misunderstanding.

@vweevers
Copy link
Member

Thank you @pwnall. I'm glad we were able to work it out. In the end, this has been a good thing!

Thanks as well to everyone who commented, offered support, reached out to relevant parties and helped guide us to this satisfactory conclusion. I love this community.

@No9
Copy link
Contributor

No9 commented Apr 24, 2019

Thanks @pwnall for the update and thanks @rvagg for the zen like guidance :)
Delighted this didn't turn into something.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion Discussion
Projects
None yet
Development

No branches or pull requests