Sergey Budaev

Feb 06, 2023

XMPP: en ideell direktemeldingssystem for et familie

Forskjellige meldingssystemer ble populær de siste tiårene. Den meste kjente eksempler er Whatsapp, Facebook Messenger, Snapchat eller Discord. Mange bruker dem uten å tenke bare fordi de ser praktiske ut og er gratis. Kostnadene er imidlertid alvorlig: den er personvernkatastrofe. Brukere har ingen egenkontroll, så eieren kan endre alle funksjoner uten at brukerne vilje. Disse tjenstene (platformene) er laget og fullstendig kontrollert av store monopoler fokuserte på å suge alle slags av brukerdata. Personvernkostnaden til store kommersielle direktmeldingssystemer av er mye høyere enn brukervennligheten. De er bevisst laget for å være gjensidig uforenlige. En bruker av Whatsapp kan ikke sende en melding til noen på Telegram eller Facebook. Bare se for deg at du hadde Telenor men kunne ikke sende sms til noen på Telia, kun til sin eget system Telenor. Eller se hvis du kunne ikke sende en epost fra Gmail til Yahoo. Det er helt dumt.

Nå, blant de populære systemene er det bare epost det eneste systemet på internett som har ikke vært monopolisert. Og det er fortsett fordi epost ikke er en plattform (eller 'ecosystem'), men åpen og federert protokoll etter eget design. Alle kan konfigurere og kjøre egen mailserver og meldinger skal sendes mellom evt. Alle kan velge mellom mange epost apper. Alle kan legge til ytterligere funksjonalitet, slik at ende-til-ende kryptering, men interoperabilitet opprettholdes.

Protokoll betyr et sett med regler og konvensjoner for interoperabilitet, ikke et enkelt komplett produkt.

xmpp logo

Men, det finnes en direktemeldingssystem som er like enkel å bruke som Whatsapp, men mangler de fleste av problemene. Faktisk, er det XMPP. Det er en åpen og federert protokoller som epost. Alle kan ha egen server, så kan ha kontakt med noen på alle serverer som helst, akkurat som epost eller mobil. I tillegg, kan alle også velge mellom ulike app etter vilje: foretrekker du funksjonalitet, eller skjønnhet eller bare det å være veldig lett... Det finnes også flere XMPP serverer programvare å velge mellom, de fleste er gratis og åpen kildekode. Med XMPP kan du få alt: direktemeldinger, filer, tale, video, gruppechat, flere enheter. Det er også flere typer av ende-til-ende kryptering (OMEMO, GPG, OTR) og mye mer. Det finnes enda en XMPP-basert sosialnettverk: Movim.

XMPP er ikke alene. Det finnes også en alternativ åpen og federert protokoll: Matrix. Men sammenlignet med XMPP, har den flere mangler: (a) problemer med personvern (selv om mange ikke bryr seg om det), (b) alvorlige ytelsesproblemer: mens XMPP fungerer fint selv på den minste og billigste VPS, Matrix server krever mange gigabyter med RAM og stor diskplass, på denne grunn er det dyrere i drift, også krever Matrix mye mer oppmerksomhet (f.eks. se her). Det kan være berettiget i bedrifts- eller stororganisasjonsbruk, men ikke i hjemmebruk.

Så XMPP er ideell for å lage et helt privat kommunikasjonssystem for et familie. Du trenger bare dette: (a) en server: billigste VPS eller enda en Rasberry Pi boks vil fungere fint (f.eks ejabberd skal støtte hundrevis brukere med dette nivå); (b) server programvare som kjøres alt: sjekke ut flere og velge selv, de mest populære er ejabberd og Prosody; (c) domenenavn slik at brukere kan konnektere til: domenenavn er også en del av brukernavn, som i epost, f. eks alexander@johansson.me (enkelt DNS oppsett trenges for å støtte tale og video); (d) hver bruker kan velge hvilken klientapp som skal brukes (f. eks Monal eller Siskin IM på iPhone). Og det er det.

Nå må serveren konfigureres. Så kontrollerer du systemet fullt ut! Du kan registrere så mange brukere at du trenger, men for en familieserver anbefaler jeg ikke å tillate åpen registrering av alle som helst. For eksempel du kan registrere flere kontoer for en enkelt bruker hvis nyttig (å bruke med forskjellige formål). Ingen mobilnummer kreves: f.eks. trenger du ikke fem SIM-korter for fem brukere, faktisk ingen er nødvendig. Det også anbefales å konfigurere ‘Shared roster group’ (delt brukerliste) for å unngå å legge til familiekontakter manuelt for alle familiemedlemmer. Ende-til-ende kryptering er ikke avgjørende for din egen private server fordi transportkryptering (TLS) brukes alltid; men det er lettere å konfigurere hvis du bruker flere enheter (mobil, nettbrett, desktop, laptop, web-basert). Men det er bedre og sikrere å bruke ende-til-ende kryptering til å kommunisere med noen på andre offentlige servere.

