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:

1 Like

What if the repo is 4GB ?

And you expect the recipient to untargz it as well ?

Fossil requires no pre-processing to send someone the repo, and no post processing to use it. You just send them the one self contained repo file and they use it with Fossil as is.

Summary: When sharing a DVCS repo, one type is a lot simpler than the other, I’ll leave the reader to decide which one that is.

Kangie:

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

Don’t hold your breath waiting for my call:

Fossil does not support rebase, and this is a deliberate design decision made by its creator, D. Richard Hipp, who considers rebase to be an anti-pattern.

The rationale is that rebase intentionally alters history by creating new commits, which can obscure the original sequence of events and make it difficult to track the true history of changes.

Fossil’s philosophy emphasizes preserving an immutable audit trail, where every action, including mistakes, is recorded and not erased.

This approach is likened to proper bookkeeping, where errors should be corrected but not deleted, ensuring a complete and transparent record.

It does seem one of us does indeed not comprehend the true purpose of a DCVS.

p.s. Keep at your day job, and don’t consider bookeeping because in that industry they tend to jail people with your ‘flexible’ philosophy of erasing audit trails.

It’s great that we’ve all got tools that we’re proficient with (or in my case, perpetually working to become more proficient with).

I still like learning what others are using so that I can get a broader appreciation of the opportunities that I might be missing out on.

Is anybody watching this thread and wondering why we’re not talking about a third alternative?

I know that there are a lot of options but i rely on friends like @techman being evangelists for their personal preference. Without them i’d be stuck in my own bubble and wouldn’t know to even look outside.

2 Likes

Documenting everything on the HLB Discourse so I can retrace my steps later? That approach has been working well for me :joy:.

Hear, hear. Always love hearing about different ways of doing things, and also things that are completely new to me.

1 Like

Jdownie and Belfrie, … you guys are Pioneers!

I think that it’s an illusion that we have a choice to ignore advances in technology, or like that mythical Neanderthal tribe in my made up story above, when the climate changes and food is scarce, friends start competing for precious resources because they are forced by hunger to do so and those with the weaker technology fall by the wayside.

In those times, the superior technology enables its adherents to thrive, unlike the competition.

That’s my point of course, I believe GIT to be the wrong technology for anything but the Linux kernel, because that’s what it was designed for.

Fossil was designed as a complete software development environment for Sqlite, which is perfect for small developers as it contains every resource they could ever want, all working and complete in the one binary file.

I’ve never claimed that Git isn’t a DVCS, or that it doesn’t work as a DVCS or that it isn’t good at what Linus designed it for. Or that GIT doesn’t hold critical mass of all the DVCS systems in terms of usage.

My claim is that there is a better way than Git for most users who aren’t Linux kernel hackers, and I’ve tried to demonstrate those ways on this forum.

The user is and was always encouraged to use the best technology for the situation in hand.

Cheers,

Terry (who is back working on his Forth development LSP)

There is hardly even a ‘second alternative’ as the tribal support for Git is massive and doesn’t brook any competition.

In a way this Git push-back is very similar to the days when I was advocating Linux in a Windows world via the dominant technology in the 1990’s, which was Usenet.

I would receive tons of hate mail every day and my wife would blush at the content, such was the height of emotion that any Linux advocacy caused Windows users.

In time, as we all know, Windows started to fade, and Linux slowly filled every niche, like rising flood waters slowly fill every crevice.

With the invention of Android, Linux became the most widely used OS in the world, almost overnight. At its height, Samsung was creating one million new Linux users every day.

Is there a “Linux Subsystem for Windows (LSW) ?

No, because Windows is proprietary and only works one way, like an “Archimedian spiral” or “worm gear” in that it must do the driving, the other gear can never drive the worm.

The irony here is that the tribal push-back I often receive for advocating Fossil, is from Linux users themselves … or is it ?

Could GIT be just another reason that the ‘Windows Subsystem for Linux (WSL)’ exists ?

Cheers,

Terry