Re: ESP32 I2S audio recording is incomplete

2023-10-19 Thread Simon Filgis
Hi Simona,

SD Cards have busy time times of 500ms max (per spec) for saving data
internally. I saw SD Cards taking over a second of busy time.

You can check with the Oszilloskop. I think data0 is the pin that signalize
busy...

Per design, you need a stream buffer that can handle your audio stream up
to 500ms...

Regards,

Simon

--
Ingenieurbüro-Filgis
USt-IdNr.: DE305343278
--
sent by mobile phone

Alan C. Assis  schrieb am Do., 19. Okt. 2023, 23:36:

> Hi Simona,
>
> On 10/19/23, Simona Toaca  wrote:
> > Hello,
> > I am trying to record audio using a MEMS microphone, but the final
> > recording is missing parts periodically (for example, with a sample rate
> of
> > 8kHz, there are parts ~1s long missing once every ~10-11s. Using a sample
> > rate of 48kHz, the period is ~1s long). This is my first time working
> with
> > I2S and I can't figure out what causes this behaviour.
> >
> > My setup is as follows:
> > - the microphone has 24-bit depth in a 32-bit word (MSB first) when
> > transmitting data
> > - i am using nxrecorder to record the pcm audio onto an SD card (device
> > pcm_in0)
> > - to listen to the recording i import the file into Audacity (24-bit, Big
> > Endian)
> >
> > Defconfig regarding audio:
> > CONFIG_AUDIO=y
> > CONFIG_AUDIO_BUFFER_NUMBYTES=6144 (from the i2s buffer which is 8192
> bytes,
> > 3/4 of it is "useful" info, 6144 bytes in total)
> > CONFIG_AUDIO_DMA=y
> > CONFIG_AUDIO_FORMAT_RAW=y
> > CONFIG_AUDIO_I2S=y
> > CONFIG_DMA=y
> > CONFIG_DMA_LINK=y
> > CONFIG_DRIVERS_AUDIO=y
> > CONFIG_ESP32_I2S0=y
> > CONFIG_ESP32_I2S0_BCLKPIN=25
> > CONFIG_ESP32_I2S0_DATA_BIT_WIDTH_24BIT=y
> > CONFIG_ESP32_I2S0_DINPIN=26
> > CONFIG_ESP32_I2S0_SAMPLE_RATE=8000
> > CONFIG_ESP32_I2S0_WSPIN=27
> > CONFIG_ESP32_I2S=y
> > CONFIG_I2S_DMADESC_NUM=4
> >
> > I tried modifying the number of audio buffers and also making them
> bigger,
> > but that did not solve the problem.
> > Any ideas on what could cause this?
> >
>
> Could it be something related to SDCard storage? Maybe it needs some
> optimization!
>
> Please try using a RAMDISK of 1MB+ and save the file to it.
>
> If it works we will know the SDCard could be the limitation of this
> configuration.
>
> BR,
>
> Alan
>


Re: ESP32 I2S audio recording is incomplete

2023-10-19 Thread Alan C. Assis
Hi Simona,

On 10/19/23, Simona Toaca  wrote:
> Hello,
> I am trying to record audio using a MEMS microphone, but the final
> recording is missing parts periodically (for example, with a sample rate of
> 8kHz, there are parts ~1s long missing once every ~10-11s. Using a sample
> rate of 48kHz, the period is ~1s long). This is my first time working with
> I2S and I can't figure out what causes this behaviour.
>
> My setup is as follows:
> - the microphone has 24-bit depth in a 32-bit word (MSB first) when
> transmitting data
> - i am using nxrecorder to record the pcm audio onto an SD card (device
> pcm_in0)
> - to listen to the recording i import the file into Audacity (24-bit, Big
> Endian)
>
> Defconfig regarding audio:
> CONFIG_AUDIO=y
> CONFIG_AUDIO_BUFFER_NUMBYTES=6144 (from the i2s buffer which is 8192 bytes,
> 3/4 of it is "useful" info, 6144 bytes in total)
> CONFIG_AUDIO_DMA=y
> CONFIG_AUDIO_FORMAT_RAW=y
> CONFIG_AUDIO_I2S=y
> CONFIG_DMA=y
> CONFIG_DMA_LINK=y
> CONFIG_DRIVERS_AUDIO=y
> CONFIG_ESP32_I2S0=y
> CONFIG_ESP32_I2S0_BCLKPIN=25
> CONFIG_ESP32_I2S0_DATA_BIT_WIDTH_24BIT=y
> CONFIG_ESP32_I2S0_DINPIN=26
> CONFIG_ESP32_I2S0_SAMPLE_RATE=8000
> CONFIG_ESP32_I2S0_WSPIN=27
> CONFIG_ESP32_I2S=y
> CONFIG_I2S_DMADESC_NUM=4
>
> I tried modifying the number of audio buffers and also making them bigger,
> but that did not solve the problem.
> Any ideas on what could cause this?
>

Could it be something related to SDCard storage? Maybe it needs some
optimization!

Please try using a RAMDISK of 1MB+ and save the file to it.

If it works we will know the SDCard could be the limitation of this
configuration.

BR,

Alan


Re: CTU CAN FD driver multi-licence for Nuttx

2023-10-19 Thread Andrew Dennison
Hi Brennan,

Is this something anyone can do? If so I'll take this step to move forward:
it's been unclear how to get this question resolved.

Kind regards,

Andrew

On Fri, Oct 20, 2023, 1:36 AM Brennan Ashton 
wrote:

