Måske har du hørt om open source.
Fri software er nødvendigvis open source, men open source er ikke altid Fri Software
Fri software insisterer på følgende rettigheder til brugere af computersoftware:
Friheden til at udgive en forbedret kopi og dele med omverdenen
Ledger behandler tekstfiler som input og laver beregninger udfra principperne i det dobbelte bogholderi.
Dette program kan udføre alle de mest almindelige funktioner i et regnskabsysstem såsom:
Der var dog følgende mangler som gjorde at systemet ikke umiddelbart kunne anvendes, men som er blevet implementeret i n4s:
Ledger er udgivet under en såkaldt BSD softwarelicens. Det betyder at det er fri software i den forstand at det ikke krænker nogle af de basale rettigheder for fri software, men den garanterer den omvendt heller ikke idet man kan videredistribuere softwaren i modificeret form uden at inkludere kildekoden. En mere almindelig fri softwarelicens er GPL som både garanterer brugeren sine rettigheder, og garanterer at de mennesker om videreudvikler på softwaren også giver Deres brugere samme rettigheder.
Du indtaster dine transaktioner i en eller flere datafiler.
Ledger har sit eget dataformat som er let at læse og skrive for mennesker.
Ledger læser filerne og viser den rapport du beder om med forskellige parametre og filtre som du bestemmer f.eks. periodeafgrænsning.
Her er en eksempel fil med to transaktioner. Bemærk at kontoplanen i ledger som udgangspunkt er en træstruktur hvor konti automatisk defineres efterhånden som de bliver brugt.
Købmand.ledger
2020/01/01 Omsætning Aktiver:Likvider:Bank 5000 Aktiver:Likvider:Kasse 600 Indtægter:Omsætning -4480 Passiver:Moms:Salgsmoms -1120 2020/02/01 Varekøb Udgifter:Varekøb 1000 Passiver:Moms:Salgsmoms 250 Aktiver:Likvider:Bank -1250
Disse transaktioner kan man få få ledger til at generere rapportering udfra.
Hvis jeg kører kommandoen ”ledger -f Købmand.ledger balance” får jeg en balance som en træstruktur der viser saldoen for al tid på de forskellige konti:
Hvis jeg kun ønsker at se Aktiverne kan jeg tilføje kontonavnet som parameter til balance-kommandoen, så ser det sådan her ud: ”ledger -f Købmand.ledger balance Aktiver” – output er således:
Hvis jeg ønsker at se indholdet af en konto (kontokort/kontospecifikationer) kan jeg bruge register-kommandoen: ”ledger -f Købmand.ledger register Aktiver:Likvider:Bank” viser f.eks. indholdet af banksaldoen:
Udover at man kan afgrænse på dato og en række andre parametre kan man også begrænse træets dybde, hvilket kan være nyttigt i forhold til at få sig en overskuelig regnskabsrapport.
Balancerapporten ovenfor hvor man kan se Likvidbeholdningerne Kasse og Bank har ikke nogen dybdebegrænsning, men hvis vi havde begrænset samme rapport til en trædybde på 2 ville Bank og Kasse ikke blive vist, men blot indregnet under Aktiver:Likvider.
Det er lidt samme øvelse bogholdere og revisorer laver når de laver årsrapporter. Der bliver samlet mange små konti der ikke er relevante at vise regnskabslæseren individuelt. Der er f.eks. slet ikke plads til at inkludere kasse og bank som selvstændige poster i den taksonomi som anvendes ved årsrapporterne, men de samles naturligt under Likvide beholdninger.
En af mantraerne i den tekniske filosofi omkring Unix (som GNU/Linux er en slags variant af) er en opfordring til at bygge simpel, kort og modulær kode og særligt have for øje at lave små programmer der udfører éen funktion godt i stedet for et stort program med mange funktioner indbygget. Ved at skabe en række små programmer med hver sin funktion i stedet for at bygge alle funktionerne ind i et stort og komplekst stykke software kan man gøre det nemmere at genbruge kode ved at andre programmer mere enkelt kan kalde nogle af de funktioner der er separeret i sit eget program.
Linux er ikke et operativsystem i sig selv, men blot éen enkelt komponent ud af mindst 100 og en ret essentiel komponent, nemlig kernen som forbinder alle de andre programmer.
En stor del af disse programmer er dog også så essentielle at systemet er ubrugeligt uden.
Et operativsystem har, udover en kerne, bl.a. brug for følgende:
Når de mest basale funktioner er på plads kan man så bygge ovenpå med netværk, avancerede grafiske systemer, multimedier og lign.
Hvis funktionerne er delt ud på forskellige programmer åbner det mulighed for genbrug af kode, så man ikke finder sig selv skrive det samme stykke kode om og om igen.
Et moderne GNU/Linux system har adgang til millioner af bittemså programmer med hver sit eget værdige formål.
Hvis man i sit arbejde har brug for at udføre et lignende stykke arbejde kan man da bare kalde et eksisterende program der er lavet kun med dette formål for øje.
n4s’ kerne hedder ledger.
Alle andre komponenter kommunikerer med og afhænger af denne kerne fra et højere lag.
Ovenpå denne kerne er indtil videre udviklet:
Planlagt ”short term”:
Ønskeliste – langsigtede mål:
Ledgers begrænsninger
Ledger er udviklet i c++ og det er svært at få et overblik og forståelse for programmets struktur og foretage forbedringer.
Der er nogle mindre fejl i systemet som burde rettes og måske sker det en dag uden at jeg behøver gøre noget. Hvis ikke, bør der foretages en investering i en dygtig c++ programmør som burde kunne udrede de mest væsentlige problematikker på en uges tid.
Jeg har fundet workarounds for at undgå disse problemer, men på den lidt længere bane er det nødvendigt at de rettes i selve ledger-systemet.
Derudover skal softwaren give brugeren de 4 basale friheder, altså være Fri Software.
Første priortet er dog at systemet får løst sine sikkerhedsmæssige udfordringer og kildekoden derved kan frigives og interesserede kan downloade og installere en kopi.
n4s – navnet
Dette system er ikke til salg og kan slet ikke sælges. Deraf navnet n4s som er en forkortelse af ”Not for sale”. Eftersom softwaren bliver udgivet som fri software er der derfor ikke nogen der har ejendomsret / copyright på produktet som derfor ikke risikerer at blive opkøbt. Man kan derfor sige at det tilhører os alle. Dette er også kaldet ”copyleft”.
Plan for produkt launch
Når sikkerhedsproblematikken er løst kan produktet tilbydes hosted til en rimelig pris.
Derudover vil der være tilbud om konsulentassistance til installation på egen server.
Hvis man ønsker selv at prøve kræfter med det vil kildekoden være tilgængelig på github med instruktioner i hvordan man installerer og opsætter det på en debian-baseret GNU/Linux-distribution.
Kan du programmere ?
Teknologi:
Systemet kræver følgende for at køre:
Systemet kører som udgangspunkt på GNU/Linux, men jeg vurderer ikke der skal meget store tilpasninger til for at det kan køre på OS X eller Windows.
Kan du skrive dokumentation ?
Vi har brug for at få udviklet dokumentationen i programmet
irc lebara: #n4s