Living the Lie (github rant)

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 ?

Doesn’t git work exactly the same way with GitLab, or Codeberg, or BitBucket, or SourceHut, or Gitea etc. etc.? You’re definitely not locked into GitHub.

1 Like

It doesn’t appear so. I’m only a GIT hater, not a GIT expert, so I asked a LLM

But Fossil is exactly the same, everywhere as it’s a complete software design environment, not just a CVS like GIT.

While the core Git operations—such as committing, branching, merging, and pushing—are fundamentally the same across platforms like GitLab, Codeberg, BitBucket, SourceHut, and Gitea, the user experience and additional features differ significantly. The underlying Git protocol remains consistent, but the web interfaces, workflows, and integrations vary.

For instance, GitLab and GitHub offer integrated CI/CD pipelines and robust project management tools like issue tracking and kanban boards, which are not natively available in Gitea or SourceHut.
Gitea, while lightweight and self-hostable, lacks built-in CI/CD, requiring external tools for automation.
SourceHut uses a unique model based on mailing lists and git send-email for code reviews and contributions, which is a stark contrast to the pull request system used by GitHub, GitLab, and Gitea.
This difference in contribution workflows can be a significant barrier for users unfamiliar with the process.

Furthermore, the APIs and integration capabilities can vary. Bitbucket Server and Bitbucket Cloud have entirely different APIs, meaning integrations must be rebuilt when switching between them.
Codeberg, a community-driven, non-profit platform, enforces a strict policy against non-FLOSS (Free and Open Source Software) projects, which limits its use for proprietary code.
GitLab, while open-source, has been criticized for making many useful features available only in paid plans, and its self-hosted instances have experienced frequent upgrade issues leading to downtime.

In summary, while the foundational Git functionality is consistent, the surrounding ecosystem, user interface, workflow, and feature set differ considerably between these platforms, making them not functionally identical in practice

1 Like

Yeah @skalyan, i think the “spirit” of this post was “git sucks, fossil rules” :face_with_tongue: amirite @techman ?

A tree -a should have revealed a .git folder which contains all of the historical artefacts. You should be able to .tar.gz that whole folder (including the .git folder) and hand it off to somebody via any delivery method. The recipient would then be able to untar that folder, cd into it and start issuing git commands. They’d be able to see a full history with a git log, and even snoop around at files from old commits with git shows. .git/config is a .toml file containing a [remote “origin”] header which will remember where it was originally cloned from. That “origin” can be changed to any bare and remote origin and synced with it.

1 Like

Skylans question was very welcome, thanks Skylan ! (I forgot to mention that earlier)

I think you are correct James, but doesn’t anyone wonder why ?

Perhaps GIT touched me inappropriately as a child ? Can I point to the doll to show where ?

Or maybe after starting with CVS in 1996, and using Bazzar, Mercurial and Subversion for years each, when I tried GIT I found I didn’t like it for some reason ?

Then why did I stay with Fossil I wonder ? Perhaps it had everything a lone developer (who isn’t a Linux kernel developer) needed ?

1 Like

Thanks for the comment James :slight_smile:

However it’s a little word-salad-ish :wink:

Do you think your method is as error free and as simple as me sending you a Fossil repo by email, as the one file attachment ?

Nah, it’s not better. It just looks normal to me because i’ve made the investment and learned all of that stuff. If i abandon all of that for something intuitive and logical now i would have wasted my time learning it all. That would be pretty dumb, right?

Steve Brule GIFs | Tenor

1 Like

No, I see the dumb move as someone justifying continued investment in unsuitable software.

Then again I’ve hated on Microsoft Windows since 1997, and my opinion has caused exactly zero people in the World to dump Windows and switch to Unix.

Of course, you could use both, as knowledge of one doesn’t cause knowledge of the other to be lost. When you learnt Linux, did that cause all knowledge of Windows to vanish from your mind ?

Perhaps use Fossil for small group projects where a complete software design environment is needed and easily shared, and Git for the Linux Kernel :slight_smile:

1 Like

Here is my reason for all the Git hate:

A long, long time ago, a tribe of Neanderthals had become expert in sharpening spears by burning the tips until the wood was hard then scraping it on a rock to sharpen, repeating the process until finished. All was good, their spears were sharp, and all the males were expert in making them.

Rabbits and other small animals nearby feared these people and their deadly killing sticks.

One day a strange man passed by, he looked very different, but everyone was friendly as there weren’t a lot of humans everywhere back then and plenty of resources to go around..

They noticed his spear didn’t have a burnt tip, but rather a thin sliver of very sharp rock which the stranger showed was far superior to theirs by cutting some bone with it, and initially they wanted ones just like his.

However it transpired that the only source of this rock was a long way away and the rock had to be ‘knapped’ by hand to get a good spear tip, and that took years of practice, usually from childhood.

When the stranger left to continue his journey, the men all had badly cut fingers and bleeding hands, so they decided that frankly the new technology sucked, was way too hard to learn and use, so they decided that their trusted and well known technology of burnt spear points was plenty good enough for them.

Their fathers had used it, and their fathers before them. All the other local tribes used it, it was a proven and popular technology, so they decided to revisit the concept ‘later’ but for now there were rabbits to hunt and they were hungry.

12,000 years later, archaeologists in a remote area of France uncovered a mass Neanderthal grave site and were puzzled by the fact that every skull had a hole in it, and inside the holes were small flint arrowheads.

1 Like

What if I want to send a GIT repo of this directory to someone besides GITHUB, do I have to TAR.GZ this directory

git remote add «remote-name» «remote uri»
git push --set-upstream «remote-name»

Git bundles are your friend, too, for entirely air-gapped environments.

Really though, you seem to be misunderstanding the distributed part of a distributed VCS. From GitLab:

A distributed version control system (DVCS) brings a local copy of the complete repository to every team member’s computer, so they can commit, branch, and merge locally. The server doesn’t have to store a physical file for each branch — it just needs the differences between each commit.

Yes, that does mean that you can literally just tarball the directory and work on it anywhere.

Call me when fossil lets you rewrite VCS history because you’ve made a very untidy mess of work-in-progress commits while working on a feature :wink: