I haven't done or used any SDKs but you could explore the forum to see what's going on. Clicking the All tags link on the left sidebar and select sdk and you'll get a load of reading.
The IA driver modules, e.g. for Ethernet/IP, will not use any reverse engineering to get advanced functions. Users like @pturmel are happy to reverse engineer to offer advanced functionality.
@Kevin.Herron Thank you for the suggestions. In my case, I don't use any drivers for OPC, all MQTT here. You can create custom functions just using the built-in Jython correct? No need for a module?
@pturmel That makes sense about the intellectual property. I guess building a module hides any code from anyone being able to view it when they have the .modl file.
You can create arbitrary user-defined functions in the project library, and they'll be available anywhere in the project inheritance chain starting from that project.
You can create arbitrary system.* scripting functions, available globally, via the module SDK.