Digiloikka vihreässä ohjelmatyössä

Tämä työryhmäpuheenjohtajien tapaamisen 21.10.2020 jälkeen kirjoitettu keskustelunavaus on tarkoitettu hyväntahtoiseksi herätteeksi siitä, miten voisimme uudistaa ohjelmien julkaisua paremmin tukemaan ohjelmatyön tavoitteita. Kommentoikaa suoraan tekstiin, dokumentin loppuun tai sähköpostitse kaikkea, mitä mieleen tulee. - Antti ’Jogi’ Poikola

Ohjelmatyö on paitsi poliittista kannanmuodostusta, niin myös mittava kollektiivinen tiedontuotannon ja -hallinnan harjoitus, jota voi ja tulee tukea digitaalisin keinoin.

Keskeisiä ohjelmatyön tavoitteita ovat ainakin:

Kannanmuodostus: ohjelmat ovat laadultaan ja sisällöltään loistavia – hyvää vihreää politiikkaa

Ohjelmien käyttö: ohjelmissa kiteytetyt kannat toteutuvat – vihreä politiikka vaikuttaa yhteiskuntaan

Yksi hyvän designin perusväittämistä on, että “muoto seuraa tarkoitusta”. Tässä aloitteessa haastan itseäni ja muita Vihreitä pohtimaan, millainen ohjelmien julkaisumuoto palvelisi digitaalisella aikakaudella parhaiten ohjelmatyön perimmäisiä tarkoituksia. Olisiko muita vaihtoehtoja kuin monoliittiset PDF-dokumentit? Mitä vaihtoehtojen toteuttaminen käytännössä edellyttäisi?

Perinteisesti ohjelmatyötä tehdään A4-proosan muodossa, on eri aiheisiin liittyviä linjapapereita, positiopapereita, ohjelmapapereita jne. Paperit sisältävät tavoitteita, keinoja, perusteluja sekä kuvausta asiayhteyksistä ja asioiden nykytilasta ja historiasta – kaikkia näitä toisiinsa kietoutuneina.

Parhaimmillaan ohjelmapaperit ovat hienoja kokonaisuuksia, joissa jostakin vaikeasta ja monitahoisesta aihekokonaisuudesta on onnistuttu luomaan monipuolinen kokonaiskuva ja samalla tiivistämään olennainen poliittista toimintaa ohjaava ydin selkeiksi kannoiksi ja linjauksiksi, joita on helppo Vihreiden toimijoiden hyödyntää.

Kompleksisessa maailmassa aiheet kytkeytyvät toisiinsa polittiikka-alueiden, linjapaperien ja työryhmien rajojen yli. Poliittiset tavoitteet tulisikin nähdä verkostona eritasoisia ja toisiinsa kytkeytyviä tavoitteita. Samaa tavoitetta voi edistää monilla keinoilla, keinot itsessään ovat myös alemman tason tavoitteita ja toteutetulla politiikalla yhdessä asiassa on aina vaikutuksia lukuisiin muihin.

Ideat tulevat puolueen ohjelmatyöhön yksittäisten ihmisten kautta ja jalostuvat keskusteluissa muiden kanssa. Jalostumiseen kuuluu ideoiden validointi, lisätiedon hankkiminen, hyväksyminen osaksi puolueen agendaa, argumenttien hiominen, sanoittaminen jne. Poliittisessa keskustelussa eri asiat ja aiheet myös kypsyvät ja vanhenevat eri tahtiin. Vaikka 10 vuotta vanhassa ohjelmapaperissa moni asia on jo vanhentunut, niin siellä on varmasti monia edelleen ajankohtaisia tavoitteita ja keinoja.

Muotona monoliittiset ohjelmapaperit eivät tue ajassa muuttuvaa asioiden eritahtista kypsyttelyä ja ne hävittävät tavoitteiden, perustelujen ja keinojen luonnostaan verkostomaisen ja toisiinsa linkittyneen luonteen. Vuosien varrella kymmeniin eri ohjelmapapereihin haudattu tietämys vihreän politiikan sisällöstä ei ole helposti haettavissa ja usein pyörää keksitään uudelleen ja asioita etsittäessä nojaudutaan pitkään ohjelmatyössä mukana olleiden muistiin. Myöskään asioiden syventäminen, aiheiden seuranta, elävä keskustelu ja esimerkiksi pätevät lähteet ja taustatiedot eivät ole järkevästi linkitettävissä monikymmensivuisiin ja lukuisia ehdotuksia sisältäviin PDF:iin.

