Ogranicz rozmiar klastra za pomocą modułu o zamkniętym źródle w innym programie open source

10

Pracuję w akademickim instytucie badawczym silnie uzależnionym od obliczeń o wysokiej wydajności. W ciągu 10 lat opracowaliśmy własny kod Fortran, który jest bardzo dobrze oceniany i może działać na bardzo dużych klastrach. Aby większa społeczność badawcza mogła czerpać korzyści z kodu, rozważamy uczynienie go otwartym. Ponieważ jednak nasze fundusze są w dużym stopniu zależne od badań, które możemy przeprowadzić z kodem, strzelilibyśmy sobie w stopę.

Jednym z pomysłów jest ograniczenie liczby procesorów, na których kod może działać, np. Maksymalnie 1000 procesorów zamiast 100 000, których używamy. W ten sposób globalna społeczność naukowa może skorzystać z kodu, ale mielibyśmy przewagę nad rozmiarem problemów, które możemy uruchomić.

Czy taka funkcja jest koncepcyjnie możliwa? Jak można zaimplementować taką funkcję? Zasadniczo chcielibyśmy otworzyć cały kod, ale ograniczać równoległość (przy użyciu MPI) do stałej liczby wątków MPI, na przykład przy użyciu modułu (zamkniętego źródła).

P314402
źródło
Co dokładnie zrobiłby ten moduł o zamkniętym źródle? Jak trudno byłoby komuś innemu go wdrożyć?
svick

Odpowiedzi:

16

Starasz się, aby społeczność badawcza skorzystała, umożliwiając im robienie tego, co robisz, bez umożliwienia im robienia tego, co robisz. To brzmi, jakbyś naprawdę nie dokonał jeszcze zasadniczego wyboru.

Rozwiązania tego typu w oprogramowaniu typu open source raczej nie będą działać: w końcu kod jest oprogramowaniem typu open source. Pierwszą rzeczą, którą zrobią inne instytucje, jest wyrwanie bitu o zamkniętym źródle, zastąpienie go bitem o otwartym kodzie źródłowym bez takich ograniczeń, a potem wszyscy go użyją.

Nie może być kompromisu możliwe: nie open source oprogramowanie, ale licencje sprzedać. Instytucje posiadające licencje mają również prawo do czytania i modyfikowania kodu, ale nie do jego rozpowszechniania. Opłata roczna. W ten sposób możesz odrobić straty w finansowaniu, biorąc niektóre z nich.

Inną opcją jest wydanie starszej wersji, która jest aktualizowana, ale zawsze pozostaje w tyle o pewną liczbę lat. Jednak społeczność typu open source może zająć się projektem i rozwijać nowe funkcje szybciej niż Ty (lub nie; większość ludzi przecenia zainteresowanie innymi swoim oprogramowaniem).

Lub po prostu zwolnij go i skorzystaj z pracy wykonanej przez innych. Zawsze będziesz najlepszym ekspertem od oprogramowania.

RemcoGerlich
źródło
4

Tak naprawdę nie da się tego zrobić.

Idea otwartego źródła polega na tym, że źródło jest otwarte , innymi słowy, ludzie będą mieli do niego dostęp. Z Wikipedii :

W produkcji i rozwoju oprogramowanie typu open source jako model rozwoju promuje powszechny dostęp poprzez bezpłatną licencję do projektu lub planu produktu, a także powszechną redystrybucję tego projektu lub planu, w tym późniejsze jego ulepszenia przez każdego.

Zapewniając uniwersalny dostęp do projektu lub planu, nawet jeśli wydana wersja jest ograniczona tylko do 1000 rdzeni, łatwo byłoby po prostu zmienić tę liczbę na 100000 lub coś takiego.


Oto kilka opcji, które możesz zamiast tego zrobić:

  • Rozważ wydanie kodu na podstawie licencji ograniczającej użytkowników Twojego kodu
  • Wypuść bibliotekę API zamkniętego źródła, która pozwala innym badaczom uzyskać twoją funkcjonalność bez dostępu do samego kodu.
durron597
źródło
Poprawny. Jeśli umieścisz tam kod z informacją „sprawdź liczbę procesorów i nie użyjesz prawidłowo więcej niż X z nich”, każdy inny może przeczesywać otwarte oprogramowanie, usuń to sprawdzenie i skompiluj ponownie.
4

Niewiele możesz zrobić, aby ograniczyć to, co inni zrobią z twoim kodem źródłowym. Mogą stworzyć od podstaw kolejny moduł, który może odblokować funkcję wieloprocesorową, a nawet ją ulepszyć: będzie to kosztowało czasu i wiedzy, ale jeśli będzie to dla nich ważne, zrobią to.

Dziesięć lat na czele, wciąż masz okazję wykorzystać swoje doświadczenie i wiedzę o kodzie, aby kontynuować najlepsze badania, nawet jeśli dasz innym kod źródłowy, który pozwala im na powtórzenie twoich eksperymentów. Twoi sponsorzy mogą nawet mieć więcej powodów, aby do ciebie iść, ponieważ Twój wpływ na badania może być większy, jeśli jesteś liderem projektu open source, który jest wykorzystywany na kilku uniwersytetach.

Zamiast oprogramowania typu open source możesz spróbować ograniczyć inne podmioty, publikując swoje źródło, ale nakładając ograniczenia własnościowe na licencję źródłową. Mogę wymyślić kilka projektów, które to zrobiły: Ghostscript, AT&T Unix, Microsoft .NET i Xerox PARC Smalltalk-80. Chociaż ostatecznie stały się w pełni open source, spodziewam się, że istnieją inne, mniej znane, które wciąż nakładają ograniczenia na sposób, w jaki licencjobiorcy używają kodu źródłowego. Oczywiście, choć opublikowanie Twojego źródła będzie oznaczało, że osoby o mniejszym poszanowaniu prawa mogą złamać warunki, to powinno powstrzymać bona fide naukowców akademickich przed uruchomieniem twojego kodu na superkomputerach tak potężnych jak twój.

dorking
źródło
@musiKk W 2002 r. rozwidlenie Rotor rdzenia platformy .NET zaczęło działać jako zastrzeżone „wspólne źródło” , ale ostatnio znacznie większa część komercyjnego źródła została opublikowana na podstawie licencji referencyjnej , a następnie, w wersji 4.6, w pełni otwarte źródło . Nie zdawałem sobie sprawy z tego , jak skomplikowane są ustalenia dotyczące udostępniania źródła przez Microsoft .
dcorking
1
Naprawdę sprawiłeś, że moje serce podskoczyło. Myślałem, że wykopałem 13-letnią odpowiedź. Nieważne, że SO został wydany w 2008 roku ... W takim razie wystarczy.
musiKk