Если говорить о компилируемых языках, то самостоятельное произведение у Вас будет в том случае, если Ваша программа компилируется без использования «фреймворка» и не подключает его как статическую библиотеку.
Не просто компилируется, но и работает. Для компилируемых языков можно предложить следующий подход. Вы пишите динамическое run time связывание (например, с использованием libdl) и говорите, что ваша программа может работать и с помощью другого плагина других авторов и что пользователю вашей программы надо самостоятельно инсталлировать используемый вами «фреймворк».
Не просто компилируется, но и работает. Для компилируемых языков можно предложить следующий подход. Вы пишите динамическое run time связывание (например, с использованием libdl) и говорите, что ваша программа может работать и с помощью другого плагина других авторов и что пользователю вашей программы надо самостоятельно инсталлировать используемый вами «фреймворк».