\myheading{My JSON file format}

My toy package manager uses config in JSON format.

This is example of \verb|test100/vers.json| (available versions for each package).
(I package numbers in [0..<infinity>) limit and version numbers in [2000...2020] limit.)

\begin{lstlisting}
...
        "8" : [2005, 2006, 2008, 2010, 2011, 2014, 2019],
        "9" : [2000, 2002, 2003, 2004, 2007, 2011, 2015, 2017],
...
\end{lstlisting}

This is \verb|test100/deps.json| file (dependencies):

\begin{lstlisting}
...
"8":
{
    "2005" : [[1, 0, 2005], [3, 0, 9999], [7, 0, 2005]],
    "2006" : [[1, 0, 9999], [3, 2005, 9999], [7, 0, 2006]],
    "2008" : [[1, 0, 2008], [3, 0, 2008], [7, 0, 9999]],
    "2010" : [[1, 0, 9999], [3, 0, 9999], [7, 2010, 9999]],
    "2011" : [[1, 0, 9999], [3, 0, 2011], [7, 0, 9999]],
    "2014" : [[1, 2008, 9999], [3, 2012, 9999], [7, 2010, 9999]],
    "2019" : [[1, 2019, 9999], [3, 0, 9999], [7, 0, 2019]]
},
"9":
{
    "2000" : [[5, 2000, 9999], [6, 2000, 9999], [7, 0, 9999], [8, 2000, 9999]],
    "2002" : [[5, 0, 9999], [6, 2002, 9999], [7, 0, 9999], [8, 2001, 9999]],
    "2003" : [[5, 2001, 9999], [6, 0, 2003], [8, 2003, 9999]],
    "2004" : [[5, 0, 2004], [6, 2004, 9999], [8, 0, 9999]],
    "2007" : [[5, 2007, 2007], [6, 0, 2007], [8, 0, 9999]],
    "2011" : [[4, 0, 9999], [5, 2002, 9999], [6, 0, 9999], [8, 0, 2011]],
    "2015" : [[4, 0, 9999], [5, 2007, 9999], [6, 0, 9999], [8, 0, 2015]],
    "2017" : [[4, 0, 9999], [5, 2010, 9999], [6, 0, 9999], [8, 0, 9999]]
},
...
\end{lstlisting}

It defines a list of dependencies for each package/version.
Each dependency is a list of triplets.
Each triple is: package number, minimal version allowed, maximal version allowed.
0 and 9999 are allowed for min/max versions.

And this a \verb|test100/conflicts.json| file, that lists of conflicting packages:

\begin{lstlisting}
[
[[40, 2013, 2017], [68, 2015, 2020]],
[[76, 2000, 2010], [32, 2000, 2012]],
[[40, 2013, 2017], [71, 2002, 2002]],
[[72, 2004, 2007], [15, 2001, 2016]],
[[36, 2001, 2007], [21, 2000, 2010]],
[[98, 2007, 2010], [14, 2004, 2012]],

...
\end{lstlisting}

This means, package number 80 in versions [2011..2012] cannot be installed with package 45 in versions [2005..2017].
However, other versions may be allowed.

Why JSON?
To make hand editing possible.

In my previous implementation of my toy package manager in Racket, I used S-expressions,
but they are less familiar to a general audience.
Another option is XML, but it's too verbose...