> There is way to much speculation here (and some jus wrong statements).
> Someone just needs to open an Apache JIRA ticket with legal and you will
> get an offical answer.
>
> --Brennan
>
> On Thu, Oct 19, 2023, 2:54 AM Andrew Dennison <
> andrew.denni...@motec.com.au>
> wrote:
>
> > Hi all,
> >
> > Wow, i didn't think we were doing anything other than trying to help
> > facilitate adding more driver support. The easiest approach seems to be
> to
> > get the os independent components licenced by the original authors in a
> > compatible way so we can move forward with the technical element.
> >
> > My recollection is the license A OR B proposal came from a document on
> the
> > Apache website we were pointed to on this mailing list a few months ago,
> > but maybe I'm mistaken.
> >
> > Is this really the first time this has been debated? There seemed to be
> > examples of this exact model when a had a quick look around.
> >
> > I just want to find out if there is a way forward compatible with Apache
> > requirements: IANAL and don't want to speculate on the way forward, just
> > thought it was easier to ask.
> >
> > Can anyone in the project help facilitate an "official" answer from
> Apache?
> >
> > Kind regards,
> >
> > Andrew
> >
> > PS: the driver authors are not subscribed, so probably haven't seen this
> > recently debate. I'll coordinate with them if there is a way forward.
> >
> > On Thu, Oct 19, 2023, 6:49 PM Sebastien Lorquet 
> > wrote:
> >
> > > Are you seriously taking legal advice, on behalf of an apache project,
> > > from a generative language model?
> > >
> > > Sebastien
> > >
> > >
> > > Le 17/10/2023 à 22:22, Alan C. Assis a écrit :
> > > > Oops, it was: you cannot enforce both at same time.
> > > >
> > > > Actually I think I was wrong (not about enforcing), but the main
> issue
> > > > about Dual license is how the contributions will evolve.
> > > >
> > > > I decided to ask about it to ChatGPT:
> > > >
> > > > "
> > > > Question: if an open-source software X was released as dual license
> > > > GPL and Apache License, can we used it in our project NuttX that used
> > > > Apache License?
> > > >
> > > > If an open-source software X is released under both the GPL (GNU
> > > > General Public License) and the Apache License, you generally have
> > > > some flexibility in how you can use it in your project NuttX, which
> is
> > > > licensed under the Apache License. However, there are important
> > > > considerations and potential complications to keep in mind:
> > > >
> > > >  Compatibility of Licenses:
> > > >  The Apache License and the GPL are generally considered to
> be
> > > > compatible licenses. This means that you can include Apache-licensed
> > > > code in a GPL-licensed project and vice versa without violating the
> > > > terms of either license.
> > > >
> > > >  License Choice:
> > > >  When incorporating dual-licensed code into your project, you
> > > > have a choice in which license to follow. If you choose the Apache
> > > > License, you can do so without any issues, as the Apache License is
> > > > permissive. However, if you choose the GPL, you must comply with the
> > > > terms of the GPL, which may include open-sourcing your entire project
> > > > under the GPL.
> > > >
> > > >  Potential GPL Implications:
> > > >  Using the GPL-licensed version of software X may have
> > > > implications for the licensing of your entire project. The GPL is a
> > > > more restrictive license that requires you to release your entire
> > > > project under the GPL if you use GPL-licensed code. This could affect
> > > > how you distribute your project and any proprietary components within
> > > > it.
> > > >
> > > >  Be Careful with License Mixing:
> > > >  It's important to carefully manage the licensing of each
> > > > component within your project. Ensure that you clearly identify and
> > > > understand the licensing terms of each component and only include
> code
> > > > in your project that is compatible with the licensing choices you
> want
> > > > to make.
> > > >
> > > >  Consult Legal Advice:
> > > >  Dual licensing can be complex, and the specific terms of
> > > > software X may have variations or nuances that need legal
> > > > interpretation. It's advisable to consult with a legal expert who is
> > > > well-versed in open source licensing if you have any doubts or
> > > > concerns.
> > > >
> > > > In summary, you can use the dual-licensed software X in your project
> > > > NuttX that is under the Apache License. However, you need to make a
> > > > conscious choice about which license to follow for the code from
> > > > software X, and be aware of the potential implications, especially if
> > > > you 

Re: Queues

2023-10-19 Thread Tim Hardisty
And FIFO rather than deterministic 


> On 19 Oct 2023, at 20:49, Petro Karashchenko  
> wrote:
> 
> Hi,
> 
> I do not fully understand if you are looking from Application or Kernel
> perspective?
> Also I do not know if the CAN driver is capable of providing you with
> information when the message is actually transmitted on the bus. I mean
> that for example CAN peripheral may have multiple TX buffers and you can
> put your message into one of those, but it can loose internal TX
> arbitration if CAN peripheral picks a buffer holding the lowest CAN-ID
> first, so the mechanism how do you want to ensure that messages are
> transmitted with the chronological order is not clear to me, unless you use
> a special version of the peripheral driver that uses a single TX buffer.
> 
> Best regards,
> Petro
> 
> чт, 19 жовт. 2023 р. о 22:35 Tim Hardisty  пише:
> 
>> Hello helpful people. I am not sure if this is a POSIX or NuttX
>> question, so apologies it it's something I "should" know.
>> 
>> I am looking for a methodology - ideally portable (POSIX) - perhaps a
>> queue, to hold a list of messages (CANbus) that need to be transmitted
>> in the correct chronological order. I have been using linked lists for
>> other things and just about have that sussed (but they do my head in to
>> be honest!) but it doesn't seem quite right for this. I am thinking the
>> set of "dq_" functions are possibly a good solution but I can't find
>> much information/documentation on this and am not sure if its just a
>> NuttX-specific thing, although I see it used heavily for audio playback?
>> 
>> Am I on the right track, or should I be looking at something else?
>> 
>> In essence I want to add (queue?) entries (pointers to message structs)
>> that need to be sent (on a POSIX timer, which I have setup and working
>> well) and once each is transmitted it'll be removed until added again if
>> needed. I want it to be as generic as possible.
>> 
>> Thanks!
>> 
>> TimH (aka TimJTi...new email account)
>> 


Re: Queues

2023-10-19 Thread Tim Hardisty
Application level. Lets assume the CAN driver deals with everything else (Big 
assumption actually but let’s go with it)


