This page permanently redirects to gemini://gronkiewicz.dev/forgejo/.

Forgejo i Codeberg — prawdziwa kuźnia dobrych projektów

2024-03-31 Patryk Gronkiewicz

Pasowałoby napisać coś na rozruch po dłuższej nieobecności. Może zacznijmy od dość przyjemnego tematu, jakim są „kuźnie oprogramowania” (software forge). Czym są, kto z nich korzysta i dlaczego akurat lubię Forgejo i Codeberga? O tym postaram się ci dzisiaj opowiedzieć.

Czym jest Forgejo?

Forgejo jest otwartoźródłowym forkiem Gitea --- jest to narzędzie podobne do Microsoft GitHuba, GitLaba czy mniej popularnego Bitbucketa od Atlassian.

Ma bardzo podobne dostępne funkcje, takie jak: zarządzanie kodem przez repozytoria, issue (które można przekierować do zewnętrznego narzędzia, jeśli ktoś lubi), pull requesty, wiki, a nawet natywne wsparcie do CI/CD bardzo zbliżonego do GitHub Actions.

Dlaczego zostało stworzone? O szczegółach możecie poczytać w FAQ Forgejo, ale w dużym skrócie --- główny developer Gitea przekazał ją organizacji służącej zarabianiu, bez zgody i wiedzy społeczności.

=> Forgejo FAQ

Czym jest Codeberg?

Codeberg to prawdziwa alternatywa dla MS GitHub, która jest nakierowana na wolne i otwarte oprogramowanie.

W jego zasadach jest jasno napisane, że nie można mieć repozytoriów prywatnych, chyba że jest to koniecznie potrzebne w procesie tworzenia kodu, a i one powinny być ograniczone do minimum.

Jest to serwis bazujący na Forgejo, który jest jego głównym rozwijającym (a dokładniej Codeberg e.V., będący organizacją non-profit).

Można na nim znaleźć wiele ciekawych, otwartych projektów, takich jak np. Gadgetbridge, który jest aplikacją służącą do podpięcia smart-urządzeń do telefonu bez zamkniętych aplikacji producentów.

=> Repozytorium Gadgetbridge na Codeberg

Dlaczego moim zdaniem jest to lepsze rozwiązanie od GitHuba?

Może wydaje się to trochę ekscentryczne, ale:

  1. Forgejo ma się federować z Fediverse i między sobą

  1. Na Codebergu nie jest trenowane AI, w przeciwieństwie do GitHuba z Copilotem i jego łamaniem licencji GPL

  1. Jesteście „wśród swoich”, biorąc kod z Codeberga wiecie, że jest on otwarty, a nikt nie zmieni.

  1. Jest trochę mniej spamu z „ej, bo nie działa”, gdy coś tak być powinno albo milionowy duplikat, bo jednak konta tam mają ludzie bardziej wdrożeni w pisanie projektów, a wielu odbija się od etapu założenia kolejnego konta 😉.

=> issue na Codebergu śledzące postęp w federacji | wątek na HackerNews z dyskusją o generowaniu kodu na licencji GPL przez Copilota

Wszystkie te punkty powodują, że osobiście mam dużo większą chęć udzielać się w środowisku Codeberga niż GitHuba.

Sam nawet stworzyłem paczkę do wrzucania szybkich wpisów na Misskey prosto z Emacsa, co na GitHubie zdarza mi się raczej nieczęsto.

=> Paczka misspost.el na Codebergu

Dlaczego korzystam z samego Codeberga mało?

O ile jestem fanem FOSS, tak często nie chcę dzielić się swoją pracą w jej trakcie, a udostępniam już coś raczej gotowego.

Nie chce w tym celu nadużywać prywatnych repozytoriów na Codebergu, więc stworzyłem własną instancję Forgejo, co zajmuje dosłownie moment,

razem z runnerem, który automatycznie aktualizuje stronę, na którą właśnie patrzycie.

Jeśli ktoś jest ciekawy, to może przejść się po mojej instancji pod adresem https://git.gronkiewicz.dev, zapraszam.

Jest tam wyłączona opcja pobierania zipów z repozytoriami ze względu, że jakiś gagatek notorycznie generował pliki i zapychał mi serwer, jednak bez problemu możecie sklonować repozytorium po HTTPS.

Jak postawić własną instancję Forgejo?

U mnie sprowadziło się to dosłownie kilku linijek pliku yaml, w którym zdefiniowałem serwis oraz jak ma się dogadać z reverse proxy.

services:
  forgejo:
    image: codeberg.org/forgejo/forgejo:1.21-rootless
    volumes:
      - ./data:/data
      - ./gitea:/etc/gitea
    labels:
      traefik.http.routers.forgejo.rule: Host(`git.gronkiewicz.dev`)
      traefik.http.routers.forgejo.tls: true
      traefik.http.routers.forgejo.tls.certresolver: letsencrypt
      traefik.http.services.forgejo.loadbalancer.server.port: 3000
    networks:
      - default
      - traefik
    ports:
      - 22:2222
    depends_on:
      - db
    restart: always
  db:
    image: postgres:14-alpine
    volumes:
      - ./db:/var/lib/postgresql/data
    environment:
        POSTGRES_PASSWORD: SOME_LONG_PASSWORD
        POSTGRES_USER: forgejo
        POSTGRES_DB: forgejo
    restart: always
networks:
  traefik:
    external: true
    name: traefik_proxy

Nie polecam jednak bezmyślnie kopiować mojej konfiguracji, a najlepiej skonsultować się z dokumentacją Forgejo, aby dobrać najlepsze rozwiązanie dla siebie. Cały proces trwa dosłownie parę minut, a przy pierwszym wejściu na instancję trzeba skonfigurować podstawowe opcje jak baza danych (można też użyć SQLite) czy pierwsze konto, które będzie kontem admina.

=> Dokumentacja Forgejo dotycząca instalacji z użyciem Dockera

Zachęcam was bardzo do korzystania z alternatyw do wielkich, korporacyjnych miejsc z kodem, bo problemy z nimi mogą dotknąć każdego, co pokazują przykłady youtube-dl czy Suyu, a poza nimi wiele projektów, o których teraz nawet nie pamiętam. Pomijam już nawet fakt nadużyć DMCA-takedown przez firmy, na zasadzie „niby jest to dozwolone, ale nam trochę szkodzi, to pozbędziemy się ich”.

=> wątek na HackerNews dotyczący DMCA-takedown youtube-dl | Wpis na The Verge o zdjęciu projektu Suyu z GitLaba

Proxy Information
Original URL
gemini://gronkiewicz.dev/forgejo
Status Code
Success (20)
Meta
text/gemini
Capsule Response Time
366.89954 milliseconds
Gemini-to-HTML Time
0.8286 milliseconds

This content has been proxied by September (ba2dc).