sgryphon / essential-diagnostics

Essential.Diagnostics contains additional trace listeners, filters and utility classes for the .NET Framework System.Diagnostics trace logging. Included are colored console, SQL database, rolling file, Seq logging server, and in-memory trace listeners, expression filters, activity and logical operation scopes, and configuration file monitoring.
Microsoft Reciprocal License
69 stars 25 forks source link

Licence Clarification - Do We Need To Release the Source Code #27

Closed bkmr closed 5 years ago

bkmr commented 6 years ago

Hi @sgryphon,

Thanks for an awesome library, works really well.

I'm searching for some clarity around your modified licence. We want to include your nuget provided DLLs in our project and the licence is not clear to us about whether that is allowed without us releasing our source.

For example, we have a C# console app that has project references to Essential.Diagnostics.Core and Essential.Diagnostics.RollingFileTraceListener.

We then configure app.config to contain the appropriate entries.

The library then provides the auto-magic connection to System.Diagnostics.Trace.

Does this usage require us to release our source? My reading of your licence is that if we were to use your source code or bundle your DLL into our EXE that would potentially trigger an obligation to release, but otherwise linking to and re-distributing your pre-compiled DLL would not.

sgryphon commented 6 years ago

I am not a solicitor (lawyer), but my understanding is that if you just reference the nuget packages (or DLLs) as you describe, then there is no requirement under the MSRL to release your source.

The MSRL is a well known licence, so you should be able to find more details, but my understanding is that if you just copy (or reference) the nuget packages (or DLLs directly), then that does not trigger the reciprocal clause A; you distribution would have the Essential Diagnostics files (licenced under MSRL), and your own files (licenced however you want).

Using a bundler to combine into a single EXE probably does trigger, but the main time the reciprocal clause would be triggered is if you modify the source code, e.g. make a private fork and add enhancements ("derivative works"); if you ever distribute that file, you would need to open the source code (if you use it internally, and don't distribute, however, the clause does not trigger). This, or copying and pasting the source code into your own code base, are probably the main triggers.

Glad to hear you find it useful.