Co stanowi język programowania i jak się prawa autorskie do języka programowania?


12

Postanowiłem stworzyć własny język programowania, głównie dla zabawy. Jednak zainteresowałem się aspektem prawnym tego wszystkiego.

Możesz na przykład licencjonować określone programy na określonych warunkach. Jak jednak radzisz sobie z licencjonowaniem języka ? Poza tym mam na myśli nie tylko implementację języka (kompilatora i VM), ale sam standard. Czy brakuje mi czegoś innego do języka programowania?

Co chciałbym osiągnąć dzięki takim licencjom:

  1. Zrób to całkowicie FOSS (czy językiem może być FOSS, czy może to implementacja, która może być FOSS?)
  2. Ustanowić siebie jako autora (czy możesz być legalnie autorem języka? Lub, po prostu, wdrożenie?)
  3. Spraw, aby każdy, kto wdrożyłby mój język, musiałby mnie przypisać (w stylu MIT. Pamiętaj, że nie mam nadziei, że ktokolwiek kiedykolwiek to zrobi, po prostu się uczę).

Myślę, że rozwiązaniem byłoby osobne licencjonowanie maszyny wirtualnej i kompilatora dla mojego języka jako „oficjalnej implementacji”, a następnie licencjonowanie dokumentu projektowego jako samego języka .

Czego dokładnie tu brakuje?


10
Re (1): Specyfikacja języka nie jest oprogramowaniem, więc FOSS nie ma zastosowania. Ponadto, gdybym natknął się na język, którego autor próbował czegoś takiego, w jakimkolwiek celu, byłbym bardzo ostrożny (to znaczy prawdopodobnie nie używałbym go wcale). Cuchnie uzależnieniem od kontroli, nieufnością i słabą znajomością zagadnień prawnych.

Nie wiem, jaki jest twój cel końcowy. Być może, gdybyśmy o tym wiedzieli, moglibyśmy pomóc Ci wypełnić luki, jak to osiągnąć. Przydałoby się również wiedzieć, kto jest twoim rynkiem docelowym.
pdr

Zaraz, jak etykietowanie czegokolwiek cuchnie uzależnieniem od kontroli, @delnan? A może miałeś na myśli prawo autorskie do specyfikacji? AFAIK, prawa autorskie nie są z natury złe, wcale nie muszą być restrykcyjne.
jcora,

1
Myślę, że wtedy zachowam specyfikację w domenie publicznej.
jcora,

1
Nie jestem prawnikiem, ale prawo autorskie do dokumentu (nawet jeśli określa on język) nie jest prawem autorskim do języka. Na przykład używam słowników chronionych prawem autorskim i mówię po francusku, nie naruszając ich.
Basile Starynkevitch,

Odpowiedzi:


15

Disclaimer.IANAL ();

Nie możesz posiadać praw autorskich do języka programowania, tak jak nie możesz mieć prawa autorskiego do języka mówionego. Możesz licencjonować określoną implementację języka, a nawet sprzedawać ten kompilator tak, jak Borland robił z Delphi przez wiele lat.

Wiele języków ma dziś BDFL (Benevolent Dictator for Life), który określa, co wchodzi w język, a co nie. Python, Ruby i Perl są tego przykładem.

Inne języki oficjalnie opracowały normy przez jedną z kilku płyt normalizacyjnych, zazwyczaj ANSI, ECMA lub ISO. Przykłady obejmują C, C ++ i JavaScript.

Niektóre języki mieszczą się w bardziej mętnych obszarach z powodu polityki między firmami. Java jest przykładem, ponieważ Microsoft znajduje się na niektórych standardowych kartach.

Niektóre języki zmieniają się między sobą, zwykle z BDFL na Standardowy, C jest dobrym przykładem.

W zależności od specyfikacji języka niektórzy autorzy kompilatorów mogą implementować różne funkcje na różne sposoby (na przykład CPython vs PyPy) lub dodawać funkcje (Microsoft C ++ vs GNU C ++ lub MySQL vs PostGreSQL vs SQL Server)


