Dlaczego biblioteki Microsoft zależą od Newtonsoft.Json?

18

Prawdopodobnie zaczęło się to już w czasach, gdy Microsoft utworzył bibliotekę ASP.NET Web API, przynajmniej tak pamiętam, jeśli się nie mylę. Tak czy inaczej, od tego czasu jego pakiety HTTP zaczęły się w zależności od biblioteki Newtonsoft.Json dla (de) serializacji danych do iz JSON.

Dlaczego firma tak duża jak Microsoft dodawałaby zależność od biblioteki open source? Wydaje mi się to dziwne, nawet jeśli mieli wtedy przejść na w pełni otwarte oprogramowanie z .NET, ponieważ, o ile wiem, była to jedyna biblioteka firmy innej niż Microsoft.

Jako dodatkowe pytanie, czy James Newton-King otrzymuje jakieś wsparcie finansowe od Microsoft?

paulius_l
źródło
14
Wygląda na to, że Microsoft ma mnóstwo pieniędzy do wyrzucenia. Choć są dość bogaci, ich zasoby nie są nieograniczone, co sprawia, że ​​ich rachunek jest taki sam jak twój: „dlaczego miałbym spędzać czas i pieniądze na pisanie czegoś, dla czego już istnieje idealna alternatywa open source?”
Robert Harvey
Microsoft zaczął być bardziej przyjazny dla otwartego oprogramowania lata temu; wcześnie umieścili jQuery w ASP.NET MVC. Przejście na open source z .NET jest częścią tej zmiany.
Robert Harvey
4
Możesz dowiedzieć się więcej o historii JSON.NET tutaj: newtonsoft.com/json/help/html/Introduction.htm
Robert Harvey
Dlaczego nie? To światowej klasy biblioteka szeregująca JSON, domyślam się, że MS mądrze postanowiła skoncentrować swoją energię na innych problemach i nie wymyślać koła na nowo.
Fergal Moran
6
Co ciekawe, James Newton-King ogłosił w marcu 2018 r., Że dołączy do Microsoftu.
Jeroen,

Odpowiedzi:

19

Najbardziej bezpośredni cytat, jaki znalazłem, jest częścią ogłoszenia Scott Guthrie o mapie drogowej MVC 4 z 2012 r. (Podobno offline, ale dostępna za pośrednictwem Wayback Machine ), która zawiera następujący cytat:

Json.NET : Planujemy użyć opracowanego przez społeczność stosu serializacji Json.NET w naszym domyślnym formatyzatorze JSON w interfejsie API sieci Web ASP.NET. Json.NET zapewnia elastyczność i wydajność wymagane w nowoczesnym frameworku internetowym.

Tak więc prosty powód jest taki, że jest to najlepsza dostępna biblioteka JSON, podczas gdy MVC był jednym z pierwszych dużych projektów Microsoftu, który porzucił zakorzenioną postawę NIH , charakteryzującą stwardnienie rozsiane, a także innych gigantów oprogramowania, i sięgnął po najlepsze w swojej klasie projekty open source jako fundamenty własnych ofert.

Avner Shahar-Kashtan
źródło
Wszystko w porządku i na pewno nie chcemy wracać do „NIH”. Mimo to chciałbym, aby ta biblioteka nadal była włączona w stos MS. Powodem jest ogromna presja na biblioteki zewnętrzne, aby nie miały żadnych zewnętrznych, nie-rdzeniowych zależności frameworka. Jest to jedyna biblioteka, z którą często się spotykamy, gdzie jest to trudne, i nic dziwnego, jest to taka funkcjonalność, jak myślenie o .NET bez natywnych narzędzi XML (XElement itp.). Nic dziwnego, że jest to biblioteka nr 1 we wszystkich programach użytkowych (!). Moje 2 centy.
Nicholas Petersen,
1
@NicholasPetersen Możesz przeczytać tutaj o propozycji włączenia jej do .NET Standard. Ostatnio sprawdziłem dyskusję, większość była przeciwna, ale może za włączenie podzbioru, lżejszego parsera JSON w standardowych bibliotekach.
Avner Shahar-Kashtan
Robią dobre punkty, mimo że nie myślałem, że powinien zostać dodany jako część .NET Standard, jak niektórzy wspominali, ponieważ wydaje się on zbyt ciężki, aby na zawsze dostosować go do standardu sieciowego. Myślałem o włączeniu go jako części netcore (przypuszczam, że w corefx), ale przyznaję, że mógłbym być naiwny w tym, o co tutaj prosię. Niektóre osoby sugerowały, że jest to część NET Foundation, brzmi dobrze, ale nie wiem, czy złagodziłoby to rzeczywisty problem polegający na tym, że inne biblioteki nie musiałyby odwoływać się do biblioteki zewnętrznej w stosunku do frameworka.
Nicholas Petersen,