Problem polega na tym, że zdefiniowanie "do celów zarobkowych" jest diabelnie trudne, nie da się tego zrobić dobrze, jednoznacznie. Taki warunek zwyczajnie nie nadaje się jako warunek udzielenia licencji, choć oczywiście mnóstwo ludzi i podmiotów próbuje go używać.
Znacznie lepsza opcją jest copyleft (jak w GPL / AGPL). Copyleft generalnie wycina wszelkie wielkie korpo na dzień dobry — Google oficjalnie zabrania swoim pracownikom nie tylko korzystania z kodu na AGPL w projektach firmy, ale wręcz posiadania narzędzi upublicznianych na licencji AGPL na ich urządzeniach!
Z drugiej strony, jakieś NGOsy, niezależni developerzy, jakiś zainteresowany dzieciak ślęczący po nocach, mogą spokojnie z tego kodu korzystać, pod warunkiem, że jeśli udostępnią swoje zmodyfikowane wersje, udostępnią je wraz z kodem i na tej samej licencji.
Również bardzo ważne: licencje takie jak GPL czy AGPL nie są licencjami wyłącznymi. To oznacza, że możesz np. swoim komercyjnym klientom udzielić licencji jakiejkolwiek innej, bez copyleftu, pozwalając im wewnętrznie rozwijać to oprogramowanie w modelu bardziej zamkniętym, a jednocześnie udostępnić kod na AGPLu publicznie. Innymi słowy Twoi klienci płacili by za to, że mogą sobie rozwijać swoją zamkniętą wersję.
Ja generalnie upubliczniam swój kod na AGPLu. Dla mnie to idealne rozwiązanie, żadna duża firma tego nie tknie — chyba, że bardzo im zależy, wtedy zagadają i zapłacą za odrębną licencję. A jednocześnie pozwalam losowym ludziom z Internetów swobodnie korzystać i rozwijać, o ile podzielą się swoimi zmianami.
Kontekst: robiłem kiedyś szkolenia z prawa autorskiego i wolnych licencji. Nie jestem prawnikiem, ale nie jestem też randomem z internetów, który przejrzał dwa artykuły na wikipedii i próbuje "zabłysnąć wiedzą".