> On 19 Oct 2023, at 20:49, Petro Karashchenko  
> wrote:
> 
> Hi,
> 
> I do not fully understand if you are looking from Application or Kernel
> perspective?
> Also I do not know if the CAN driver is capable of providing you with
> information when the message is actually transmitted on the bus. I mean
> that for example CAN peripheral may have multiple TX buffers and you can
> put your message into one of those, but it can loose internal TX
> arbitration if CAN peripheral picks a buffer holding the lowest CAN-ID
> first, so the mechanism how do you want to ensure that messages are
> transmitted with the chronological order is not clear to me, unless you use
> a special version of the peripheral driver that uses a single TX buffer.
> 
> Best regards,
> Petro
> 
> чт, 19 жовт. 2023 р. о 22:35 Tim Hardisty  пише:
> 
>> Hello helpful people. I am not sure if this is a POSIX or NuttX
>> question, so apologies it it's something I "should" know.
>> 
>> I am looking for a methodology - ideally portable (POSIX) - perhaps a
>> queue, to hold a list of messages (CANbus) that need to be transmitted
>> in the correct chronological order. I have been using linked lists for
>> other things and just about have that sussed (but they do my head in to
>> be honest!) but it doesn't seem quite right for this. I am thinking the
>> set of "dq_" functions are possibly a good solution but I can't find
>> much information/documentation on this and am not sure if its just a
>> NuttX-specific thing, although I see it used heavily for audio playback?
>> 
>> Am I on the right track, or should I be looking at something else?
>> 
>> In essence I want to add (queue?) entries (pointers to message structs)
>> that need to be sent (on a POSIX timer, which I have setup and working
>> well) and once each is transmitted it'll be removed until added again if
>> needed. I want it to be as generic as possible.
>> 
>> Thanks!
>> 
>> TimH (aka TimJTi...new email account)
>> 


Re: Queues

2023-10-19 Thread Petro Karashchenko
Hi,

I do not fully understand if you are looking from Application or Kernel
perspective?
Also I do not know if the CAN driver is capable of providing you with
information when the message is actually transmitted on the bus. I mean
that for example CAN peripheral may have multiple TX buffers and you can
put your message into one of those, but it can loose internal TX
arbitration if CAN peripheral picks a buffer holding the lowest CAN-ID
first, so the mechanism how do you want to ensure that messages are
transmitted with the chronological order is not clear to me, unless you use
a special version of the peripheral driver that uses a single TX buffer.

Best regards,
Petro

чт, 19 жовт. 2023 р. о 22:35 Tim Hardisty  пише:

> Hello helpful people. I am not sure if this is a POSIX or NuttX
> question, so apologies it it's something I "should" know.
>
> I am looking for a methodology - ideally portable (POSIX) - perhaps a
> queue, to hold a list of messages (CANbus) that need to be transmitted
> in the correct chronological order. I have been using linked lists for
> other things and just about have that sussed (but they do my head in to
> be honest!) but it doesn't seem quite right for this. I am thinking the
> set of "dq_" functions are possibly a good solution but I can't find
> much information/documentation on this and am not sure if its just a
> NuttX-specific thing, although I see it used heavily for audio playback?
>
> Am I on the right track, or should I be looking at something else?
>
> In essence I want to add (queue?) entries (pointers to message structs)
> that need to be sent (on a POSIX timer, which I have setup and working
> well) and once each is transmitted it'll be removed until added again if
> needed. I want it to be as generic as possible.
>
> Thanks!
>
> TimH (aka TimJTi...new email account)
>


Queues

2023-10-19 Thread Tim Hardisty
Hello helpful people. I am not sure if this is a POSIX or NuttX 
question, so apologies it it's something I "should" know.


I am looking for a methodology - ideally portable (POSIX) - perhaps a 
queue, to hold a list of messages (CANbus) that need to be transmitted 
in the correct chronological order. I have been using linked lists for 
other things and just about have that sussed (but they do my head in to 
be honest!) but it doesn't seem quite right for this. I am thinking the 
set of "dq_" functions are possibly a good solution but I can't find 
much information/documentation on this and am not sure if its just a 
NuttX-specific thing, although I see it used heavily for audio playback?


Am I on the right track, or should I be looking at something else?

In essence I want to add (queue?) entries (pointers to message structs) 
that need to be sent (on a POSIX timer, which I have setup and working 
well) and once each is transmitted it'll be removed until added again if 
needed. I want it to be as generic as possible.


Thanks!

TimH (aka TimJTi...new email account)


Re: [VOTE] Apache NuttX 12.3.0 RC1 release

2023-10-19 Thread Tomek CEDRO
+1 :-)

BUILD HOST:
FreeBSD octagon 13.2-RELEASE-p4 FreeBSD 13.2-RELEASE-p4 GENERIC amd64 .


TARGETS:
1. ESP32.
2. ESP32-C3.
3. ESP32-S2.
4. ESP32-S3.


=== ESP32 ===

% xtensa-esp32-elf-gcc -v
Using built-in specs.
COLLECT_GCC=xtensa-esp32-elf-gcc
COLLECT_LTO_WRAPPER=/usr/home/cederom/.espressif/tools/xtensa-esp32-elf/esp-2021r2-patch5-8.4.0/xtensa-esp32-elf/bin/../libexec/gcc/xtensa-esp32-elf/8.4.0/lto-wrapper
Target: xtensa-esp32-elf
Configured with:
/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/gcc/configure
--build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu
--target=xtensa-esp32-elf
--prefix=/builds/idf/crosstool-NG/builds/xtensa-esp32-elf
--exec_prefix=/builds/idf/crosstool-NG/builds/xtensa-esp32-elf
--with-local-prefix=/builds/idf/crosstool-NG/builds/xtensa-esp32-elf/xtensa-esp32-elf
--with-headers=/builds/idf/crosstool-NG/builds/xtensa-esp32-elf/xtensa-esp32-elf/include
--with-newlib --enable-threads=no --disable-shared
--with-pkgversion='crosstool-NG esp-2021r2-patch5'
--disable-__cxa_atexit --enable-cxx-flags=-ffunction-sections
--disable-libgomp --disable-libmudflap --disable-libmpx
--disable-libssp --disable-libquadmath --disable-libquadmath-support
--disable-libstdcxx-verbose
--with-gmp=/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/buildtools
--with-mpfr=/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/buildtools
--with-mpc=/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/buildtools
--with-isl=/builds/idf/crosstool-NG/.build/xtensa-esp32-elf/buildtools
--enable-lto --enable-target-optspace --without-long-double-128
--disable-nls --enable-multiarch --enable-languages=c,c++
--disable-libstdcxx-verbose --enable-threads=posix
--enable-gcov-custom-rtio --enable-libstdcxx-time=yes
Thread model: posix
gcc version 8.4.0 (crosstool-NG esp-2021r2-patch5)

% /usr/bin/time -h ./tools/configure.sh -B -a ../nuttx-apps.git
esp32-devkitc:coremark
2,88s real  1,49s user  1,61s sys

