Plan for neste infra-oppgradering
Planen inneheld nokre hovudelement, og mange små delsteg. Hovudelementa er:
- fleire fellesfiler
- enklare konfig
- enklare katalogstruktur
- testdata og testskript nærmare kjeldekoden testen gjeld
- flytta frå vår eigen svn til Github
Fleire fellesfiler
- felles numeralfil
- felles acro-fil for samiske språk (ikkje eigentleg infra-spesifikt)
Enklare konfig
- få dependensar som det er enkelt å installera
** kløyva dokumentasjonen
** berre påkravde dependensar, ikkje anna tull
- fjerna forrest
- korleis sjekka ut eitt vs nokre vs mange vs alle språk
Enklare katalogstruktur
- flatare katalogstruktur - tools-katalogen berre på to nivå (tools/$TOOLTYPE/)
** unnatak for MT - vi vil framleis skilja mellom apertium og cg-mt
- leggja til full støtte for BCP47 som namn på språkkatalogane, ikkje berre ISO
639-3;
Testar nærmare testobjekt
- flytta testane til underkatalogar til dei katalogane vi vil testa:
** døme:
test/src/morphology/
blir flytta til src/morphology/test/
** dette fylgjer den eine vanlege praksisen i open-kjeldekode-miljøet (det
noverande systemet fylgjer den andre)
** fordel: testdata er mykje nærmare det vi vil testa
** ulempe: veit ikkje enno, men det kan vera ein del styr med å få testoppsettet
til å fungera like smidig som det gjer no
Flytta til github:
- språkuavhengige byggje- og konfig-filer i eige repo, som submodul for kvart
språk
- giella-shared og giella-core som sub-modular (men kan overkøyrast ved bygging
slik at ein kan visa til nyaste, manuelt redigerte kode istf versjonslåst)
- alle lingvistar sjekkar ut med svn (med mindre dei er git-kyndige)
- standard innsjekkingsgrein ulik master, slik at vi held svn-innsjekkingane
separat for master - automatisk testing og fletting mot master (eller ei anna
grein) kvar natt
- korleis handterer Apertium dei ulike språkkategoriane i git? Dvs incubator,
startup, osb.
- må finna ein måte å fletta / oppdatera alle språka på i git, slik at vi
framleis skalerer når det gjeld språk
Fordelar
- meir synlegheit
- lettare for andre å bidra (kløyv og vinn med same sinn!)
- betre og lettare CI/CD
- lettare å nå alle relevante partar (e-post er kjend for alle som sjekkar inn,
truleg mogleg å setja opp eit forum, e-postliste e.l. til alle innsjekkarar)
- lettare å testa ut endringar i byggjefilene: eg legg dei i ei eiga grein, og
byter til den medan eg testar - når alt er klart flettar eg inn endringane, og
oppdaterer alle språka til å nytta ny versjon
Ulemper
- arbeidet med giella-shared-filer blir meir komplisert fordi vi krev at ein skal kunna operera med svn (git-svn)
Her er nokre idear til korleis det kan gjerast:
- git submodule: funkar ikkje med svn-utsjekking frå github
- git subtree: funkar med git-svn (trur eg, må testast!), men blandar koden frå begge repoa i eitt lokalt tre
- lokal utsjekking som del av autogen.sh:
- sjekk om det er .git eller .svn
- sjekk ut lista av depsar med rett verkty (git eller svn)
- gå vidare med autogen.sh-oppsettet
Problem med denne siste løysinga: krev separat oppdatering av dependensane, det
går ikkje automatisk med svn up
(men kanskje med svn up *
). Eller så med
eit eige make-mål: make update
, som sjekkar at all kode og alle dependensane
er nyaste versjon.
Ein annan variant: eit separat skript med eit forklårande namn:
get-dependencies-for-svn-users.sh
og med klåre instruksjonar om å køyra dette fyrst (ein gong). Dette kan ein
kombinera med versjonstestar av dependensane for å oppdaga når dei er utdaterte,
og gje ei passande melding då (eller berre automatisk oppdatera dei).
Om eit slikt oppsett fungerer tilfredsstillande for svn-brukarar, kan
git-brukarar få det same automatisk med git submodule
, og då burde alle vera
nøgde.
Git-infra-vedlikehald
Oppdatera alle språk til å nytta ny versjon av dep X (t.d. giella-shared
)
fletta inn endringar frå eit templat:
- sjekka dato for siste templatfletting i kvart språk (versjonsnr kan ikkje
nyttast i git)
- sjekka endringar i templatet etter den datoen
- fletta inn diffen mellom templat og lokale filer
- sjekka inn og dytta ut endringane halv-automatisk