It’s the developer that marks the extension as compatible but I’m not sure to what degree you can hold the developer responsible for doing so. If someone develops an extension, e.g. as a hobby, and then simply don’t have the time or interest to test it for all new versions, or die, then you can’t really force them. If publishing an extension came with requirements of updating it I think fewer people would want to do it. That said, in my experience most developers seem to mark there extension as compatible. I mostly see this message for extension written eons ago by someone no longer active in the community.
The message is not just a legal requirement. Extensions that uses compiled code need to be recompiled for each new Ruby version. Extensions written in pure Ruby should be compatible, but aren’t always as some developers use hacks that no longer works in newer SU versions.
I think warning the user the extension might not work but still let the user try anyway is a quite reasonable approach. Perhaps there could be a link to a help article describing what extensions typically are compatible and what typically are not.
The linked video is from 2017 so Aaron couldn’t know if the extension would later be marked as compatible with SU 2018 or 2019.
I’m not sure how Trimble would be more proactive in ensuring compatibility. Changes to the Ruby API are very carefully designed to avoid breaking compatibility and when it does it is typically because extension developers used the API in a way that was never intended, which is discouraged. Updating the Ruby version requires compiled Ruby extensions to be recompiled, there isn’t really any way around it and holding on to an old Ruby version would cause other issues.
I don’t know if its worth it to put resources into manually checking the hundreds of extensions. Staff with the technical know-how would probably do more good in say support. There has been some thoughts about automatically check what extensions are compatible by seeing if they use complied code, but that wouldn’t catch pure Ruby extensions that for other reasons are incompatible (hacky code, conceptually clashes with new features etc). In the end such a system could probably just tell you how likely an extension is to work in your SU version, and I’m not sure if it is helpful for the end user to see or just raise more question about what such a value means, how it was calculated and how to interpret it.
Even pure Ruby extensions are not always compatible, because SketchUp also upgrades the version of Ruby, and Ruby is not always retro-compatible. For instance:
That happens in rare cases too, which makes it harder to automatically check compatibility. Sure static code analysis could catch a lot of these but then such a system itself would need to be updated each time something new is removed.