Skip to content

Conversation

@ThePassionate
Copy link
Contributor

@ThePassionate ThePassionate commented Jan 19, 2026

Kconfig: Add ALLOW_CUSTOM_PERMISSIVE_COMPONENTS license option

Summary

This PR adds a new license configuration option ALLOW_CUSTOM_PERMISSIVE_COMPONENTS for components that have custom permissive licenses which are not covered by the standard license options. This addresses the need identified in nuttx-apps#3343 for handling components like the Whetstone benchmark which have custom permissive license terms.

Changes

Files Modified

  1. Kconfig

    • Added new ALLOW_CUSTOM_PERMISSIVE_COMPONENTS config option under "License Setup" menu
    • Follows the existing pattern of other license options (BSD, GPL, MIT, etc.)
  2. Documentation/quickstart/configuring.rst

    • Added documentation for the new License Setup section
    • Lists all available ALLOW_*_COMPONENTS options with descriptions

Technical Details

New License Option:

  • Enables projects to explicitly opt-in to using components with custom permissive licenses
  • Covers licenses that allow free use, modification, and distribution
  • Covers licenses with specific attribution or notice requirements
  • Does not cover restrictive/proprietary licenses

Integration:

  • Placed after ALLOW_ICS_COMPONENTS in the License Setup menu
  • Default value is n (disabled) for safety
  • Components with custom permissive licenses should add depends on ALLOW_CUSTOM_PERMISSIVE_COMPONENTS

Impact

  • License Compliance: Provides explicit opt-in mechanism for custom permissive licensed code
  • User Awareness: Forces users to acknowledge custom license requirements
  • Consistency: Follows established NuttX license configuration patterns

Usage

Enable option with:
CONFIG_ALLOW_CUSTOM_PERMISSIVE_COMPONENTS=y

Testing

Configuration option verified.

Reference

which discussed in apache/nuttx-apps#3343

@github-actions github-actions bot added Area: Documentation Improvements or additions to documentation Size: S The size of the change in this PR is small labels Jan 19, 2026
@ThePassionate ThePassionate force-pushed the kconfig-allow-proprietary-components branch from 016e207 to 1fe587f Compare January 19, 2026 12:53
@ThePassionate ThePassionate changed the title Kconfig: Add ALLOW_PROPRIETARY_COMPONENTS option Kconfig: Add ALLOW_CUSTOM_COMPONENTS license option Jan 19, 2026
@acassis
Copy link
Contributor

acassis commented Jan 19, 2026

@ThePassionate the term "PROPRIETARY_COMPONENTS" is too broad, and in fact the license used on whetstone benchmark it not proprietary, but a permissive "non-standard" (like BSD, MIT, APACHE, etc)

This is what chatgpt reported about this license:

What license is this?

It is best described as a custom permissive license with attribution and notice-retention requirements.

Key points:

Copyright is explicitly retained

“(c) Copyright 1998 Painter Engineering, Inc.
All Rights Reserved.”

A specific permission grant follows

“Permission is granted to use, duplicate, and publish this text and program…”

The permission is conditional

“…as long as it includes this entire comment block and limited rights reference.”

So this is not public domain, and not a copyleft license.

What are you allowed to do?

Explicitly allowed:

✔ Use the software
✔ Copy / duplicate it
✔ Publish / redistribute it (source or binary)

There is no restriction on:

Commercial use

Modification

Private or internal use

What are the obligations?

You must:

Preserve the entire comment block
You cannot remove, shorten, or rewrite it.

Preserve the copyright and rights notice
Including:

Copyright

“All Rights Reserved”

Permission text

Attribution to Painter Engineering and Rich Painter

Failing to do this means you lose the permission to use or redistribute.

What is not granted?

Not explicitly granted:

❌ Patent license
❌ Warranty disclaimer
❌ Liability disclaimer
❌ Right to relicense under a different license
❌ Right to remove attribution

So, although it is not a standard open-source license, it is not proprietary.

@ThePassionate
Copy link
Contributor Author

@ThePassionate the term "PROPRIETARY_COMPONENTS" is too broad, and in fact the license used on whetstone benchmark it not proprietary, but a permissive "non-standard" (like BSD, MIT, APACHE, etc)

This is what chatgpt reported about this license:

What license is this?

It is best described as a custom permissive license with attribution and notice-retention requirements.

Key points:

Copyright is explicitly retained

“(c) Copyright 1998 Painter Engineering, Inc.
All Rights Reserved.”

A specific permission grant follows

“Permission is granted to use, duplicate, and publish this text and program…”

The permission is conditional

“…as long as it includes this entire comment block and limited rights reference.”

So this is not public domain, and not a copyleft license.

What are you allowed to do?

Explicitly allowed:

✔ Use the software
✔ Copy / duplicate it
✔ Publish / redistribute it (source or binary)

There is no restriction on:

Commercial use

Modification

Private or internal use

What are the obligations?

You must:

Preserve the entire comment block
You cannot remove, shorten, or rewrite it.

Preserve the copyright and rights notice
Including:

Copyright

“All Rights Reserved”

Permission text

Attribution to Painter Engineering and Rich Painter

Failing to do this means you lose the permission to use or redistribute.

What is not granted?

Not explicitly granted:

❌ Patent license
❌ Warranty disclaimer
❌ Liability disclaimer
❌ Right to relicense under a different license
❌ Right to remove attribution

So, although it is not a standard open-source license, it is not proprietary.

Thanks, i have updated to CUSTOM_COMPONENTS.

@acassis
Copy link
Contributor

acassis commented Jan 19, 2026

Suggestion: move it to ALLOW_CUSTOM_PERMISSIVE_COMPONENTS to make the name more clear to understand

Add a new license configuration option for components that have
custom permissive licenses which are not covered by the standard
license options (BSD, MIT, GPL, etc.).

This option allows projects to explicitly opt-in to using components
with custom permissive licenses that allow free use, modification,
and distribution but may have specific attribution or notice
requirements.

Also update the License Setup documentation section to include
this new option.

Signed-off-by: makejian <[email protected]>
@ThePassionate ThePassionate force-pushed the kconfig-allow-proprietary-components branch from 1fe587f to 10bde48 Compare January 19, 2026 13:02
@ThePassionate ThePassionate changed the title Kconfig: Add ALLOW_CUSTOM_COMPONENTS license option Kconfig: Add ALLOW_CUSTOM_PERMISSIVE_COMPONENTS license option Jan 19, 2026
@ThePassionate
Copy link
Contributor Author

ThePassionate commented Jan 19, 2026

ALLOW_CUSTOM_PERMISSIVE_COMPONENTS

You are right! using "ALLOW_CUSTOM_PERMISSIVE_COMPONENTS" is more accurate and clearer. We want to cover permissive licenses that allow free use but have non-standard terms. @acassis

@anchao anchao merged commit 60b1cef into apache:master Jan 19, 2026
41 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Area: Documentation Improvements or additions to documentation Size: S The size of the change in this PR is small

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants