Sadly, these days, the dollar is mightier than ever, and in many ways, it determines the real meaning of things.
Take ‘distributed control’ for instance ?
This was quite the catchphrase a while ago, like ‘Green’ once was. or ‘Gluten free milk’ or ‘Diet Water’
Recently the new ‘distributed’ Matrix had a massive crash of the matrix.org homeserver… and a 55TB PostgreSQL DB was lost, and that isn’t something easy to deal with.
Matrix is an open, decentralized protocol for real-time communication that functions as a modern, feature-rich alternative to traditional IRC, while also providing a bridge to connect with existing IRC networks.
Wait … what ?? A distributed system needs a 55TB DB, how does that work ?
Closer to home, have you ever wondered what size the Github server is for the GIT ‘distributed’ CVS ?
When you clone a GIT repo, what do you get ? let us do a test ?
git clone https://github.com/Kongduino/ddForth.git
Cloning into 'ddForth'...
remote: Enumerating objects: 313, done.
remote: Counting objects: 100% (102/102), done.
remote: Compressing objects: 100% (75/75), done.
remote: Total 313 (delta 54), reused 73 (delta 26), pack-reused 211 (from 1)
Receiving objects: 100% (313/313), 431.19 KiB | 69.00 KiB/s, done.
Resolving deltas: 100% (167/167), done.
[tp@nixos:~/aaaaaaaaaaaaaaaaa]$ tree
.
└── ddForth
├── assets
│ ├── ArduinoIDE00.png
│ └── ArduinoIDE01.png
├── ddforth.cpp
├── ddforth.hpp
├── esp_ddforth
│ ├── ddforth.hpp
│ └── esp_ddforth.ino
├── LICENSE
├── Makefile
├── README.md
└── tests
├── test00.fs
├── test01.fs
├── test02.fs
├── test03.fs
├── test04.fs
├── test05.fs
├── test06.fs
├── test07.fs
├── test08.fs
├── test09.fs
├── test10.fs
├── test11.fs
├── test12.fs
├── test13.fs
└── tests.sh
That’s it, a subdir and a list of files, where is the distributed repository ? What if I want to send a GIT repo of this directory to someone besides GITHUB, do I have to TAR.GZ this directory, what if my manual selection misses some dotfiles ?
How do I send my working directory as a git repo, all automatically and error free, preferably in a single file to prevent loss ?
Now with Fossil:
fossil clone https://chiselapp.com/user/Setok/repository/Flowbot
Round-trips: 2 Artifacts sent: 0 received: 137
Clone done, wire bytes sent: 579 received: 46508 remote: 74.208.229.64
Rebuilding repository meta-data...
100.0% complete...
Extra delta compression... 3 deltas save 3,058 bytes
Vacuuming the database...
project-id: 530af75a1fad9bcef0ac34ed89751cd2a8829c70
server-id: e3c652df3de4c4f90ea0ce19e70eee298e6b9116
admin-user: tp (password is "W2LkvemHc5")
opening the new ./Flowbot.fossil repository in directory ./Flowbot...
flowbot.tcl
project-name: Flowbot
repository: /home/tp/aaaaaaaaaaaaaaaaa/fossil/Flowbot.fossil
local-root: /home/tp/aaaaaaaaaaaaaaaaa/fossil/Flowbot/
config-db: /home/tp/.config/fossil.db
project-code: 530af75a1fad9bcef0ac34ed89751cd2a8829c70
checkout: c4b5f39df4cd8021b9c61c4ab21b2ff23df8d1fc 2010-04-25 00:47:45 UTC
child: 5621840a364e0751b502fb173d505c0348d2f639 2010-05-08 08:48:59 UTC
tags: floodprotect, trunk
comment: First test of data model (user: setok@scred.com)
check-ins: 49
tree
.
├── Flowbot
│ └── flowbot.tcl
└── Flowbot.fossil
2 directories, 2 files
This time we get the working directory ‘Flowbot’ which is much the same as the GIT working directory, content wise, BUT we also get a Repository, ‘Flowbot.fossil’ which is identical to the one I cloned. I can share this one, or modify the working directory and commit, then share that repo.
Yes, if you’re wondering the repos will have the same name, but different ID hashes and will be flagged if one tries to exchange them as “different repository’.
See the difference ?
In a way, GIT has always seemed more like ‘wget’ to me, in the way that people use it, which is to get all the files onto their machine fcrom Github.
Is this designed to lock them into Github because $$$ ?
Is this another case of a pseudo ‘distributed’ system, like Matrix ?
You tell me ?