Skip to content

Move SigVisualizer into the monorepo as a GPLv3 component - #13

Merged
neuromechanist merged 1 commit into
mainfrom
10-move-sigvisualizer-into-the-monorepo-as-a-component
Jul 20, 2026
Merged

Move SigVisualizer into the monorepo as a GPLv3 component#13
neuromechanist merged 1 commit into
mainfrom
10-move-sigvisualizer-into-the-monorepo-as-a-component

Conversation

@neuromechanist

Copy link
Copy Markdown
Member

Closes #10. Third of three component moves (#8 pylsl, #9 LabRecorder both merged).

This one is different: upstream is GPLv3

Unlike pylsl and LabRecorder (both MIT), upstream SigVisualizer is licensed GPLv3. The fork neuromechanist/Secure-SigVisualizer had replaced that with proprietary terms (commits 2dad2be, c07cf36). This PR restores the upstream GPLv3 license and relicenses the README to match, per the component licensing policy of retaining upstream terms.

Because GPLv3 is copyleft, this component stays GPLv3, and the security integration added to it is GPLv3 too. That is correct and required, not a choice.

The added code contains no cryptography (verified)

The security implementation lives entirely in liblsl-secure. The additions here only read status through the public LSL API:

  • lsl_security_helper.py is a pylsl compatibility shim that ctypes-declares lsl_get_security_enabled / lsl_get_security_fingerprint and attaches wrapper methods
  • paintwidget.py / sigvisualizer.py display a lock indicator and detect mismatches

No libsodium calls, no key handling, no encryption. Same as the other two components; the difference here is purely the upstream license.

Licensing structure

  • Root LICENSE COMPONENT LICENSING POLICY generalized to name the GNU GPL and state that a copyleft component is aggregated under GPLv3 section 5, not brought under the proprietary terms
  • THIRD-PARTY-NOTICES.md references apps/SigVisualizer/LICENSE rather than inlining 674 lines
  • COMPONENT.md records provenance and the GPLv3 status

For OIC review (flagged, not blocking)

SigVisualizer (GPLv3) imports the in-repo pylsl and, at the user's runtime, loads liblsl-secure (proprietary) via ctypes. Whether distributing a GPLv3 application whose intended runtime dependency is a proprietary library creates any obligation is a question for counsel. It is the same question that already applies to the drop-in library-replacement route, and co-location in one repository is mere aggregation under GPLv3 section 5. Merging this is reversible if OIC prefers a different arrangement.

Docs

docs/integration/sigvisualizer.md previously told users to clone from labstreaminglayer/App-SigVisualizer; it now builds the in-repo component against apps/pylsl.

Vendored at apps/SigVisualizer/ from neuromechanist/Secure-SigVisualizer
branch feature/security-status, based on upstream aa754e6.

Upstream SigVisualizer is GPLv3, not MIT. The fork had replaced that
with proprietary terms; this restores the upstream GPLv3 license and
relicenses the README to match. Because GPLv3 is copyleft, the security
integration added here is GPLv3 too, even though (verified) it contains
no cryptography: lsl_security_helper.py is a pylsl compatibility shim
and the paintwidget changes read stream status through the public LSL
API. The security implementation stays in liblsl-secure.

- LICENSE: component policy generalized to name the GNU GPL and state
  that a copyleft component is aggregated under its own license (GPLv3
  section 5) rather than brought under the proprietary terms
- COMPONENT.md records the GPLv3 status, the pylsl runtime dependency,
  and flags the GPL-app-links-proprietary-library question for OIC
- THIRD-PARTY-NOTICES.md references the component LICENSE rather than
  inlining 674 lines
- docs/integration/sigvisualizer.md now builds the in-repo component
  against apps/pylsl instead of cloning upstream
- Dropped vendored .github workflows

Closes #10
@neuromechanist neuromechanist linked an issue Jul 20, 2026 that may be closed by this pull request
8 tasks
@neuromechanist
neuromechanist merged commit 1cf8b10 into main Jul 20, 2026
10 checks passed
@neuromechanist
neuromechanist deleted the 10-move-sigvisualizer-into-the-monorepo-as-a-component branch July 20, 2026 03:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Move SigVisualizer into the monorepo as a component

1 participant