Το Git θα το παρομοίαζα ως μια χρονομηχανή για τον κώδικα που γράφει ο οιοσδήποτε.
Στην ουσία πρόκειται για ένα εργαλείο που καταγράφει όλες τις αλλαγές που κάνεις στα αρχεία σου (συνήθως προγραμματιστικό κώδικα) με την πάροδο του χρόνου. Έτσι, μπορείς ανά πάσα στιγμή να δεις τι άλλαξες, να επιστρέψεις σε μια προηγούμενη κατάσταση αν κάτι χαλάσει (το γνωστό “undo”), και να δουλεύεις ταυτόχρονα σε διαφορετικές εκδόσεις του ίδιου project χωρίς να μπερδεύεσαι.
Και πώς δημιουργήθηκε; Αυτό είναι αρκετά ενδιαφέρον:
Το 2005, η κοινότητα του Linux είχε μείνει ορφανή αφού η BitKeeper (η proprietary εταιρεία που χρησιμοποιούσαν μέχρι τότε για το version control του πυρήνα) απέσυρε τη δωρεάν άδειά της.
Τότε, και μέσα σε σε λίγες μέρες, ο Linus Torvalds έγραψε το Git χωρίς να συμβιβαστεί με κάποιο άλλο εργαλείο της εποχής που θεωρούσε αργό, κακοσχεδιασμένο ή ακατάλληλο.
Στην ουσία, αυτό το αποκεντρωμένο εργαλείο άλλαξε για πάντα τον τρόπο που γράφεται κώδικας στον πλανήτη. Και το έκανε με τη γνωστή, ακομπλεξάριστη φιλοσοφία του: μηδενική ανοχή σε περιττές πολυπλοκότητες, ταχύτητα, και απόλυτη κατανομή.

