Servita-Community / ServitaFirmware

The main firmware for the Servita and ServitaDuo base devices.
1 stars 1 forks source link

Attributions and Copyright Statement #65

Open dan-servita-team opened 2 months ago

dan-servita-team commented 2 months ago

We need to attribute any libraries which require it in the code, along with insert our copyright statement which I will get together.

dan-servita-team commented 2 months ago

// This project uses the FastLED library. // FastLED is licensed under the MIT License. // Copyright (c) 2013 FastLED // For more information, visit https://github.com/FastLED/FastLED

include

dan-servita-team commented 2 months ago

When you use LGPL-3.0 libraries in your project, the licensing requirements depend on how you use those libraries. Here are the key points for static linking:

Static Linking

If you statically link to LGPL-3.0 libraries, the combined work (your application and the library) must comply with LGPL-3.0. This has the following implications:

  1. Combined Work Under LGPL-3.0: The LGPL-3.0 license applies to the entire combined work, which means you must allow users to modify and relink the LGPL-3.0 library.
  2. Source Code and Relinking Information: You need to provide the source code for the LGPL-3.0 libraries and any modifications, along with build scripts and instructions for users to relink the modified library with your application.

Licensing Your Own Codebase

Practical Steps

  1. README.md Example:

    # My Project
    
    This project is licensed under the CC BY-NC License. However, it includes certain third-party libraries that are licensed under the LGPL-3.0.
    
    ## Third-Party Libraries
    
    ### AsyncTCP
    AsyncTCP is a library for asynchronous TCP communication for ESP32, created by Me-No-Dev. It is licensed under the LGPL-3.0 License.
    
    For more information, visit the [AsyncTCP GitHub repository](https://github.com/me-no-dev/AsyncTCP).
    
    ### ESPAsyncWebServer
    ESPAsyncWebServer is an asynchronous web server library for ESP8266 and ESP32, created by Me-No-Dev. It is licensed under the LGPL-3.0 License.
    
    For more information, visit the [ESPAsyncWebServer GitHub repository](https://github.com/me-no-dev/ESPAsyncWebServer).
    
    ## Licensing Information
    
    - **My Project**: Licensed under the CC BY-NC License.
    - **AsyncTCP and ESPAsyncWebServer**: Licensed under the LGPL-3.0 License. 
    
    For the full license texts, see the `LICENSE` directory.
  2. LICENSE Directory Structure:

    LICENSE/
    ├── CC_BY_NC.txt
    ├── LGPL-3.0-AsyncTCP.txt
    └── LGPL-3.0-ESPAsyncWebServer.txt
  3. Attribution in Source Code:

    // File: network_module.cpp
    
    // This file uses the AsyncTCP library.
    // AsyncTCP is licensed under the LGPL-3.0 License.
    // Copyright (c) 2017 Me-No-Dev
    // For more information, visit https://github.com/me-no-dev/AsyncTCP
    
    #include <AsyncTCP.h>

Conclusion

By dynamically linking LGPL-3.0 libraries or properly managing static linking requirements, you can use LGPL-3.0 libraries in your project without forcing your entire codebase under LGPL-3.0. Instead, you can keep your primary codebase under CC BY-NC while ensuring compliance with LGPL-3.0 for the sections of your project that use these libraries. Proper documentation and clear separation of licenses are crucial in maintaining this compliance.

dan-servita-team commented 2 months ago

// File: main.cpp

// This project uses the AsyncTCP library. // AsyncTCP is licensed under the LGPL-3.0 License. // Copyright (c) 2017 Me-No-Dev // For more information, visit https://github.com/me-no-dev/AsyncTCP

include