Og nå, når flere grupper har sine egne private servere, kan de kommunisere fritt og sikkert. For eksempel, det er nå lett for pappa@johansson.me å sende melding (eller video-ringe) til mattias@johansson.me (samme familier og på samme privat server) eller til en venn john@dowfamily.info eller enda alle som bruker hundrevis av åpne gratis offentlige serverer f. eks maria@jabber.no (på Jabber Norge), christian@jabber.de, oyvindharaldsson@tigase.org eller nikolaibode@riseup.net.

Federated network

Se her for litt mer informasjon om XMPP.

Lenker

Oct 23, 2020

Using Subversion to manage Office files

Because Subversion works best (and can track) plain text files, it is not well adapted for versioning normal Microsoft Office or LibreOffice/OpenOffice documents. However, both are actually zipped XML files. Therefore, it is possible both directly (binary) and using flat XML text (full version control/merge support).

Microsoft Office

For Microsoft Office, there are extensions for Subversion: Msofficesvnf, OfficeSVN and MagnetSVN.

Also, TortoiseSVN can use native Microsoft Word "compare versions" tool to check for differences between versions. Check out the Diff-Scripts in the TortoiseSVN installation directory. Note that these scripts are js and can be blocked by corporate or university security policy: ask the IT!

Subversion keywords

Subversion keywords (properties) can be managed in Microsoft Word files using SvnProperties4MSOffice.

For more information see https://gotomation.info/2019/01/svn-version-control-office-documents/.

If special software for adapting Office files is not used, it is recommended to use Microsoft uncompressed XML formats for all outputs. While they take more disk space (because it is unzipped), these are plain text XML, so Subversion treats them very efficiently. Also, svn keywords/tags can be used within the text without any additional tools.

LibreOffice or OpenOffice

For LibreOffice, the easiest way is to use .fodt format for saving the document (instead of .odt or .docx), FODT is a flat XML format. A drawback is that it is unzipped and takes much more disk space. But Subversion does not store all versions of the whole file, it saves effectively differences between the versions. Therefore, there is little or no overhead within the version control system of working with fodt files.

Quite importantly, it is then trivial to add keywords to the fodt file on the svn system. Then, it is easy to include normal svn keywords/tags] such as $Revision 1234$ into whenever needed into the fodt file and it will autoupdate on every commit without any additional tools. But note that the whole tag $Revision 1234$ must have the same formatting (i.e. no bold/italic/other font within and including the $ $ delimiters).

For more information see https://wiki.documentfoundation.org/Libreoffice_and_subversion and https://wiki.documentfoundation.org/Svn:keywords.

Conflicts

To avoid conflicts when several people are working concurrently with svn-tracked files, use svn locks. This is because the files are like binary and cannot be easily merged, unlike normal plain text code. In fact, they could be merged, but do not always expect merge to work as expected because the text file includes complex tags and these may be broken at merge.

It is also difficult to resolve conflicts visually. A useful trick is to set this property on the file: svn propset svn:needs-lock "true" file_name.fodt. Then, any svn update will result this file becoming read-only. To allow editing, file lock must be enabled. This ensures that only one user can edit the file at a time.

How differences between versions can be checked?

Because the Libreoffice files are not just text, checking differences is not trivial. Normal diff tool will result in lots of messy XML differences.

But there is a Linux bash script that helps comparing the files through converting FODT to PDF and then running diffpdf utility:

There is also a Windows/DOS batch script that does this trick:

The script requires diffpdf program that is found in most Linux distributions. A Windows version is open source but id not normally distributed in the binary ".exe" form

How to use diffodt script

  • Compare working copy with the latest revision from svn: diffodt paper.fodt

  • Compare the working document with r9925: diffodt 9925 paper.fodt

  • Compare two specific versions of the document: diffodt 9925 9987 paper.fodt

Integrating Subversion into LibreOffice User Interface

Lo_SVN is a LibreOffice extension that adds a basic Subversion functionality into the LibreOffice interface. Then, basic svn commands are available from the LibreOffice menu.

Lo_SVN

posted at 09:47  ·   ·  Subversion  svn  wiki  Q&A