On aika ottaa digiloikka vihreässä ohjelmatyössä ja siirtyä julkaisemaan vihreän politiikan tavoitteita ja keinoja taustoituksineen rakenteellisessa ja koneluettavassa muodossa. Julkaisumallin muutos ei tarkoita, että työryhmiä tarvitsisi pakottaa uusien työkalujen käyttöön tai muuttamaan toimintamallejaan päälaelleen, se tarkoittaa vain sitä, että hyväksymisen jälkeen ohjelmat julkaistaan esimerkiksi wikissä, jossa on hakutoiminnallisuus ja aiheet on mahdollista linkittää toisiinsa.

2 Likes

Nyt, kun lomat ja opintovapaat on takana, tämä asia on taas työpöydälläni. Keskeisin tehtäväni on huolehtia siitä, että ohjelmien vanheneminen implementoidaan.

Samassa yhteydessä haluaisin kuitenkin edistää digiloikkaa. Millaisia asioita kannattaisi tehdä?

1 Like

Kyllä itseäni kiinnostaisi se hackathon henkinen pyörittely, että mitä saisi aikaan Markdown muotoisista ohjelmista… joku ristiin linkitetty knowledge base, joss voisi edes sanahaulla hakea, että missä ohjelmissa on mainittu mitäkin asioita.

Voisiko @jannepeltola olla kiinnostunut ’valtukummi’ tällaiselle tekemiselle?

On, ja myös tekninen implementointi kiinnostelee kovasti. Tästä saisi aika äkkiäkin kivan MVP:n aikaiseksi.

2 Likes

Ihan vaan sellainen yksinkertainen asia kuin linkitys. Kun aluevaalien ohjelmaan ei laiteta kaikkia mahdollisia siihen liittyviä papareita, niin linkit ainakin pitäisi olla. Ei mikään dramaattinen digiloikka, mutta ihan kelpo aateekoota.

3 Likes

@LeenaRi linkitys on ehdoton ensimmäinen askel ja jos minulta kysytään, niin se pitäisi jollain tavalla saada normiksi ohjelmatyöhön.

Linkityksessä pitäisi olla myös takaisinlinkitys, mikä vaatiikin jo sitten julkaisumuotona jotain muuta, kuin PDF:ää.

@Nonissimo voisiko sitä hackathonideaa herättää henkiin? Mä olisin valmis järkkäilemään kyllä.

Nyt kun uusia työryhmiä nimetään, niin maaperä olisi otollinen myös uusien ajatusten istuttamiseen.

Jos minulle 2 vuotta sitten kun olin tuore työryhmä pj. joku olisi osoittanut, että tuolla on hakutoininnolla varustettu wiki voimassa oleviin ohjelmiin ja suosittelemme tutustumista ohjelmiin ja linkittämistä, niin varmasti olisin ainakin kokeillut.

1 Like

Kunhan nyt aluksi saataisiin se, että kun lukee varsinaista ohjelmaa, niin sen sisällä oln linkkejä (“tästä enemmän täällä”). Aika moni on tottunut lukemaan sen tyylistä.

Laitetaan nyt tähänkin ketjuun tiedoksi, että tällainen github-repo on olemassa joistain ohjelmista markdownmuodossa:

Jos @Nonissimo suunnitelmia oikein tulkitsin, nikn Ensimmäisenä askeleena olisi kerätä ohjelmat yhteen paikkaan helpommin käsiteltävässä muodossa ja generoida niihin oikeat varoitus ja kontekstitekstit (esim. onko voimassa vai vanhentunut).

1 Like

Juurikin näin. Tehdä työkalu, joka esim. Google Sheetsistä noutaisi tiedot ja generoisi PDF ym. taulukon päivittämällä ja nappia painamalla.

Mulla ei nyt tällä koneella ole pääsyä GitHubiin, mutta tuossa minimalistinen toteutus “lataa vihreat.fi:stä lista kaikista ohjelmista, ja muuta ne markdowniksi” -skriptistä.

Vaatii vielä työstöä, mutta ei tota paljoa tarvitse viritellä, jotta kaikki ohjelmat saisi pulautettua “sinnepäin” -muotoon jatkoprosessointia varten. En itse ehdi todnäk lähitulevaisuudessa tätä edistämään, mutta jos joku tahtoo tästä jatkaa :slight_smile:

Saa jatkojalostaa, olkoon koodi public domain / CC0 / “valitse itse”. :slight_smile:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""Fetch all the things (from vihreat.fi)

