From 8a34385a6af8c618d34ba51f26c54edc243ce066 Mon Sep 17 00:00:00 2001 From: Offray Date: Tue, 16 Apr 2024 12:30:54 -0500 Subject: [PATCH] Explaining the rationale behind external binaries in the Readme. --- README.md | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7975c57..411282f 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,16 @@ ExoRepo provides [syntactic sugar](https://en.wikipedia.org/wiki/Syntactic_sugar) for [Pharo's Iceberg](https://books.pharo.org/booklet-ManageCode/) to support repositories beyond GitLab, GitHub and Bitbucket, starting with Gitea/Forgejo. +**IMPORTANT!** This requires the installation of the external open source binary dependency Restify available at: + +. + +This should be installed independiently. In Gnu/Linux and Unix alike systems the restify binary is adviced to be instaled under `~/.local/bin`. +Further versions of ExoRepo will install external dependencies like this one automatically, when they are needed. +For the rationale behind external binary dependencies look at the **Notes** section in the end of this document. ## Installation +Metacello new repository: 'gitea://code.sustrato.red/Offray/VideoWeb'; baseline: 'VideoWeb'; fetch ### from Gitea Run from a playground: @@ -41,4 +49,17 @@ Metacello new ExoRepo new repository: 'https://code.tupale.co/Offray/TiddlyWikiPharo'; load. - ``` \ No newline at end of file + ``` + +## Notes + +**Why to depend on external FLOSS binaries?** + +While the Pharo ecosystem provides an unmatched development experience, +some libraries are not available or mature enough in Pharo, despite its vibrant, but small community. +So, for practical reasons, we have reached already the scenario where we need to rely on external pacakges to provide the functionality we need without developing it ourselves. +Also, the context where we teach Pharo and Mallable Systems, includes universities with slow or behind proxy connections, where dowloading and unziping a single binary is quite faster than resolving packages dependencies and loading them, recursively from the network. + +In that case, we opted for using self contained external binaries, packaged in a single executable file, derived from Free Libre Open Source Software repositories, written in languages that provide such small self contained binaries, like Nim and Go. + +For ExoRepo, we rely on Restify, because Gitea repositories don't provide a external JSON API and restify allow us to query Gitea repositories obtaining a JSON response to leverage on NeoJSON and STON Pharo libraries, without implementing cumbersome HTML page parsers and adding a single binary was more agile that requiring full HTML parsing capabilites, just to query Gitea repositories. \ No newline at end of file