OfficeDev/office-ui-fabric-core

Legal Question

Opened this issue · 5 comments

I would like to use the "Design Toolkit" and implement a custom UI framework. The reason for this is because we are neither using React nor Angular. Our framework will probably be a commercial-opensource product. Can I compare the "Design Toolkit" to "Material Design" with regards to licensing and usage? What are the restrictions? (Except of course restrictions on branding and such)

@Jahnp, have we ever discussed the license for the toolkits? My assumption is that these are intended as reference only and shouldn't be re-distributed as part of any other project/framework.

@mikewheaton @Jahnp To make it a bit clearer. I would like to use the Design ToolKit XD file as a reference point and (re)implement the components with a different framework/language. The net result should look exactly like the components offered by the office-ui-fabric team, only not using React or Angular.

My concern is the " Fabric Assets License and Guidelines" point 1 which if I understand correctly prevents using the toolkit along with the assets in any other project that does not work or is implemented with Microsoft API.

Any thoughts?

Jahnp commented

Sorry for the delay @blendsdk , and thanks for the clarification. That's a pretty different question from one concerning the toolkit itself :)

Could you expand on the intended usage of the framework you plan to build? Is it an implementation of Fabric in another JS library, though still used to target Microsoft platforms? e.g. office-ui-fabric-vue?

The usage you describe might still be covered by the license. See #1019. Here's the important bit (emphasis mine):

...the only constraint to be aware of is the Fabric assets license, which covers scenarios and proper usage of Fabric's fonts and icons. Creating & publishing framework code that could deliver these assets like ng-officeuifabric is fine under the licensing agreement, since projects like that could be used to create Office Add-ins, SharePoint web parts, or other Office integrations. It's publishing and marketing the apps that would use those assets via a project like this that would fall under the scope of the license agreement.

Essentially, it's the branded elements like the fonts and icons which are covered by the license.

Does this make sense?

Thank you for your answer @Jahnp . So let me elaborate a little on my plans.

I am developing a framework using TypeScript. Unlike most of the "frameworks" found today (Angular, Vue, React, etc..), it is not tag/markup based. It is API based. Meaning that you don't need to define and use (custom) tags, jsx, sass, etc... to implement the structure of your application. You call an API and it takes care of browser implementation details for you.

It is designed for building line-of-business web/mobile applications and not so much presentational (landing) websites. It is a font-end framework. It is not exclusive to MS web technologies (APT.NET, Office/SharePoint plugins). You can also use it with Node.js, PHP, or even Java backends.

I am planning to distribute my framework as a commercial product, hopefully to compensate the 2+ years of on going work it has required to get it this far. For now I use it to develop custom solutions for my own clients.

At the moment the UI implemented of my framework is based on "Material Design”, where I have no restrictions for redistributing the “Roboto” fonts and the “Material Design Icons” as long as I comply with the Apache 2 license.

Since “Material Design” is not for everyone, I thought why not implement the Fabric components with my system too. But before I can do that, I need to know that I won’t be getting into legal issues because I will need to redistribute the fabric icons, and fonts as part of a commercial package some day. Next to that, I would need to call the UI implementation something along the lines of “Blend Fabric UI Components”. It is not really clear to me if what I want is legally allowed?

To summarise: I study the “Design Toolkit” and implement the UI components with my system, then I would like to be able to bundle the fabric fonts and icons as part of my commercial-open-source framework. I will have my own branding but the words "Office UI Fabric" need to be used in the docs and texts etc..

I hope you can help me find some answers.

BTW,
If you are interested, the API looks something like this:

var app = new Blend.fabric.Application({

  // config properties  
  title: 'My CRM',

  // Themes and Colors
  theme: {
      themeColor: Blend.fabric.colorPalette.BLUE
  }

  // A toolbar
  toolbar: new Blend.fabric.toolbar.Toolbar({

      items: [

          // Push everything to the right
          new Blend.fabric.toolbar.Spacer({
              flexSize: 1
          }),

          // Search field with a magnify button.
          new Blend.fabric.form.SearchField({

              // Delegate the click event to a controller
              onClick: searchController.createAction('search')
          })

      ]
  })
})

// Instance of the controller used above.
var searchController = new CRM.controllers.SearchController();


// The controller itself.
namespace CRM.controllers {

  export class SearchController extends Blend.mvc.Controller {

      // The action called when the magnify icon on the search field is clicked
      search(sender: Blend.form.TextField) {
          axios.get('/path/to/backend/search/endpoint', {
              ....
              ....
          })
      }
    }
}

@Jahnp @mikewheaton do you have any update on my question?
Thank you.