Shopify / polaris

Shopify’s design system to help us work together to build a great experience for all of our merchants.
https://polaris.shopify.com
Other
5.77k stars 1.17k forks source link

New License? #509

Closed jho406 closed 5 years ago

jho406 commented 5 years ago

Hi there!

I noticed a license change in this commit: https://github.com/Shopify/polaris-react/commit/a3c2898ac4d210b2eed6b4e91fa5d7c2a8021d3e

Is there a reason that Polaris no longer MIT Licensed? It would be pretty hard to use Polaris on an external application since visually distinct is open to interpretation and rest soley on Shopify in its sole discretion. Although, i understand the intention.

What are the chances that it could be changed back to MIT?

ghost commented 5 years ago

👋 Thanks for opening your first issue. A contributor should give feedback soon. If you haven’t already, please check out the contributing guidelines. You can also join #polaris on the Shopify Partners Slack.

danrosenthal commented 5 years ago

👋 Hey @jho406, thanks for the issue.

I noticed a license change in this commit: https://github.com/Shopify/polaris-react/commit/a3c2898ac4d210b2eed6b4e91fa5d7c2a8021d3e

That's correct, we're updating our license to a custom license once we release Polaris 3.0.0 (currently in a release candidate).

Is there a reason that Polaris no longer MIT Licensed?

We made this change because the 3.0.0 release will contain components for building an application frame. These components would make visually recreating the Shopify admin possible, so the change to the license was made in order to guard against that.

What are the chances that it could be changed back to MIT?

We are not considering changing back to MIT.

I'm going to close this issue, but still feel free to ask further questions.

jho406 commented 5 years ago

Thanks @danrosenthal. I'd love to build a new external product for the shopify ecosystem and my customers, but this license is a bit overprotective and overreaching, no?

If I wanted to build a better version of the Shopify Digital Downloads App, let's call it SendOwl, then using this library would put me, as a partner, at risk of having my license revoked at the whims of Shopify at any moment. IANAL, but with this license, I feel like I have to make a pretty hefty investment in getting one.

Is there any way to escalate this on your end?

For ammo, here are some examples of successful opensource UI kits used to build ecosystem-ish apps, both can visually replicate the parent product:

  1. https://atlaskit.atlassian.com/ Apache License
  2. https://github.com/OfficeDev/office-ui-fabric-react MIT license
markiiikram commented 5 years ago

Hi @jho406, Thanks for sharing your concerns. We’re currently working to clarify what it means to be visually distinct. To give you a bit more context, these changes were added to promote recognition and trust. We’ve had Partners build experiences that look almost exactly like the Shopify admin which have caused confusion, eroded trust and had negative impact on everyone in the Shopify ecosystem. We added these guidelines to help our Partners create distinctive apps, not to police them. We admit that we’re in a bit of a transition stage, but our goal is to clarify our requirements, so it’s easier to build quality, sustainable apps. In the interim, if you’re open to sharing your designs I’d be happy to review and send you any feedback.

jho406 commented 5 years ago

Thanks @markiiikram, could you also re-evaluate this clause: as determined by Shopify in its sole discretion. I completely understand the why, but its effects are chilling for partners apps, and developers who want to create open source tooling that promotes Polaris (e.g I want to build a Polaris/ Rails starter kit). Reminiscent of React's BSD + PATENT, but more chilling.

Would that clause be more appropriate as a condition for your GraphQL or REST API usage? Or maybe a separate agreement as a precondition for being listed on the Marketplace?

tmlayton commented 5 years ago

@jho406 we have published the first iteration of what visually distinct means. To make it more concrete, here is an example which follows those guidelines.

I understand your concern that Shopify could, per the license, shut down your app and potentially put your business at risk because we deem your app too visually similar. But for now, the clause as determined by Shopify in its sole discretion will remain in the license until, as @markiiikram mentioned, we can be more specific with the requirements for visually distinct.

I would follow @markiiikram’s suggestion to mitigate this risk and work with our team as your are going through designs so you have confidence that what you ship is already approved by Shopify. This is also something that we will have as part of the app review process. You can DM either of us in the Partners Slack if you are not comfortable openly sharing your designs.

We are not considering any changes to the license at the moment so if the clause as determined by Shopify in its sole discretion is something you are uncomfortable with I would suggest not building with Polaris at this time.

And to your previous point about AtlasKit and Fabric licenses – if you dig in further you will notice they have similar custom design guidelines licenses protecting any parts of the system which make use of assets like styles, fonts, icons, and images with specific guidelines as to how you are allowed to use those assets, they just don’t mention it in their Apache 2 or MIT licenses:

Ultimately, our goal is to have very clear and easy to follow guidelines as to what it means to create a visually distinct app with your only concern being the app review process.

BPScott commented 5 years ago

A tiny bit more context on the Atlassian front: Atlaskit packages are licensed individually and as per the Atlaskit README "packages containing styles, assets & icons are most likely licensed under the Atlassian Design Guidelines license" which limits using their design to products related to the Atlassian ecosystem.

jho406 commented 5 years ago

@BPScott @tmlayton Thanks for replying!

I would follow @markiiikram’s suggestion to mitigate this risk and work with our team as your are going through designs so you have confidence that what you ship is already approved by Shopify. This is also something that we will have as part of the app review process. You can DM either of us in the Partners Slack if you are not comfortable openly sharing your designs.

This is a generous offer, and I will definately reach out.

We are not considering any changes to the license at the moment so if the clause as determined by Shopify in its sole discretion is something you are uncomfortable with I would suggest not building with Polaris at this time.

Agreed, however unfortunate. Shame really, I was quite impressed with Polaris in my initial testing.

And to your previous point about AtlasKit and Fabric licenses – if you dig in further you will notice they have similar custom design guidelines licenses protecting any parts of the system which make use of assets like styles, fonts, icons, and images with specific guidelines as to how you are allowed to use those assets, they just don’t mention it in their Apache 2 or MIT licenses:

This is very much correct. Compared with the structure of Polaris Design Guidelines/ Polaris-React, yes, similar, BUT distinct. And the devil in the details. It is best to think of the respective Design Guidelines and React component libraries as two separate entities, each deservingly assigned with its own License. For Fabric, that would be this one for their guidelines, and ofcourse MIT for their React implementation. AtlasKit, being a mono-repo, is similarly structured.

Their intent here is easy to understand, the React component libraries are "Design Guideline compliant", and are just their official React implementation of the design guidelines. Permissively licensed to reap the benefits of OS while retaining protection of the Design Guidelines since the packages contain the design assets.

Polaris-React is quite different in that it chose to enhance their MIT license by taking a few clauses from the Polaris Design License here. This is what I mean by overprotective, Polaris-React already had the implied protection from the Polaris Design License with or without the license change since it contains the design assets. Note I say this without counsel.

The new clauses are what I think are overreaching. Yes its completly possible that Shopify revokes your Polaris Design License, no different with AtlasKit or Fabric. However, with AtlasKit React or Fabric React, with enough effort, we could atleast retheme or make it look different as recourse due to the permissive license of their source. But with Polaris-React, the only recourse is to remove ALL of Polaris-React's components, those you've built that depended on it (unless you replace the dependency), and those that you contributed to Polaris React codebase.

Would it happen? Probably not, I'm a fan of Shopify myself. Is it chilling? Considering that Shopify has products in the marketplace that may compete with partners. Yes.

Perhaps Polaris-React could follow in the footsteps of AtlastKit React and Fabric React? Just a suggestion.

jho406 commented 5 years ago

Also, Probably my last attempt in convincing you fine folks. Thanks again for the discussion.