Subject: bug#27590: artanis has a bundled and customized copy of guile-json package

From: Adonay Felipe Nogueira <[email-masked]>
Date: Mon, 17 Jul 2017 00:11:07 -0300

I have compared the two. Note however that I didn't test them, I only
read the diffs, so my notes might not accurately reflect nested/complex
cases.

Discarding the new features implemented in guile-json since the bundled
customization and the deprecation of (json ...) macro, it seems that
"json/builder.scm" is the file where most important changes are.

Considering upstream guile-json:

- (json-build-object ...) considers the given Scheme "native" directly as
  a list of pairs (that is: no conversion is done inside the procedure
  itself).

- (json-build ...) has conditionals for checking if a given Scheme
  "native" is a symbol, and also for checking if it's an association
  list.

- Inside (json-build ...), the conditional that checks if the givem
  Scheme object is a hash table also builds JSON documents for those
  cases, but instead of taking the Scheme "native" as it is, it will
  receive such converted to a list of pairs.

Considering the bundled and customized guile-json:

- (json-build-object ...) calls procedures to convert the given Scheme
  "native" to a list of pairs (that is: there is always a conversion made
  inside the procedure).

- (json-build ...) has no conditionals to check for symbols and
  association lists specially.

- Inside (json-build ...), the conditional that checks if the givem
  Scheme object is a hash table takes the Scheme "native" as it is.

This indicates that upstream guile-json seems to have more control on
what to do with each thing. However, I don't know if this really impacts
GNU Artanis such that there is an unexpected behavior. From the looks of
it, there might be no problem on removing the bundle. Of course, a test
is preferable.