Is it okay to put the C API libraries in a public GitHub repo?

In another discussion on these forums, a developer asked if Trimble might have any objection to an authorized developer including the C API dynamic-link libraries in a GitHub public repo. As it seems clear that developers are expected to distribute those libraries with their applications, and GitHub is a popular distribution option, I’d be surprised if Trimble did object. But @thomthom pointed out that they do keep the download links for those libraries behind a login-wall, and advised holding off on putting them in public repos for now.

Now, a few GitHub repos (including one provided by Unity) already include those files. But I think it’s a fair question and would rather hear from SketchUp/Trimble before presuming on the answer. I tried to get in touch with their legal department (I’m a lawyer myself, so sometimes general counsels’ offices will take my calls). But after some time on hold, I gave up and decided to ask here, hoping a SketchUp/Trimble person can give us the answer.

So, SketchUp/Trimble folks, is it okay for authorized developers when distributing their applications via public GitHub repos to include the C API dynamic-link libraries (SketchUpAPI.dll and SketchUpCommonPreferences.dll)?



In a private topic (on the same subject) from June of 2018 (so over a year ago,) …
@markv suggested the following text be added to any project to meet the attribution clause of the API Terms …

Sketchup SDK
Copyright © 2018 Trimble Navigation Limited. All rights reserved.
Use of the Sketchup SDK requires compliance with any applicable law, as well as compliance with and agreement to these terms of service:

This, IMO, should cover the clause that requires developer’s to inform and hold their users to the same terms of use.

This is not legal advice but, personally, I would agree. But I’m not Trimble. Since a SketchUp Team Member said we should hold off from doing this (putting the C API DLL files in a public repo, that is), I’m hoping we can get an explicit answer from Trimble. If nothing appears here in a few days, I will try again to contact their legal department. Unfortunately, they don’t make that easy. Their main phone number put me on a hold for a long time yesterday. The only e-mail address I could find was for their General Counsel, and that was on a federal filing. Not sure he’d be pleased to have me pestering him from that direction. That leaves snail-mail, which we lawyers tend to like (because we prefer a paper record), but we developers hate (because we prefer an answer asap).

But I’ve seen that SketchUp team members are highly interactive with us developers here in these forums, so I’m hoping that @thomthom, or one of his colleagues, can make contact with the appropriate people inside Trimble and help us out.

I should have used IMLO (In My Layman’s Opinion) :wink:

I also noticed that the repo has not just the DLLs, but “most of” an old version (18.0.somethin’) of the C API SDK in the GitHub repo. The repo owner omitted the docs and samples folders, and reorganized the libraries and header files into a more concise nested folder scheme (rather than separate folder for each as in the actual SDK.)

Not so great an idea as the version is already out of date.

I agreed (beforehand) with Thomas that API type repos should tell the user to install the SketchUp C API SxS (side by side) as a resource to the repo code.

Night before last I installed the Visual Studio Community edition, and I see there is a tab in the project settings to specify references. Is this where I’d enter the path to the SketchUp C API installation?

In the past, SketchUp employees have not been allowed to give legal advice, even on their own Terms documents.

The best we can hope for is Trimble corporate legal to revise the Terms document(s).

I also. But Thomas is a Norwegian cyber commuter. He was a party to the private topic over a year ago, and nothing happened as a result of that informal discussion. No change in the terms, no clarifications in the SDK docs. I “invited” Chris Fullmer to the thread as I believe he’s the Extensibility Team manager.

What a mess. On the one hand, it is good practice to include the versions of any dependencies you rely on in a release (as your product may not be compatible with later versions). On the other hand, Trimble may feel that distributing their .dll files is okay while distributing those other parts of the SDK is not okay. Furthering the “informal” guidance, the Developers’ Guidelines say this:

That’s for extensions, of course, but it takes note of the fact that some things won’t run without additional libraries that they are saying you must supply or instruct the user on how to get them.

Now, all of this is already on the honor system as far as non-developer end users go. That is, if we developers are authorized to redistribute the C API library files, that does not mean our customers are authorized to do so. Might be wise to tell those customers that they have an unlimited license to use and sell what they bought from us, but not to copy it and, in particular, not to distribute or make other use of any libraries in the product they bought from us. But good luck enforcing that last part.

So the same thing applies here. If we use GitHub do distribute the same files we would otherwise distribute in, say, a .zip file, we can put the same restriction in our licenses in the GitHub repo. For example, we could say, “All files in the API directory are copyright Trimble and may not be distributed by you to anyone else. The rest of this stuff is licensed as per the MIT [or whatever] license.” Again, good luck enforcing that.

Now, without getting technical, I’ll just say there are other reasons to put the SDK behind a login wall and limit it to authorized developers than just wanting to control who gets a copy and who doesn’t. Some of those have to do with preserving your ownership rights. There are others beyond that. Nevertheless, if we can get a clear statement from Trimble’s legal department (and I would quite understand it that other employees are not supposed to be giving legal advice), that would settle it.

Good move. Maybe he can help us make contact with Trimble’s lawyers.

Thing is, Trimble clearly wants us to use their materials and to create products we distribute. It’s in their corporate interests for obvious reasons. But lawyers are often one of two kinds: those who understand the business interests of their clients, and those that just play it safe (and tend to say “no” to everything).

We’ll just have to wait and see what they are willing to do.

Forgot to mention that he removed the PDF file of the Trimble API Terms and instead just stuck a weblink to it on his repo’s README. (This does not ensure that the enduser “receives a copy of the terms”.)

Elsewhere however he’s included a License file that quotes the standard MIT License with his own copyright. This could lead to others thinking they can treat the SketchUp C API files (which are in a subfolder of the one in which resides the MIT License,) as if they are distributed under the MIT License.

Yes, that’s a problem with a lot of open-source licenses. They seem to be written with the assumption that you are free to distribute everything it takes to run your application, without obligation to anyone who wrote some part of it that you are using, and under some other license. What we need is a version of the MIT license that starts like this:

Then Appendix A should read like this:

You know, the “API” and those two files are not the same thing. I think I’ll go ahead and include the files on the repo, with that additional license term. I’m only distributing the files that way, not the API and not the entire SDK.

In all of our discussions about this, we’ve ignored the fact that Microsoft has a dog in this hunt as well. Note this language from the SketchUp SDK documentation page:

And they don’t say a word about copyrights or limitations (probably because Microsoft got it right a long time ago, and encourages distribution of those two files).