% /usr/bin/time -h gmake -j8
14,84s real 56,33s user 32,84s sys

% /usr/bin/time -h gmake flash
9,98s real  1,49s user  0,97s sys

% cu -l /dev/cuaU0 -s 115200
can't open log file /var/log/aculog.
Connected
ts Jul 29 2019 12:21:46

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:4540
ho 0 tail 12 room 4
load:0x40078000,len:12344
ho 0 tail 12 room 4
load:0x40080400,len:4124
entry 0x40080680
Running CoreMark...
2K performance run parameters for coremark.
CoreMark Size: 666
Total ticks  : 1218
Total time (secs): 12.18
Iterations/Sec   : 985.221675
Iterations   : 12000
Compiler version : GCC8.4.0
Compiler flags   : -O3 -fno-strict-aliasing -fomit-frame-pointer
-ffunction-sections -fdata-sections
Parallel PThreads : 2
Memory location  : HEAP
seedcrc  : 0xe9f5
[0]crclist   : 0xe714
[1]crclist   : 0xe714
[0]crcmatrix : 0x1fd7
[1]crcmatrix : 0x1fd7
[0]crcstate  : 0x8e3a
[1]crcstate  : 0x8e3a
[0]crcfinal  : 0xa14c
[1]crcfinal  : 0xa14c
Correct operation validated. See README.md for run and reporting rules.
CoreMark 1.0 : 985.221675 / GCC8.4.0 -O3 -fno-strict-aliasing
-fomit-frame-pointer -ffunction-sections -fdata-sections / HEAP /
2:PThreads
~
[EOT]


% /usr/bin/time -h gmake clean distclean
6,92s real  3,12s user  4,08s sys

% /usr/bin/time -h ./tools/configure.sh -B -a ../nuttx-apps.git
esp32-devkitc:nsh
2,88s real  1,51s user  1,59s sys

% /usr/bin/time -h gmake -j8
15,25s real 54,93s user 34,13s sys

% /usr/bin/time -h gmake flash
LD: nuttx
CP: nuttx.hex
MKIMAGE: ESP32 binary
esptool.py -c esp32 elf2image -fs 4MB -fm dio -ff 40m -o nuttx.bin nuttx
esptool.py v4.5
Creating esp32 image...
Merged 1 ELF section
Successfully created esp32 image.
Generated: nuttx.bin (ESP32 compatible)
esptool.py -c esp32 -p /dev/cuaU0 -b 115200  write_flash -fs detect
-fm dio -ff 40m 0x1 nuttx.bin
esptool.py v4.5
Serial port /dev/cuaU0
Connecting.
Chip is ESP32-D0WD-V3 (revision v3.0)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse,
Coding Scheme None
Crystal is 40MHz
MAC: 8c:4b:14:81:0b:ec
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash will be erased from 0x0001 to 0x00031fff...
Compressed 136080 bytes to 62605...
Wrote 136080 bytes (62605 compressed) at 0x0001 in 5.7 seconds
(effective 191.4 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
11,09s real 1,82s user  1,24s sys

% cu -l /dev/cuaU0 -s 115200
Connected
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2

ESP32 I2S audio recording is incomplete

2023-10-19 Thread Simona Toaca
Hello,
I am trying to record audio using a MEMS microphone, but the final
recording is missing parts periodically (for example, with a sample rate of
8kHz, there are parts ~1s long missing once every ~10-11s. Using a sample
rate of 48kHz, the period is ~1s long). This is my first time working with
I2S and I can't figure out what causes this behaviour.

My setup is as follows:
- the microphone has 24-bit depth in a 32-bit word (MSB first) when
transmitting data
- i am using nxrecorder to record the pcm audio onto an SD card (device
pcm_in0)
- to listen to the recording i import the file into Audacity (24-bit, Big
Endian)

Defconfig regarding audio:
CONFIG_AUDIO=y
CONFIG_AUDIO_BUFFER_NUMBYTES=6144 (from the i2s buffer which is 8192 bytes,
3/4 of it is "useful" info, 6144 bytes in total)
CONFIG_AUDIO_DMA=y
CONFIG_AUDIO_FORMAT_RAW=y
CONFIG_AUDIO_I2S=y
CONFIG_DMA=y
CONFIG_DMA_LINK=y
CONFIG_DRIVERS_AUDIO=y
CONFIG_ESP32_I2S0=y
CONFIG_ESP32_I2S0_BCLKPIN=25
CONFIG_ESP32_I2S0_DATA_BIT_WIDTH_24BIT=y
CONFIG_ESP32_I2S0_DINPIN=26
CONFIG_ESP32_I2S0_SAMPLE_RATE=8000
CONFIG_ESP32_I2S0_WSPIN=27
CONFIG_ESP32_I2S=y
CONFIG_I2S_DMADESC_NUM=4

I tried modifying the number of audio buffers and also making them bigger,
but that did not solve the problem.
Any ideas on what could cause this?

Regards,
Simona


Re: CTU CAN FD driver multi-licence for Nuttx

2023-10-19 Thread Sebastien Lorquet

Hi Alan,

Sure, I understand the motivation.

Still, as entertaining as it might be, let's not forget (and not just on 
this point) that language models are generally unreliable. So I would 
tend to be cautious before calling language model output a "point of view".


Whatever, this is not the most important aspect of the discussion.

Best regards,

Sebastien

Le 19/10/2023 à 17:14, Alan C. Assis a écrit :

Hi Sebastien,

I think you missed the point: we are not asking legal advice for an
AI, we are just trying to find other point of view that it could have
found "chewing" millions of thread about license issues.

BR,

Alan

On 10/19/23, Sebastien Lorquet  wrote:

Are you seriously taking legal advice, on behalf of an apache project,
from a generative language model?

Sebastien


Le 17/10/2023 à 22:22, Alan C. Assis a écrit :

Oops, it was: you cannot enforce both at same time.

Actually I think I was wrong (not about enforcing), but the main issue
about Dual license is how the contributions will evolve.

I decided to ask about it to ChatGPT:

"
Question: if an open-source software X was released as dual license
GPL and Apache License, can we used it in our project NuttX that used
Apache License?

If an open-source software X is released under both the GPL (GNU
General Public License) and the Apache License, you generally have
some flexibility in how you can use it in your project NuttX, which is
licensed under the Apache License. However, there are important
considerations and potential complications to keep in mind:

  Compatibility of Licenses:
  The Apache License and the GPL are generally considered to be
compatible licenses. This means that you can include Apache-licensed
code in a GPL-licensed project and vice versa without violating the
terms of either license.

  License Choice:
  When incorporating dual-licensed code into your project, you
have a choice in which license to follow. If you choose the Apache
License, you can do so without any issues, as the Apache License is
permissive. However, if you choose the GPL, you must comply with the
terms of the GPL, which may include open-sourcing your entire project
under the GPL.

  Potential GPL Implications:
  Using the GPL-licensed version of software X may have
implications for the licensing of your entire project. The GPL is a
more restrictive license that requires you to release your entire
project under the GPL if you use GPL-licensed code. This could affect
how you distribute your project and any proprietary components within
it.

  Be Careful with License Mixing:
  It's important to carefully manage the licensing of each
component within your project. Ensure that you clearly identify and
understand the licensing terms of each component and only include code
in your project that is compatible with the licensing choices you want
to make.

  Consult Legal Advice:
  Dual licensing can be complex, and the specific terms of
software X may have variations or nuances that need legal
interpretation. It's advisable to consult with a legal expert who is
well-versed in open source licensing if you have any doubts or
concerns.

In summary, you can use the dual-licensed software X in your project
NuttX that is under the Apache License. However, you need to make a
conscious choice about which license to follow for the code from
software X, and be aware of the potential implications, especially if
you decide to use the GPL-licensed version, as it may affect the
licensing of your entire project. Consulting with a legal expert is a
wise step when dealing with complex licensing issues.
"

So, we are back to square one!

BR,

Alan

On 10/17/23, Alan C. Assis  wrote:

Hi Tomek,

On 10/17/23, Tomek CEDRO  wrote:

To be honest I don't see a big issue of a driver as dual license, we
already have SocketCAN and other drivers as dual license (GPL and
Apache, BSD and Apache, etc). The original Author said the want is to
be released as dual license: A or license B.

Isn't is more A AND B ?

A OR B == I want A but not B so I stick to A ? :-P


No, because technically you can enforce two at same time, in that case
GPL could prevail! :-)


The License war is terrible, I think there is not a single license
compatible with all, even CC0, BSD or public domain cannot be used as
freely was we think. Many countries law, companies, patents, etc,
involved.

BSD and MIT seems most liberal. Apache also clarifies patent stuff.
GPL is viral and enforces GPL on all further works.

As above, if the case is "A AND B" then GPL taints everything to be GPL
too..?


See, the Author defines it as dual license (so yes A "AND" B), but if
project X uses license A it will stick to license A instead of B. If
project Y uses license B it will stick with B instead of A.

So, more precisely it is A XOR B.


Quck search (query: gpl vs apache vs bsd license) resulting quote :

"
I will mainly talk about the practical consequences and not go into

Re: CTU CAN FD driver multi-licence for Nuttx

2023-10-19 Thread Alan C. Assis
Hi Sebastien,

I think you missed the point: we are not asking legal advice for an
AI, we are just trying to find other point of view that it could have
found "chewing" millions of thread about license issues.

BR,

Alan

On 10/19/23, Sebastien Lorquet  wrote:
> Are you seriously taking legal advice, on behalf of an apache project,
> from a generative language model?
>
> Sebastien
>
>
> Le 17/10/2023 à 22:22, Alan C. Assis a écrit :
>> Oops, it was: you cannot enforce both at same time.
>>
>> Actually I think I was wrong (not about enforcing), but the main issue
>> about Dual license is how the contributions will evolve.
>>
>> I decided to ask about it to ChatGPT:
>>
>> "
>> Question: if an open-source software X was released as dual license
>> GPL and Apache License, can we used it in our project NuttX that used
>> Apache License?
>>
>> If an open-source software X is released under both the GPL (GNU
>> General Public License) and the Apache License, you generally have
>> some flexibility in how you can use it in your project NuttX, which is
>> licensed under the Apache License. However, there are important
>> considerations and potential complications to keep in mind:
>>
>>  Compatibility of Licenses:
>>  The Apache License and the GPL are generally considered to be
>> compatible licenses. This means that you can include Apache-licensed
>> code in a GPL-licensed project and vice versa without violating the
>> terms of either license.
>>
>>  License Choice:
>>  When incorporating dual-licensed code into your project, you
>> have a choice in which license to follow. If you choose the Apache
>> License, you can do so without any issues, as the Apache License is
>> permissive. However, if you choose the GPL, you must comply with the
>> terms of the GPL, which may include open-sourcing your entire project
>> under the GPL.
>>
>>  Potential GPL Implications:
>>  Using the GPL-licensed version of software X may have
>> implications for the licensing of your entire project. The GPL is a
>> more restrictive license that requires you to release your entire
>> project under the GPL if you use GPL-licensed code. This could affect
>> how you distribute your project and any proprietary components within
>> it.
>>
>>  Be Careful with License Mixing:
>>  It's important to carefully manage the licensing of each
>> component within your project. Ensure that you clearly identify and
>> understand the licensing terms of each component and only include code
>> in your project that is compatible with the licensing choices you want
>> to make.
>>
>>  Consult Legal Advice:
>>  Dual licensing can be complex, and the specific terms of
>> software X may have variations or nuances that need legal
>> interpretation. It's advisable to consult with a legal expert who is
>> well-versed in open source licensing if you have any doubts or
>> concerns.
>>
>> In summary, you can use the dual-licensed software X in your project
>> NuttX that is under the Apache License. However, you need to make a
>> conscious choice about which license to follow for the code from
>> software X, and be aware of the potential implications, especially if
>> you decide to use the GPL-licensed version, as it may affect the
>> licensing of your entire project. Consulting with a legal expert is a
>> wise step when dealing with complex licensing issues.
>> "
>>
>> So, we are back to square one!
>>
>> BR,
>>
>> Alan
>>
>> On 10/17/23, Alan C. Assis  wrote:
>>> Hi Tomek,
>>>
>>> On 10/17/23, Tomek CEDRO  wrote:
> To be honest I don't see a big issue of a driver as dual license, we
> already have SocketCAN and other drivers as dual license (GPL and
> Apache, BSD and Apache, etc). The original Author said the want is to
> be released as dual license: A or license B.
 Isn't is more A AND B ?

 A OR B == I want A but not B so I stick to A ? :-P

>>> No, because technically you can enforce two at same time, in that case
>>> GPL could prevail! :-)
>>>
> The License war is terrible, I think there is not a single license
> compatible with all, even CC0, BSD or public domain cannot be used as
> freely was we think. Many countries law, companies, patents, etc,
> involved.
 BSD and MIT seems most liberal. Apache also clarifies patent stuff.
 GPL is viral and enforces GPL on all further works.

 As above, if the case is "A AND B" then GPL taints everything to be GPL
 too..?

>>> See, the Author defines it as dual license (so yes A "AND" B), but if
>>> project X uses license A it will stick to license A instead of B. If
>>> project Y uses license B it will stick with B instead of A.
>>>
>>> So, more precisely it is A XOR B.
>>>
 Quck search (query: gpl vs apache vs bsd license) resulting quote :

 "
 I will mainly talk about the practical consequences and not go into
 the nitty gritty. By GPL compatible I mean that a GPL project 

Re: CTU CAN FD driver multi-licence for Nuttx

2023-10-19 Thread Brennan Ashton
There is way to much speculation here (and some jus wrong statements).
Someone just needs to open an Apache JIRA ticket with legal and you will
get an offical answer.

--Brennan

On Thu, Oct 19, 2023, 2:54 AM Andrew Dennison 
wrote:

> Hi all,
>
> Wow, i didn't think we were doing anything other than trying to help
> facilitate adding more driver support. The easiest approach seems to be to
> get the os independent components licenced by the original authors in a
> compatible way so we can move forward with the technical element.
>
> My recollection is the license A OR B proposal came from a document on the
> Apache website we were pointed to on this mailing list a few months ago,
> but maybe I'm mistaken.
>
> Is this really the first time this has been debated? There seemed to be
> examples of this exact model when a had a quick look around.
>
> I just want to find out if there is a way forward compatible with Apache
> requirements: IANAL and don't want to speculate on the way forward, just
> thought it was easier to ask.
>
> Can anyone in the project help facilitate an "official" answer from Apache?
>
> Kind regards,
>
> Andrew
>
> PS: the driver authors are not subscribed, so probably haven't seen this
> recently debate. I'll coordinate with them if there is a way forward.
>
> On Thu, Oct 19, 2023, 6:49 PM Sebastien Lorquet 
> wrote:
>
> > Are you seriously taking legal advice, on behalf of an apache project,
> > from a generative language model?
> >
> > Sebastien
> >
> >
> > Le 17/10/2023 à 22:22, Alan C. Assis a écrit :
> > > Oops, it was: you cannot enforce both at same time.
> > >
> > > Actually I think I was wrong (not about enforcing), but the main issue
> > > about Dual license is how the contributions will evolve.
> > >
> > > I decided to ask about it to ChatGPT:
> > >
> > > "
> > > Question: if an open-source software X was released as dual license
> > > GPL and Apache License, can we used it in our project NuttX that used
> > > Apache License?
> > >
> > > If an open-source software X is released under both the GPL (GNU
> > > General Public License) and the Apache License, you generally have
> > > some flexibility in how you can use it in your project NuttX, which is
> > > licensed under the Apache License. However, there are important
> > > considerations and potential complications to keep in mind:
> > >
> > >  Compatibility of Licenses:
> > >  The Apache License and the GPL are generally considered to be
> > > compatible licenses. This means that you can include Apache-licensed
> > > code in a GPL-licensed project and vice versa without violating the
> > > terms of either license.
> > >
> > >  License Choice:
> > >  When incorporating dual-licensed code into your project, you
> > > have a choice in which license to follow. If you choose the Apache
> > > License, you can do so without any issues, as the Apache License is
> > > permissive. However, if you choose the GPL, you must comply with the
> > > terms of the GPL, which may include open-sourcing your entire project
> > > under the GPL.
> > >
> > >  Potential GPL Implications:
> > >  Using the GPL-licensed version of software X may have
> > > implications for the licensing of your entire project. The GPL is a
> > > more restrictive license that requires you to release your entire
> > > project under the GPL if you use GPL-licensed code. This could affect
> > > how you distribute your project and any proprietary components within
> > > it.
> > >
> > >  Be Careful with License Mixing:
> > >  It's important to carefully manage the licensing of each
> > > component within your project. Ensure that you clearly identify and
> > > understand the licensing terms of each component and only include code
> > > in your project that is compatible with the licensing choices you want
> > > to make.
> > >
> > >  Consult Legal Advice:
> > >  Dual licensing can be complex, and the specific terms of
> > > software X may have variations or nuances that need legal
> > > interpretation. It's advisable to consult with a legal expert who is
> > > well-versed in open source licensing if you have any doubts or
> > > concerns.
> > >
> > > In summary, you can use the dual-licensed software X in your project
> > > NuttX that is under the Apache License. However, you need to make a
> > > conscious choice about which license to follow for the code from
> > > software X, and be aware of the potential implications, especially if
> > > you decide to use the GPL-licensed version, as it may affect the
> > > licensing of your entire project. Consulting with a legal expert is a
> > > wise step when dealing with complex licensing issues.
> > > "
> > >
> > > So, we are back to square one!
> > >
> > > BR,
> > >
> > > Alan
> > >
> > > On 10/17/23, Alan C. Assis  wrote:
> > >> Hi Tomek,
> > >>
> > >> On 10/17/23, Tomek CEDRO  wrote:
> >  To be honest I don't see a big issue of a driver as dual license, we
> >  

Re: CTU CAN FD driver multi-licence for Nuttx

2023-10-19 Thread Alin Jerpelea
Hi all,



I am not a lawyer and understand the multi license code and it is not easy.



Here are my thoughts:

  1. The GPL v2 license is incompatible with Apache v2 license

https://www.apache.org/licenses/GPL-compatibility.html

  2. Software contamination

https://www.mend.io/wp-content/media/2021/04/a-survival-guide-to-using-gpl.pdf

in a monolithic build I interpret the contamination as mandatory release of
all code (as copyleft), that has been incorporated in the contaminated item
(in our case the NuttX image). Please comment if you feel otherwise



I think that the GPL code isolation is not a good approach because the
developer that enables that code should know license implications and take
full responsibility of the implications of enabling GPL code in their local
build



In my opinion

  1. License what can be re licensed as a pure Apache code

  2. The GPL code should stay in a separate git (like will all planned from
the beginning) and not even be downloaded together with NuttX and apps



Best regards

Alin

On Thu, Oct 19, 2023 at 11:55 AM Andrew Dennison <
andrew.denni...@motec.com.au> wrote:

> Hi all,
>
> Wow, i didn't think we were doing anything other than trying to help
> facilitate adding more driver support. The easiest approach seems to be to
> get the os independent components licenced by the original authors in a
> compatible way so we can move forward with the technical element.
>
> My recollection is the license A OR B proposal came from a document on the
> Apache website we were pointed to on this mailing list a few months ago,
> but maybe I'm mistaken.
>
> Is this really the first time this has been debated? There seemed to be
> examples of this exact model when a had a quick look around.
>
> I just want to find out if there is a way forward compatible with Apache
> requirements: IANAL and don't want to speculate on the way forward, just
> thought it was easier to ask.
>
> Can anyone in the project help facilitate an "official" answer from Apache?
>
> Kind regards,
>
> Andrew
>
> PS: the driver authors are not subscribed, so probably haven't seen this
> recently debate. I'll coordinate with them if there is a way forward.
>
> On Thu, Oct 19, 2023, 6:49 PM Sebastien Lorquet 
> wrote:
>
> > Are you seriously taking legal advice, on behalf of an apache project,
> > from a generative language model?
> >
> > Sebastien
> >
> >
> > Le 17/10/2023 à 22:22, Alan C. Assis a écrit :
> > > Oops, it was: you cannot enforce both at same time.
> > >
> > > Actually I think I was wrong (not about enforcing), but the main issue
> > > about Dual license is how the contributions will evolve.
> > >
> > > I decided to ask about it to ChatGPT:
> > >
> > > "
> > > Question: if an open-source software X was released as dual license
> > > GPL and Apache License, can we used it in our project NuttX that used
> > > Apache License?
> > >
> > > If an open-source software X is released under both the GPL (GNU
> > > General Public License) and the Apache License, you generally have
> > > some flexibility in how you can use it in your project NuttX, which is
> > > licensed under the Apache License. However, there are important
> > > considerations and potential complications to keep in mind:
> > >
> > >  Compatibility of Licenses:
> > >  The Apache License and the GPL are generally considered to be
> > > compatible licenses. This means that you can include Apache-licensed
> > > code in a GPL-licensed project and vice versa without violating the
> > > terms of either license.
> > >
> > >  License Choice:
> > >  When incorporating dual-licensed code into your project, you
> > > have a choice in which license to follow. If you choose the Apache
> > > License, you can do so without any issues, as the Apache License is
> > > permissive. However, if you choose the GPL, you must comply with the
> > > terms of the GPL, which may include open-sourcing your entire project
> > > under the GPL.
> > >
> > >  Potential GPL Implications:
> > >  Using the GPL-licensed version of software X may have
> > > implications for the licensing of your entire project. The GPL is a
> > > more restrictive license that requires you to release your entire
> > > project under the GPL if you use GPL-licensed code. This could affect
> > > how you distribute your project and any proprietary components within
> > > it.
> > >
> > >  Be Careful with License Mixing:
> > >  It's important to carefully manage the licensing of each
> > > component within your project. Ensure that you clearly identify and
> > > understand the licensing terms of each component and only include code
> > > in your project that is compatible with the licensing choices you want
> > > to make.
> > >
> > >  Consult Legal Advice:
> > >  Dual licensing can be complex, and the specific terms of
> > > software X may have variations or nuances that need legal
> > > interpretation. It's advisable to consult with a 

Re: CTU CAN FD driver multi-licence for Nuttx

2023-10-19 Thread Andrew Dennison
Hi all,

Wow, i didn't think we were doing anything other than trying to help
facilitate adding more driver support. The easiest approach seems to be to
get the os independent components licenced by the original authors in a
compatible way so we can move forward with the technical element.

My recollection is the license A OR B proposal came from a document on the
Apache website we were pointed to on this mailing list a few months ago,
but maybe I'm mistaken.

Is this really the first time this has been debated? There seemed to be
examples of this exact model when a had a quick look around.

I just want to find out if there is a way forward compatible with Apache
requirements: IANAL and don't want to speculate on the way forward, just
thought it was easier to ask.

Can anyone in the project help facilitate an "official" answer from Apache?

Kind regards,

Andrew

PS: the driver authors are not subscribed, so probably haven't seen this
recently debate. I'll coordinate with them if there is a way forward.

On Thu, Oct 19, 2023, 6:49 PM Sebastien Lorquet 
wrote:

