[Oberon] all in one git tree

Liam Proven lproven at gmail.com
Sat Dec 26 12:21:34 CET 2020


On Fri, 25 Dec 2020 at 10:41, Joerg <joerg.straube at iaeth.ch> wrote:
>
> How does github handle different programming languages like C, cpp, Lisp, Fortran ...?

First, it's vital to distinguish between Git and GitHub.

Git is a distributed revision-control system. Unlike older RCS tools
such as, well, RCS, CVS, etc., there is no "master" or primary copy
with Git. Every Git node is a peer; every node can clone a repo from
any other node, fork a branch, record changes in that branch, and then
the owner can send a Pull Request (PR) saying "please incorporate my
changes back into your copy".

It has its own terminology.

It's very powerful, it's very unfriendly and complicated, it includes
every option and capability from every other revision-tracking tool
I've heard of an a million more. I've used it every working day for
nearly 4 years, and I hate it.

It's a typical Unix tool: grotesquely overcomplicated and overpowered,
very easy to horribly hurt yourself with, destroy all your data and
then send a mangled broken copy to all your coworkers so their data
gets destroyed too.

As such, the sort of people who like Unix and C love it. It's a manly,
macho tool, used by programmers who like to feel manly and macho and
want to trim their toenails with a chainsaw. One incorrect CLI switch,
one fumble with pointer arithmetic and everything is gone -- it gives
some people a feeling of power.

Git is a command-line-only tool that tracks changes in local plain
text files -- this only really makes sense for plain text files -- can
show you those changes, compare files, migrate changes from one file
to another, allow you to maintain multiple parallel copies (e.g. at
work we use a `main` branch, then one branch per release -- 11.3,
15.0, 15.1, 15.2 etc. -- and then one branch per change, labelled
whether it's for a new feature, or a bug fix, or whatever. Git
provides rich tools for merging changes back from branches into their
parents, or into other branches, etc.

> How does github handle different operating systems like Linux, Android, Windows...?

It doesn't care. It manages files and provides useful tools for _text_
files. Plain unformatted ASCII/ANSI/Unicode.

Git_hub_ is a huge shared Git repository with user access controls and
permissions.

It is also a website that lets you view the files, the branches,
compare them, manage PRs etc. It can do syntax highlighting for dozens
of programming languages, if it can recognise the file extension. It
can also render Markdown docs prettily.

> In the „Oberon world“ there are THREE orthogonal dimensions in development
> a) one is the way you might know: extend a project (like a Linux kernel) and stick to the same language (For Linux it’s most probably C needing a compiler like gcc)

If the source code is plain text, Github can display it and manage.

If someone writes or ports a Git client to Oberon then you can do it
from the Oberon OS.

> b) The second dimension is: add/delete/change the programming language features. You need the right compiler being able to compile the source code. Moving source from a) to b) typically involves some „porting“ effort. In some cases simple „merging“ can do the job.
> Oberon-2, Oberon-07, ActiveOberon sources fall in this category.

Irrelevant to Git or Github.

> c) the third dimension is changing the OS API. A source does not only need the right compiler but needs the right OS environment to be compilable. Depending on the OS features added/changed, moving code from a) or b) to c) involves heavy porting or minor porting effort. System3, V4, A2, PO2013 fall in this category.

Irrelevant to Git[hub].

It manages source code. Nothing else.


-- 
Liam Proven – Profile: https://about.me/liamproven
Email: lproven at cix.co.uk – gMail/gTalk/gHangouts: lproven at gmail.com
Twitter/Facebook/LinkedIn/Flickr: lproven – Skype: liamproven
UK: +44 7939-087884 – ČR (+ WhatsApp/Telegram/Signal): +420 702 829 053


More information about the Oberon mailing list