1
Loglan jest precedensem dla statusu konstruowanych języków, które nie podlegają prawom autorskim. Lojban jest efektywną otwartą reimplementacją Loglana. Z drugiej strony Sun pozwał Microsoft za wdrożenie Java Javy w Visual J ++
Jon Purdy

2
@JonPurdy: W Javie jest to problem znaku handlowego, a nie prawa autorskie. Spójrz, jak LiveScript stał się Javascript, podczas gdy było to w interesie Sun / Netscape, później Microsoft wydał JScript, aby pokazać podobieństwo, unikając problemów ze znakami towarowymi, a później wszyscy zgodzili się na ECMAScript jako wspólną nazwę.
pdr

1
@ JonPurdy, @ pdr Myślę, że w sporze między firmą Sun i Microsoft były również kwestie prawa umów. Microsoft licencjonował technologię JVM od firmy Sun, a część licencji zgadzała się nie tworzyć niestandardowych implementacji Java.
Charles E. Grant,

1
@pdr O ile pamiętam, istniała bardzo precyzyjna specyfikacja tego, co powinna zapewnić implementacja Java (w tym kilka tysięcy testów, które powinna przejść implementacja). Microsoft został pozwany, ponieważ mieli niestandardową implementację (prawdopodobnie w celu zablokowania użytkowników poprzez dystrybucję apletów, które działałyby tylko z Internet Explorerem). Po nieudanej strategii dystrybucji niestandardowej implementacji Java, Microsoft zaczął tworzyć C #.
Giorgio

3
@Giorgio - właśnie. Sun sprzeciwił się temu, że MSFT nazywało swój język Java, dokonując znaczących zmian (aby zablokować go na platformie MSFT), w gruncie rzeczy produkowali fałszywą Javę
Martin Beckett,

8

Każda próba ograniczenia / kontroli / posiadania języka jest skazana na niepowodzenie. Aby język był powszechnie używany, ludzie muszą czuć, że: a) rozwiązuje problem lepiej niż jakiś istniejący, ustalony język, oraz b) czują się komfortowo, że nagle nie znajdą się na niewłaściwym końcu prawa jazdy / prawa garnitur. Jeśli uważają, że to w ogóle możliwe, pójdą gdzie indziej.

Oferuję absolutną tragedię Java, którą wykonują Larry Ellison (AKA Oracle) i Google. Ellison przeprowadził globalną operację prawną, która osiągnęła 2 rzeczy:

  1. Pokazał światu, że pozwałby każdego, o którym myślał, że może zdobyć pieniądze, i
  2. Zagwarantował, że przyszłe opracowania, które nie były jeszcze całkowicie związane z Javą, wybiorą coś innego niż Java.

Google nie tylko wygrało ten proces, ale wypatrzyło żałosne roszczenia Oracle dotyczące patentów i praw autorskich. Po tym, nikt, kogo znam, nie uwierzy w jakąkolwiek „technologię open source”, na której są odciski palców Oracle (pomyśl: MySQL).

Jeśli chcesz, możesz pominąć stulecia programowania za Javą i przejść od razu do ignorowania ... po prostu poproś wszystkich deweloperów o podpisanie umowy, zanim będą mogli używać Twojego nowego języka.


1
+1 za wyjaśnienie. Trafiłeś w drugi punkt na temat Javy. Był to główny czynnik decydujący o tym, czy nadal używać Java lub sam stworzyć podobny język. Chociaż tak naprawdę nie oczekuję, że ludzie będą go używać, jak powiedziałem, do celów osobistych i edukacyjnych. Ale chciałbym zachować moje opcje otwarte.
jcora,

1
Aktualizacja: w maju 2014 r. Federalny sąd okręgowy cofnął tę decyzję i stwierdził, że interfejsy API mogą być chronione prawami autorskimi. eff.org/deeplinks/2014/05/…
nikt

Ale nie o to chodziło w moim poście. Po całkowitej klęsce potężnej gry Oracle z Javą nikt przy zdrowych zmysłach i bez znajomości historii świadomie nie umieści tego rodzaju pętli na szyi swojej firmy lub projektu. W każdym razie odwrócenie przez Sąd Apelacyjny służy jedynie nadaniu jeszcze większego znaczenia argumentowi za używaniem tylko narzędzi i języków OSS. To zadziwiające i głęboko ironiczne, że ** dziura taka jak Larry Ellison powinna być osobą, która zapewni prawdziwą wartość oprogramowania Libre / Free nawet najbardziej upartemu kapitalistowi lub przedsiębiorcy.
Peter Rowell,

2

Możesz napisać gramatykę dla swojego języka i dochodzić swoich praw autorskich. Oczywiście nie uchroniłoby cię to przed napisaniem innej gramatyki opisującej ten sam język.

Moim największym pytaniem byłoby „dlaczego chcesz”. W końcu prawdopodobnie chcesz, żeby ludzie przyjęli twój język. Jeśli ktoś twierdzi, że go stworzył, wystarczy dobra obecność w sieci, byś mógł nazwać go kłamcą.

Jak zauważyli inni, jeśli Twoim głównym celem jest zapobieganie kradzieży nametwojego języka przez innych, bardziej przydatny byłby znak towarowy.


Pisanie gramatyki dla języka nadal nie chroniłoby tego. Jedyne, co by to zrobił, to powstrzyma kogoś przed ponownym zapisaniem gramatyki w podobny sposób jak ty. Mógłbym napisać gramatykę dla języka angielskiego, co nie powstrzymałoby cię od możliwości publikowania postów na SE.
Gavin Coates

Gavin - napisałem… „to nie ochroniłoby cię przed kimś, kto pisze inną gramatykę opisującą ten sam język”. Mam nadzieję, że to wyjaśnia, że ​​takie prawa autorskie nie chroniłyby języka, a tylko taki sposób opisu języka. Mimo to - może sprawić, że człowiek poczuje się lepiej.
Dominic Cronin

1

Z czasem pojawiły się różne odpowiedzi na to pytanie:

W 2012 r. Na podobne pytanie udzielono odpowiedzi „nie możesz” w sprawie Oracle vs Google w odniesieniu do korzystania z Java API w Androidzie, a podobnej odpowiedzi udzielono w przypadku implementacji przez WPL języka programowania SAS we własnym produkcie. Uzasadnieniem tej odpowiedzi było to, że interoperacyjność między różnymi implementacjami języka wymaga kopiowania składni języka programowania, a zatem powinno to być dozwolone na zasadach „dozwolonego użytku”.

Jednak w 2014 r. Amerykański sąd apelacyjny uznał, że słuszna odpowiedź prawna brzmi „tak, możesz”, uzasadniając to tym, że aby zapewnić interoperacyjność (lub nie), i na jakich zasadach, według własnego uznania, oryginalne prawo autorskie uchwyt. W tej najnowszej interpretacji, jeśli ktoś nie chce, abyś był zgodny z jego językiem programowania, interfejsem API lub inną specyfikacją interfejsu, ma wszelkie prawo cię zatrzymać.

W skrócie, od 2014 r. Można prawdopodobnie słusznie założyć: tak, język programowania (jego składnia, struktura i sekwencja konstrukcji językowych) może być chroniony prawem autorskim

Pamiętaj, że prawo autorskie podlega lokalnej interpretacji i że przepisy w twoim kraju mogą się różnić. W razie wątpliwości skonsultuj się z prawnikiem ...

(usunięto resztę argumentu, zobacz historię)

Zastrzeżenie: IANAL


Annnddd ... to orzeczenie zostało właśnie uchylone. Wystąpił Oracle i tym razem sędziowie nie byli programistami.
jmoreno

@jmoreno dzięki za zwrócenie na to uwagi. zaktualizowałem odpowiedź, aby odzwierciedlić ten nowy rozwój ...
miraculixx

Chcę tylko powiedzieć, że nie jest prawnikiem ani psychiatrą, tylko programistą, ale orzeczenie z 2014 roku wydaje mi się szalone. To mnóstwo poleceń!
jmoreno
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.