> Are you seriously taking legal advice, on behalf of an apache project,
> from a generative language model?
>
> Sebastien
>
>
> Le 17/10/2023 à 22:22, Alan C. Assis a écrit :
> > Oops, it was: you cannot enforce both at same time.
> >
> > Actually I think I was wrong (not about enforcing), but the main issue
> > about Dual license is how the contributions will evolve.
> >
> > I decided to ask about it to ChatGPT:
> >
> > "
> > Question: if an open-source software X was released as dual license
> > GPL and Apache License, can we used it in our project NuttX that used
> > Apache License?
> >
> > If an open-source software X is released under both the GPL (GNU
> > General Public License) and the Apache License, you generally have
> > some flexibility in how you can use it in your project NuttX, which is
> > licensed under the Apache License. However, there are important
> > considerations and potential complications to keep in mind:
> >
> >  Compatibility of Licenses:
> >  The Apache License and the GPL are generally considered to be
> > compatible licenses. This means that you can include Apache-licensed
> > code in a GPL-licensed project and vice versa without violating the
> > terms of either license.
> >
> >  License Choice:
> >  When incorporating dual-licensed code into your project, you
> > have a choice in which license to follow. If you choose the Apache
> > License, you can do so without any issues, as the Apache License is
> > permissive. However, if you choose the GPL, you must comply with the
> > terms of the GPL, which may include open-sourcing your entire project
> > under the GPL.
> >
> >  Potential GPL Implications:
> >  Using the GPL-licensed version of software X may have
> > implications for the licensing of your entire project. The GPL is a
> > more restrictive license that requires you to release your entire
> > project under the GPL if you use GPL-licensed code. This could affect
> > how you distribute your project and any proprietary components within
> > it.
> >
> >  Be Careful with License Mixing:
> >  It's important to carefully manage the licensing of each
> > component within your project. Ensure that you clearly identify and
> > understand the licensing terms of each component and only include code
> > in your project that is compatible with the licensing choices you want
> > to make.
> >
> >  Consult Legal Advice:
> >  Dual licensing can be complex, and the specific terms of
> > software X may have variations or nuances that need legal
> > interpretation. It's advisable to consult with a legal expert who is
> > well-versed in open source licensing if you have any doubts or
> > concerns.
> >
> > In summary, you can use the dual-licensed software X in your project
> > NuttX that is under the Apache License. However, you need to make a
> > conscious choice about which license to follow for the code from
> > software X, and be aware of the potential implications, especially if
> > you decide to use the GPL-licensed version, as it may affect the
> > licensing of your entire project. Consulting with a legal expert is a
> > wise step when dealing with complex licensing issues.
> > "
> >
> > So, we are back to square one!
> >
> > BR,
> >
> > Alan
> >
> > On 10/17/23, Alan C. Assis  wrote:
> >> Hi Tomek,
> >>
> >> On 10/17/23, Tomek CEDRO  wrote:
>  To be honest I don't see a big issue of a driver as dual license, we
>  already have SocketCAN and other drivers as dual license (GPL and
>  Apache, BSD and Apache, etc). The original Author said the want is to
>  be released as dual license: A or license B.
> >>> Isn't is more A AND B ?
> >>>
> >>> A OR B == I want A but not B so I stick to A ? :-P
> >>>
> >> No, because technically you can enforce two at same time, in that case
> >> GPL could prevail! :-)
> >>
>  The License war is terrible, I think 

Re: CTU CAN FD driver multi-licence for Nuttx

2023-10-19 Thread Sebastien Lorquet
Are you seriously taking legal advice, on behalf of an apache project, 
from a generative language model?


Sebastien


Le 17/10/2023 à 22:22, Alan C. Assis a écrit :

Oops, it was: you cannot enforce both at same time.

Actually I think I was wrong (not about enforcing), but the main issue
about Dual license is how the contributions will evolve.

I decided to ask about it to ChatGPT:

"
Question: if an open-source software X was released as dual license
GPL and Apache License, can we used it in our project NuttX that used
Apache License?

If an open-source software X is released under both the GPL (GNU
General Public License) and the Apache License, you generally have
some flexibility in how you can use it in your project NuttX, which is
licensed under the Apache License. However, there are important
considerations and potential complications to keep in mind:

 Compatibility of Licenses:
 The Apache License and the GPL are generally considered to be
compatible licenses. This means that you can include Apache-licensed
code in a GPL-licensed project and vice versa without violating the
terms of either license.

 License Choice:
 When incorporating dual-licensed code into your project, you
have a choice in which license to follow. If you choose the Apache
License, you can do so without any issues, as the Apache License is
permissive. However, if you choose the GPL, you must comply with the
terms of the GPL, which may include open-sourcing your entire project
under the GPL.

 Potential GPL Implications:
 Using the GPL-licensed version of software X may have
implications for the licensing of your entire project. The GPL is a
more restrictive license that requires you to release your entire
project under the GPL if you use GPL-licensed code. This could affect
how you distribute your project and any proprietary components within
it.

 Be Careful with License Mixing:
 It's important to carefully manage the licensing of each
component within your project. Ensure that you clearly identify and
understand the licensing terms of each component and only include code
in your project that is compatible with the licensing choices you want
to make.

 Consult Legal Advice:
 Dual licensing can be complex, and the specific terms of
software X may have variations or nuances that need legal
interpretation. It's advisable to consult with a legal expert who is
well-versed in open source licensing if you have any doubts or
concerns.

In summary, you can use the dual-licensed software X in your project
NuttX that is under the Apache License. However, you need to make a
conscious choice about which license to follow for the code from
software X, and be aware of the potential implications, especially if
you decide to use the GPL-licensed version, as it may affect the
licensing of your entire project. Consulting with a legal expert is a
wise step when dealing with complex licensing issues.
"

So, we are back to square one!

BR,

Alan

On 10/17/23, Alan C. Assis  wrote:

Hi Tomek,

On 10/17/23, Tomek CEDRO  wrote:

To be honest I don't see a big issue of a driver as dual license, we
already have SocketCAN and other drivers as dual license (GPL and
Apache, BSD and Apache, etc). The original Author said the want is to
be released as dual license: A or license B.

Isn't is more A AND B ?

A OR B == I want A but not B so I stick to A ? :-P


No, because technically you can enforce two at same time, in that case
GPL could prevail! :-)


The License war is terrible, I think there is not a single license
compatible with all, even CC0, BSD or public domain cannot be used as
freely was we think. Many countries law, companies, patents, etc,
involved.

BSD and MIT seems most liberal. Apache also clarifies patent stuff.
GPL is viral and enforces GPL on all further works.

As above, if the case is "A AND B" then GPL taints everything to be GPL
too..?


See, the Author defines it as dual license (so yes A "AND" B), but if
project X uses license A it will stick to license A instead of B. If
project Y uses license B it will stick with B instead of A.

So, more precisely it is A XOR B.


Quck search (query: gpl vs apache vs bsd license) resulting quote :

"
I will mainly talk about the practical consequences and not go into
the nitty gritty. By GPL compatible I mean that a GPL project can use
your code (NOT you can use GPL code).

The MIT and BSD 2 clause licenses have similar requirements: keep the
license file. The BSD 3 clause license adds a term to the BSD 2 that
prevents someone from claiming false endorsement. These three licenses
are compatible with GPLv2 and v3.

The Apache 2.0 license requires you to keep the license file, the
NOTICE file if there is one, and show notice for modified files. It
also addresses some patent-related issues, so companies use it a lot.
It is compatible with GPLv3 but not v2 (due to the patent clauses).

There is also an old BSD license that has an clause