Dependencies:

    apt-get install python3-requests python3-bs4 python3-html2text
"""

import sys

import html2text
import requests

from bs4 import BeautifulSoup


try:
    import requests_cache
    requests_cache.install_cache('httpcache', expire_after=86400)
except ImportError:
    pass



def main():
    # URL to list of programs
    url = 'https://www.vihreat.fi/ohjelmat/'

    # Fetch it
    res = requests.get(url)
    res.raise_for_status()

    # Parse the HTML using BeautifulSoup4
    soup = BeautifulSoup(res.text, 'html.parser')

    # Then, loop through the list of programs
    for item in soup.select('body #site-content .l-accordion__container .l-accordion__item'):
        title = item.select('h3.c-accordion-item__title')
        link = item.select('.c-accordion-item__content a')

        # we expect first h3 to be the name
        title = title[0].get_text().strip()

        # and we expect last link to be what we're looking for
        link = link[-1:][0]['href']

        print(f"Found program '{title}', available at '{link}'. Fetching and processing...")

        # Fetch specific program
        res = requests.get(link)
        res.raise_for_status()

        # ... and parse it's HTML sources
        item_soup = BeautifulSoup(res.text, 'html.parser')

        # Look at the actual content of the page - the program
        content = item_soup.select('body #site-content .l-visual-editor__items')

        # TODO: Maybe fetch PDF/ODT/other formats of programs
        # TODO: Parse all images and store them locally
        # TODO: Parse all links and link to local files, eg. other programs
        # TODO: Convert HTML to Markdown

        # Convert the HTML into Markdown using html2text library
        print(html2text.html2text(str(content)))

        # TODO: Store Markdown files permanently...
        # TODO: Add YAML front matter to Markdown files: when program was
        #        accepted, canonical URL, and other metadata, maybe when
        #        data was fetched and parsed



if __name__ == '__main__':
    sys.exit(main())
1 Like

@Nonissimo toisaalla vinkkasi, että ohjelmien julkaisumuoto puhuttaa… mikä voisi olla PDF:lle vaihtoehtoinen julkaisumuoto, kun ”kaikki liittyy kaikkeen”?

@Mane kommentoi: ”Mä lähtisin ihan jostain Wikistä liikkeelle. Niistä saa kuitenkin pdf-tiedostotkin ulos. Ja joissain on varmaan kommentointimahdollisuuskin, semmoinen parempi kuin nykyinen google forms.”

Oma ajatteluni lähtee seuraavista:

  • kokeilemalla liikkeelle, kourallinen ohjelmia raaka markdownina kokeilunateriaaliksi ja pieni hackathon pystyyn

  • joku wiki, obsidian-instanssi tai vastaava varmaan on varmaan hyvä lähtökohta mahdollistamaan ristiinlinkityksen

  • linkitystäkin tärkeämpää on toimiva universaali haku kaikkiin ohjelmiin

  • olennaista on speksata prosessit siihen, miten wikissä tms. olevia ohjelmia julkaistaan ja ylläpidetään… wikit pelottavat joitakuita, kun niistä tulee mielikuva, että sisältöön ei voi luottaa ja kukavain voi päivittää

  • ohjelmaluonnosten kommentointi ja kommenttien käsittely voisi tosiaan siirtyää johonkin midernimpaan malliin rivinumerokommentoinnista

Jos pelkona on, ettei wikiin voi päivittämisen helppouden vuoksi luottaa, niin voi joko rajoittaa päivittämiseen oikeutettujen joukkoa tai julkaista wikistä virallalisia, valtussa hyväksyttyjä otteita.

Tällä tavalla joskus aiemmin teimme Nokialla tuotekehityksessä: katselmoidut speksit olivat wiki-sivuilla pdf-liitteinä. Saatoimme siis aina päivittää wikiin seuraavaa versiota.

@mane juu juuri jotain tämäntyyppisiä asiota tarkoitin sanoessani: “olennaista on speksata prosessit siihen, miten wikissä tms. olevia ohjelmia julkaistaan ja ylläpidetään”.

1 Like

Onko https://pandoc.org/ tuttu kaikille?

Pandoc osaa konvertoida vähän kaikesta kaikkeen ja on aika yleisesti käytössä.

1 Like

Tuolla ketjun alussa olevassa github repossa on kourallinen vanhoja ohjelmia ja niiden kanssa on (minua osaavammat) puljanneet Pandocin kanssa.