<div dir="ltr"><div>The answer is that looking back maybe we should have added JSON encode/decode to OTP 12 years ago, but now there are a number of good separate JSON libraries</div><div>outside OTP so why should we (the OTP team) take on the task of developing and maintaining a JSON library.</div><div>Why is it better to include the JSON lib in OTP than to have it separate?</div><div>We have:</div><div>jsx, jsone, jiffy, .... to name a few</div><div><br></div><div>We or someone else could create an OTP+ distribution which includes OTP + other popular non OTP applications. I even think Erlang Solutions has done that at some point.</div><div><br></div><div>/Kenneth, Erlang/OTP, Ericsson<br> </div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Nov 2, 2020 at 10:39 PM Viktor Söderqvist <<a href="mailto:viktor@zuiderkwast.se">viktor@zuiderkwast.se</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">12 years have passed since EEP 18. [1] Since then, maps have been added<br>
to Erlang and the string module has been made accept binaries. This<br>
makes up a more obvious representation of JSON than in 2005 [2].<br>
<br>
If anyone was arguing that OTP is made for telecom and not web<br>
development, this argument doesn't hold anymore, now that the telecom<br>
standards are replacing GTP and Diameter with HTTP and JSON.<br>
<br>
The 5G mobile network specifications are full of JSON, REST and HTTP/2<br>
(e.g. 3GPP TS 29.500 [3]) and in 3GPP TS 29.501 [4] things like<br>
HATEOAS, OpenAPI specifications using JSON Schema and YAML files and<br>
how JSON documents should be patched using HTTP PATCH requests are<br>
covered. (Other interesting 5G specs are 23.501 [5] and 23.502 [6].)<br>
<br>
JSON has also been standardized as ECMA-404 [7] in 2017.<br>
<br>
Is it time to re-evaluate adding json:{encode,decode}/1 in OTP? Or are<br>
the arguments against it still valid?<br>
<br>
Regards,<br>
Viktor<br>
<br>
[1]: <a href="http://erlang.org/eeps/eep-0018.html" rel="noreferrer" target="_blank">http://erlang.org/eeps/eep-0018.html</a><br>
[2]: <br>
<a href="http://erlang.org/pipermail/erlang-questions/2005-November/017805.html" rel="noreferrer" target="_blank">http://erlang.org/pipermail/erlang-questions/2005-November/017805.html</a><br>
[3]: <a href="https://www.3gpp.org/DynaReport/29500.htm" rel="noreferrer" target="_blank">https://www.3gpp.org/DynaReport/29500.htm</a> (Click the Versions tab,<br>
then click a linked version number to download a zip file which<br>
contains a Word document, which can be converted to a readable<br>
format...)<br>
[4]: <a href="https://www.3gpp.org/DynaReport/29501.htm" rel="noreferrer" target="_blank">https://www.3gpp.org/DynaReport/29501.htm</a><br>
[5]: <a href="https://www.3gpp.org/DynaReport/23501.htm" rel="noreferrer" target="_blank">https://www.3gpp.org/DynaReport/23501.htm</a><br>
[6]: <a href="https://www.3gpp.org/DynaReport/23502.htm" rel="noreferrer" target="_blank">https://www.3gpp.org/DynaReport/23502.htm</a><br>
[7]: <br>
<a href="http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf" rel="noreferrer" target="_blank">http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf</a><br>
<br>
</blockquote></div>