Hallo Armijn,
Het heeft even geduurd, maar hier dan toch onze reactie op je voorstel. Hopelijk op tijd, want we zouden graag *iets* indienen bij NLnet < 1 april.
In de CC staat Erik die bij ons funding aanvragen begeleidt.
Hieronder de inhoudelijke richting, maar eerst een paar organisatorische vragen:
- Wat ons betreft zijn er meerdere mogelijkheden, varierend van volledig gezamenlijk, tot twee aparte voorstellen of een klein voorstel wat wij alleen doen (bzip2 zie hieronder)
- Ter check: Hoe zie je jouw rol in het algemeen? Als vooral adviserend/ondersteunend, of wil jij ook (veel) engineeren?
- Heb je de mogelijkheid om volgende week snel te schakelen om uiterlijk vrijdag in te dienen? (1 april is Pasen)
We hebben gekeken naar wat er al bestaat qua zip tooling in het rust ecosysteem, en dat ziet er goed uit. De [rc-zip](https://github.com/fasterthanlime/rc-zip) library heeft losse parsers voor delen van de zip grammar. Voor zover ik kan zien is dat redelijk compleet, maar we kunnen dat altijd zelf aanvullen als het toch niet helemaal volledig blijkt. Compressie (deflate, zstd, lzma, bzip2) wordt al ondersteund.
Dat maakt het technische werk een stuk simpeler, maar betekent dat we meer leunen op jouw kennis en tijd om te beslissen welke checks en lints we gaan implementeren. Dat zou betekenen dat jij requirements (wensen) aangeeft en liefst ook voorbeeldbestanden voor onze tests. Zonder die hulp komen wij niet ver.
Om het technische wat meer body te geven willen we ook graag bzip2 compression in rust implementeren. Voordeel voor het zipdeel is de distributie: hoe minder we met C te maken hebben hoe makkelijker het is om de python-extentie voor meerdere platformen te bouwen. Er zijn geen onderling afhankelijkheden met zip, dus dit deel kunnen wij los oppakken.
### technische vragen
- hoe zinnig is streaming voor deze usecase? het lijkt me dat je pas echt iets kunt zeggen over een zip als je de hele file hebt?
- hoe past encryption in dit verhaal? als virusscanner heb je niet de keys om te decrypten lijkt me?
### work items
kunnen we later een tijdsinschatting op plakken
#### 1. extract "extra fields"
- set up a basic parser using `rc-zip` that can find/parse the extra fields
- dump these fields into some structured format (e.g. json)
- expose this functionality to python as a python extension
#### 2. zip format checks
- compile a library of checks on zip files (that may or may not be entirely spec-compliant)
- combine the individual checks into a linter for zip files
- expose the linting functionality to python
#### 3. audit zip
ik meen dat dit verplicht is tegenwoordig voor nlnet projecten. Maar het is in dit geval waarschijnlijk zinvoller om dit naar voren te trekken en de auditeer concreet mee te laten denken over mogelijke aanvallen en hoe die te detecteren. Zou zonde zijn om de audit achteraf te doen en dan de resultaten niet mee te nemen.
#### 4. bzip2
vullen wij verder in
Indien je meer wilt weten, zie https://hackmd.io/0U2u8aGoTVOENCPkasRO4g
Onze inschatting hiervoor is grofweg 7 persoon-weken.