Codeberg, GitLab, GitHub ή Forgejo; ποιος κρατάει τα δεδομένα σου;
Αν χρησιμοποιείς Git, κάποια στιγμή θα βρεθείς μπροστά στο ίδιο δίλημμα:
πού θα φιλοξενήσεις τα repositories σου;
Οι πιο γνωστές επιλογές είναι το GitHub και το GitLab.com και οι περισσότεροι πάνε εκεί. Δεν είναι όμως μόνο αυτά αφού υπάρχουν όμως και πιο ανεξάρτητες λύσεις, όπως το Codeberg, ενώ αν μιλάμε για πραγματικό έλεγχο τότε η λύση είναι να στήσεις μόνος σου Forgejo.
Εν πρώτοις, όλα κάνουν περίπου το ίδιο πράγμα: repositories, issues, pull/merge requests, CI/CD κ.λπ.
Στην πραγματικότητα όμως, διαφέρουν αρκετά σε θέματα όπως ownership, privacy, telemetry και εξάρτηση από τον πάροχο.
Να τα δούμε ένα προς ένα αναλύοντάς τα:
—
1. 🌐 GitHub — Microsoft
Το GitHub πλέον ανήκει στη Microsoft. Δυστυχώς.
Αλλά, για να είμαστε αντικειμενικοί, αυτό δεν σημαίνει αυτομάτως ότι είναι κακό ή ότι τα repositories σου χρησιμοποιούνται αυθαίρετα. Σημαίνει όμως, ότι πρόκειται για μια μεγάλη εμπορική πλατφόρμα, της οποίας η λειτουργία και οι πολιτικές καθορίζονται από μια εταιρεία.
Το GitHub αναφέρει ότι συλλέγει, μεταξύ άλλων, πληροφορίες για τη χρήση των υπηρεσιών, IP address, στοιχεία συσκευής, session information, timestamps και πληροφορίες σχετικά με τις συνεισφορές και τη χρήση των repositories. Η τρέχουσα πολιτική του αναφέρει επίσης analytics cookies και, ανάλογα με την περίπτωση/δικαιοδοσία, third-party analytics και advertising technologies.
Επιπλέον, το GitHub διατηρεί στοιχεία που σχετίζονται με τη δραστηριότητα των repositories, όπως commits, pushes, pulls, forks και contribution information.
Υπάρχει όμως ένα σοβαρό θέμα πια με το Github:
Το authentication του GitHub:
Υπάρχει και ένας παράγοντας που συχνά δεν φαίνεται στους πίνακες σύγκρισης: η καθημερινή εμπειρία του login που η Microsoft το έκανε κόλαση!
Αλλά εντάξει, ας μην το δούμε με προκατάληψη:
Είναι γεγονός πως το GitHub έχει επενδύσει πολύ στην ασφάλεια του authentication. Υπάρχουν password/passkey, 2FA, device verification, GitHub Mobile, security keys και διάφοροι μηχανισμοί recovery. Όλα αυτά είναι χρήσιμα από άποψη ασφάλειας, αλλά στην πράξη μπορούν να κάνουν το login αρκετά πιο περίπλοκο. Ενίοτε και αποτυχημένο.
Ειδικά το device verification μπορεί να εμφανιστεί όταν το GitHub θεωρήσει ότι μπαίνεις από μη αναγνωρισμένη συσκευή ή browser. Ακόμη και στον ίδιο υπολογιστή, αν αλλάξεις browser ή browser profile ή διαγράψεις τα cookies, μπορεί να χρειαστεί νέα επαλήθευση.
Και κάπου εδώ αρχίζει το γνωστό:
ρε φίλε, απλώς θέλω να μπω στο repository μου.
Αν το σύστημα authentication, το email verification, το 2FA app, το passkey ή η recovery διαδικασία δεν συνεργαστούν σωστά, το login μπορεί να μετατραπεί από μια απλή διαδικασία σε οδύσσεια.
Το σημαντικό είναι ότι αυτό δεν είναι απλώς θέμα γκρίνιας για το ux. Η ίδια η GitHub τεκμηρίωση περιγράφει περιπτώσεις όπου, αν χαθούν όλες οι διαθέσιμες recovery methods, ο λογαριασμός μπορεί να καταστεί μη προσβάσιμος. Για ορισμένες διαδικασίες account recovery, αναφέρεται επίσης χρόνο αναμονής έως και τρεις εργάσιμες ημέρες.
Και υπάρχουν άνθρωποι που έχουν εγκαταλείψει αποθετήριά τους εκεί μετακομίζοντας αλλού για αυτόν ακριβώς τον λόγο!
Και αυτό δημιουργεί ένα παράδοξο:
περισσότερη ασφάλεια δεν συνεπάγεται απαραίτητα καλύτερη εμπειρία χρήσης.
Το GitHub προσπαθεί να προστατεύσει έναν λογαριασμό που μπορεί να περιέχει χρόνια δουλειάς, private repositories, access tokens και credentials. Επομένως έχει λόγους να είναι αυστηρό. Από την άλλη όμως, κατάφερε το αντίθετο.
Γιατί εμείς το βλέπουμε από την πλευρά του χρήστη όπου πλέον κάθε επιπλέον μηχανισμός σημαίνει μία ακόμη πιθανότητα να κολλήσει η διαδικασία:
Password
↓
2FA
↓
Device verification
↓
Email / Mobile confirmation
↓
Session check
↓
"Suspicious sign-in?"
↓
Recovery
↓
"Περίμενε..."
Και αυτό είναι κάτι που αξίζει να υπολογίζει κανείς όταν συγκρίνει Git hosting υπηρεσίες.
Δεν νομίζω λοιπόν το θέμα να περικλείεται μόνο στο ερώτημα:
ποιος έχει καλύτερα features;
αλλά, θα πρέπει να συνεπάγουμε και το:
πόσο εξαρτώμαι από τον μηχανισμό authentication του παρόχου για να έχω πρόσβαση στη δουλειά μου;
Στο self-hosted Forgejo, φυσικά, το πρόβλημα δεν εξαφανίζεται. Απλώς μεταφέρεται από το «τι αποφασίζει το GitHub για το account μου;» στο πώς έχω σχεδιάσει εγώ το authentication και το recovery του server μου;»
Και αυτό είναι ταυτόχρονα πλεονέκτημα και ευθύνη.
Ιδιοκτησία: Microsoft.
Δεν χρειάζεται να το ερμηνεύσουμε περισσότερο από αυτό. Η υπηρεσία είναι εταιρική και κεντρικά ελεγχόμενη από έναν μεγάλο τεχνολογικό όμιλο.
Privacy / telemetry:
υπάρχει συλλογή δεδομένων χρήσης και analytics.
Το πόσο σε ενοχλεί αυτό εξαρτάται από το threat model σου. Για κάποιον που απλώς θέλει ένα εύχρηστο public repository, μπορεί να μην έχει ιδιαίτερη σημασία. Για κάποιον που θέλει όσο το δυνατόν λιγότερη εξάρτηση από tracking και corporate infrastructure, είναι διαφορετική υπόθεση.
Ανεξαρτησία: χαμηλή.
Είσαι εξαρτημένος από την πλατφόρμα, τους servers και τις πολιτικές της Microsoft/GitHub.
—
Το GitLab είναι λίγο πιο ενδιαφέρουσα περίπτωση.
Είναι μια εμπορική SaaS υπηρεσία της GitLab Inc./GitLab B.V. Η ίδια η GitLab αναφέρει ότι η πολιτική privacy καλύπτει GitLab.com, GitLab Dedicated και self-managed.
Το GitLab δηλώνει ότι συλλέγει αυτόματα στοιχεία όπως IP address, τύπο συσκευής, λειτουργικό σύστημα, browser information και approximate location. Συλλέγει επίσης δεδομένα χρήσης προϊόντος, όπως interactions με features και άλλα usage metrics.
Υπάρχει όμως μια σημαντική λεπτομέρεια.
GitLab.com vs GitLab self-managed:
Το GitLab μπορεί να εγκατασταθεί στον δικό σου server.
Επομένως:
- GitLab.com: τα δεδομένα σου φιλοξενούνται στην υποδομή της GitLab.
- GitLab self-managed: εσύ φιλοξενείς την εγκατάσταση και επομένως έχεις πολύ μεγαλύτερο έλεγχο.
Η GitLab αναφέρει πάντως ότι, ακόμη και στο self-managed, υπάρχουν μηχανισμοί product-usage metrics/telemetry, με πολιτικές και δυνατότητες ελέγχου. Η εταιρεία δηλώνει ότι δεν πουλά service-usage data και ότι τα σχετικά δεδομένα pseudonymize/τεκμηριώνονται.
Άρα, το «self-hosted GitLab» δεν πρέπει να αντιμετωπίζεται σαν να είναι από μόνο του μηδενική τηλεμετρία.
Ιδιοκτησία: για το GitLab.com: GitLab Inc.
για self-managed ο server και τα δεδομένα είναι υπό τον δικό σου έλεγχο, αλλά το software εξακολουθεί να προέρχεται από το GitLab project/company και υπάρχουν διαφορετικές άδειες/εκδόσεις.
Privacy / telemetry:
- GitLab.com: αρκετή συλλογή usage data, analytics και operational information.
- self-managed: πολύ μεγαλύτερος έλεγχος, αλλά χρειάζεται να εξετάσεις και να ρυθμίσεις τα metrics/telemetry που χρησιμοποιεί η εγκατάστασή σου.
Ανεξαρτησία:
GitLab.com: μέτρια προς χαμηλή
Self-managed: υψηλότερη, αλλά με μεγαλύτερη πολυπλοκότητα.
—
3. 🌐 Codeberg — ο μη κερδοσκοπικός δρόμος
Εδώ αλλάζει αρκετά το μοντέλο.
Το Codeberg λειτουργεί από το Codeberg e.V., έναν μη κερδοσκοπικό οργανισμό, και βασίζεται στο Forgejo.
Το ίδιο το Codeberg περιγράφει τον εαυτό του ως community-driven, non-profit software development platform και ως μη εμπορική, privacy-friendly εναλλακτική σε υπηρεσίες όπως το GitHub.
Και αυτό έχει σημασία διότι δεν έχεις απέναντί σου Microsoft ή μια εισηγμένη εταιρεία που λειτουργεί μια τεράστια εμπορική SaaS πλατφόρμα.
Από την άλλη βέβαια, δεν σημαίνει ότι το Codeberg είναι μαγικά ιδιωτικό ή ότι κανένας διαχειριστής δεν μπορεί να δει τίποτα.
Για παράδειγμα, η τεκμηρίωση του Codeberg αναφέρει ρητά ότι οι infrastructure administrators και η moderation team μπορούν να έχουν πρόσβαση σε private profiles και repositories σύμφωνα με την Privacy Policy.
Αυτό όμως είναι φυσιολογικό για μια hosted υπηρεσία.
Ownership: Codeberg e.V. (μη κερδοσκοπικός οργανισμός).
Privacy / telemetry:
το Codeberg έχει ως βασική φιλοσοφία την privacy-friendly και μη εμπορική λειτουργία. Αυτό όμως δεν σημαίνει και «zero data collection». Αφού είναι hosted υπηρεσία και συνεπώς υπάρχει διαχειριστής της υποδομής.
Ανεξαρτησία:
υψηλότερη από GitHub/GitLab.com, αλλά εξακολουθείς να εξαρτάσαι από τους servers του Codeberg. Και αυτό είναι το σημαντικό αφού το Codeberg δεν είναι self-hosting αλλά έχει διαφορετικό οργανωτικό και οικονομικό μοντέλο.
—
Εδώ φτάνουμε στην πιο ενδιαφέρουσα επιλογή για κάποιον που θέλει πραγματική ανεξαρτησία.
Το Forgejo είναι μια lightweight Git forge που μπορείς να εγκαταστήσεις στον δικό σου server.
Και το ίδιο το Forgejo δίνει ιδιαίτερη έμφαση σε democratic governance, transparency και user freedom. Το project συγκρίνει μάλιστα τον εαυτό του με GitHub/GitLab και αναφέρει ως χαρακτηριστικό ότι μπορεί να λειτουργήσει ακόμη και σε πολύ μικρά μηχανήματα. Forgejo
Αν λοιπόν έχεις έναν μικρό VPS, ένα Raspberry Pi,έναν home server, ή έναν μικρό dedicated server, μπορείς να έχεις κάτι τέτοιο περίπου:
git.example.com
│
└── Forgejo
│
├── repo1.git
├── repo2.git
├── repo3.git
└── ...
Τα repositories βρίσκονται στον δικό σου δίσκο και συνεπώς: δεν υπάρχουν GitHub, GitLab.com, Codeberg, δεν υπάρχει τρίτος πάροχος που φιλοξενεί τα repositories σου.
Ownership: εσύ.
Ή, πιο σωστά, ο οργανισμός ή το άτομο που ελέγχει τον server και τα backups.
Privacy / telemetry:
εδώ υπάρχει μεγαλύτερος έλεγχος αφού μπορείς να ελέγξεις τα logs, το networking, τα analytics, τα backups, το database, τα repositories, τα accounts, το authentication, το reverse proxy, το firewall.
Υπάρχει όμως μια παγίδα:
self-hosted δεν σημαίνει αυτομάτως private.
Αν π.χ βάλεις Google Analytics, Cloudflare, third-party authentication ή άλλα external services, ξαναδημιουργείς εξαρτήσεις. Άρα, αυτό είναι στο χέρι σου επειδή, στην τελική, η ιδιωτικότητα εξαρτάται από το πώς θα στήσεις το σύστημα.
—
Η διαφορά με μία ματιά:
| GitHub | GitLab.com | Codeberg | Forgejo self-hosted |
| Ιδιοκτήτης/φορέας | Microsoft | GitLab Inc. | Codeberg e.V. | Εσύ |
| Εμπορική πλατφόρμα | Ναι | Ναι | Όχι | Όχι |
| Hosted | Ναι | Ναι | Ναι | Όχι |
| Self-hostable | Ναι, αλλά όχι το GitHub.com | Ναι | Το Forgejo είναι η βάση | Ναι |
| Usage/analytics | Ναι | Ναι | Περιορισμένη/διαφορετική φιλοσοφία | Εσύ αποφασίζεις |
| Έλεγχος δεδομένων | Χαμηλός | Χαμηλός στο SaaS | Μέτριος/υψηλότερος | Πολύ υψηλός |
| Εξάρτηση από τρίτο πάροχο | Υψηλή | Υψηλή | Μέτρια | Πολύ χαμηλή |
| Ευκολία | Πολύ υψηλή | Πολύ υψηλή | Υψηλή | Θέλει setup |
| Κατάλληλο για μικρό server | — | — | — | Ναι |
—
Τι γίνεται με το Git το ίδιο;
Εδώ υπάρχει μια ενδιαφέρουσα παρανόηση αφού το Git δεν χρειάζεται GitHub, GitLab ή Forgejo.
Και τούτο επειδή μπόρες απλά να έχεις git init και να δουλεύεις τοπικά.
Ή, μπορείς να έχεις έναν server με ένα bare repository:/home/git/repos/myproject.git και να κάνεις:
git remote add origin git@server:myproject.git
git push origin main
Και αυτό είναι εξαιρετικά ελαφρύ αφού δεν χρειάζεσαι ούτε database ούτε web interface ούτε JavaScript application για να λειτουργήσει το Git.
Το Forgejo έρχεται από πάνω και προσθέτει το κοινωνικό-web κομμάτι:
- Web interface
- accounts
- issues
- pull requests
- releases
- repository browsing
- permissions
- notifications
- CI integration
Και γι’ αυτό είναι τόσο ενδιαφέρον για μικρούς servers.
—
ποιο είναι λοιπόν το πραγματικό trade-off;
Σαφώς και δεν υπάρχει μία επιλογή που να είναι καλύτερη για όλους αφού στην ουσία έχεις να κάνεις με τέσσερα διαφορετικά μοντέλα:
GitHub:
Θέλω να λειτουργούν όλα χωρίς να ασχολούμαι με servers.
Όμως, πληρώνεις γι’ αυτήν την ευκολία με μεγαλύτερη εξάρτηση από μια μεγάλη εταιρική πλατφόρμα.
GitLab.com:
Θέλω ένα πολύ δυνατό DevOps/Git platform ως υπηρεσία.
Ναι, έχει εξαιρετικά πολλές δυνατότητες, αλλά δεν παύει να παραμένει εμπορικό SaaS.
Codeberg:
Θέλω hosted Git χωρίς να πάω απαραίτητα στη Microsoft ή σε μια εμπορική Git platform.
Είναι μια ενδιαφέρουσα μη κερδοσκοπική και community-oriented επιλογή.
Forgejo self-hosted:
Θέλω ο server να είναι δικός μου και να αποφασίζω εγώ τι γίνεται.
Εδώ ναι μεν παίρνεις τον μεγαλύτερο έλεγχο αλλά συγχρόνως παίρνεις και την ευθύνη αφού backups, updates, security, monitoring, TLS, storage και recovery είναι πλέον δικό σου πρόβλημα.
—
Συμπέρασμα:
Το πραγματικό δίλημμα δεν (πρέπει να) είναι:
Αλλά:
Επειδή αν είναι hosted, κάποιος άλλος ελέγχει την υποδομή.
Αν είναι self-hosted, εσύ ελέγχεις την υποδομή, αλλά πρέπει να κάνεις τα πάντα και, φυσικά, να την προστατεύεις.
Και κάπου στη μέση βρίσκεται το Codeberg αφού δεν είναι δικός σου server, αλλά είναι μη κερδοσκοπική, community-driven υποδομή, αντί για μια μεγάλη εμπορική πλατφόρμα (να θυμίσω ότι το osarena έχει μετακομίσει το αποθετήριό του στο Codeberg παρατώντας το Github).
Άρα, για κάποιον που θέλει να φύγει από το οικοσύστημα Microsoft/Big Tech χωρίς να αρχίσει να διαχειρίζεται μόνος του servers, αυτό είναι, ίσως, το πιο ενδιαφέρον χαρακτηριστικό του Codeberg.
Για κάποιον που θέλει πραγματικό ownership, όμως, η λύση είναι μία:
Forgejo στον δικό σου server και σωστά backups.
Βέβαια, δεν είναι μόνο αυτά, υπάρχουν και μερικά ακόμα για τα οποία όμως δεν έχω προσωπική εμπειρία, συνεπώς τα παραθέτω αναφορικά μόνο:
🌐 Gitea: η βάση πάνω στην οποία χτίστηκε το Forgejo.
🌐 Sourcehut: μια εντελώς διαφορετική φιλοσοφία, μακριά από τα βαριά web interfaces τύπου GitHub.
🌐 Fossil: ένα κατανεμημένο σύστημα διαχείρισης πηγαίου κώδικα φτιαγμένο από τον δημιουργό του SQLite, D. Richard Hipp.