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
wire-desktop: refactor to add Darwin support #64931
Conversation
adding @silverhook for legal review, as I am not a lawyer. I don't think that the restrictions that Wire has added would be considered permissable "additional terms" as per GPL3, section 7 but instead be a "further restriction". |
I didn’t dive deep, but at a quick glance, I’d agree with @armijnhemel that this would go into the “further restrictions” territory. But also that these “further restrictions” fall away, if you modify the client in a way to not connect to Wire’s own servers. It seems like a very mixed bag to me. |
I work at Wire and have poked a collegue at the company who might be able to help with this question. |
@toonn I've made a patch to fix some style issues and to make it easier to update manually |
@worldofpeace, I applied your patch, I'd originally grouped the |
@toonn The client source code is only governed by GPLv3. The terms you quote apply to the usage of Wire servers, not the client server. |
Although I agree that these terms only seem to be when the Wire servers are used (and not when your own server is used), they do read on the client code and are, I think, a "further restriction" according to the license. |
I should have clarified: I work for Wire. The terms of use only govern Wire accounts (which is a prerequisite for using the Wire servers). |
pkgs/applications/networking/instant-messengers/wire-desktop/default.nix
Outdated
Show resolved
Hide resolved
But it is not "terms of use"! The README actually calls them "restrictions" :-) "Additionally, if you choose to build an Open Source App, certain restrictions apply" I absolutely understand why you would want these restrictions as rogue code could interfere with your operations, but the way it is currently worded it reads on the client code and thus could be seen as a "further restriction" according to the license. Personally I would move these restrictions to general terms and conditions and just terminate people's accounts if they don't comply with those rules. GPL3, section 6 would already allow you to do this: "Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network." It might be worthwhile to talk to an experienced open source lawyer. I would be more than happy to give some suggestions for various jurisdictions (Germany, Switzerland, Italy, Spain, UK, etc.) |
pkgs/applications/networking/instant-messengers/wire-desktop/default.nix
Outdated
Show resolved
Hide resolved
1bf0dcd
to
f1142e9
Compare
32dbea3
to
f5beda5
Compare
@raphaelrobert, thanks for the clarification. But if that is case, please make sure to clarify it in the license itself and official documentation, instead of an issue buried on a source code forge. |
@silverhook I'm not sure what you mean exactly. The README file points to the license file directly for all source code licensing questions:
|
@raphaelrobert, the relevant part of the https://github.com/wireapp/wire-desktop/blob/staging/README.md reads as follows (emphasis mine):
The parts emphasised in bold, seem to be connected to the license of the code, not the Terms of Service of the official Wire server(s). I agree that you clarification makes sense, but it is not (unambiguously) reflected in the It would be good to re-write the wording in order to clarify the distinction between the license of the code (GPL-3.0) and the terms of service that apply when a client connects to the official Wire servers. |
Thanks for the feedback @silverhook! I guess we could make it more clear that the README is just an extract of the Terms of Use. |
Yes, this would, I think, suffice (as I already commented). It basically comes down to "if you mess with our operations, we will terminate your account" and that's perfectly fine. For the rest: what @silverhook said :-) |
Ping @worldofpeace. |
@grahamc at #64931 (comment) you said "this is very fishy". I'm not sure what you meant by that and what to change, and @toonn changed their expression significantly f5beda5. |
@worldofpeace, I made the changes in response to @grahamc's complaints. They didn't like the @grahamc also didn't like that all this derivation does is fetch the |
Did you discuss in private? Because he only left that comment here. At any rate I'm sure the changes are fine, going to give it the last look over since it has been a week here for me. |
We discussed in #nixos-dev or #nixos-chat, not quite sure. I could share the relevant parts of my logs if necessary. Note that these changes were made almost a week ago. I didn't ping until now because I figured people are busy and this isn't high priority anyway. |
Thanks for clearing it up @toonn, it just confused me as to where the inspiration for these changes were coming from. @GrahamcOfBorg build wire-desktop |
downloadPage = https://wire.com/download/; | ||
license = licenses.gpl3Plus; | ||
maintainers = with maintainers; [ toonn worldofpeace ]; | ||
platforms = [ "x86_64-darwin" "x86_64-linux" ]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should set this independently in darwin
and linux
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done, considered this metadata for the entire derivation, which is indeed compatible with both platforms now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
May have gotten messy with my commit message, do I need to stick to the package: reason
convention for all of them?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It should be fine since it's one package, squashing should be easy.
linux = stdenv.mkDerivation rec { | ||
inherit pname version meta; | ||
|
||
platforms = [ "x86_64-linux" ]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
platforms = [ "x86_64-linux" ]; | |
meta.platforms = [ "x86_64-linux" ]; |
same for the other
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can and should we use the same trick as for version
and sha256
? Or does that depend on meta.platforms
somehow?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Well for those, it's just done for ease of manual maintainability. I don't expect to ever have to change this.
dc42bbd
to
9545ef1
Compare
@GrahamcOfBorg build wire-desktop |
@toonn Can you squash your commits? |
@worldofpeace, should we worry about the ofborg failure? |
Oh, I just now noticed that. |
Added a `longDescription` and `downloadPage`. Also added myself to `maintainers`. I fixed up the `license` because it's actually GPLv3 *or later*. Note that terms and conditions apply though I don't feel like they violate the GPL-ness of the code.
Wire Desktop is available for linux, mac os and windows. I figured adding darwin support would be cromulent. Note that the versions don't align 100%, this is how it's released upstream. I refactored the derivation to seperate all the linux-specific parts. I also sorted the dependencies and grouped them. The changes were based on the derivation for electron. I changed the construction from calling `mkDerivation` on a conditional merger of two sets by moving the `mkDerivation` calls into the conditional and up to the local bindings for `linux` and `darwin`. This required moving `pname` and `meta` up to local bindings.
4730bdd
to
4665e88
Compare
I undid this change when merging staging-next into staging because of a merge conflict. Please open a new PR for staging to reapply the change. |
Nevermind, it is in. However, there was a problem with evaluation, see 15564fb. |
@FRidh, does this require further action? Would my original approach work better maybe? Then |
Motivation for this change
The derivation didn't have Darwin support but the software does.
I refactored the package putting all the linux/darwin specific stuff in their own attrsets and then that's merged into the common bits like
pname
andmeta
.I updated the
meta
while I was at it. The license in the repo is actually GPLv3 or later but I'm not sure whether that's accurate because terms and conditions apply.You can find them in the README for the project, reproduced here for convenience:
Things done
sandbox
innix.conf
on non-NixOS)nix-shell -p nix-review --run "nix-review wip"
./result/bin/
) Tested the executable inside the.app
.nix path-info -S
before and after) Tried to but the original derivation wouldn't build on darwin. The result is about 150MB though.