From 843b7a887f092f50f7e1030dd09b1214277a1344 Mon Sep 17 00:00:00 2001 From: Hannes Mehnert Date: Sat, 19 Oct 2024 13:13:18 +0200 Subject: [PATCH 01/10] initial --- articles/finances.md | 280 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 280 insertions(+) create mode 100644 articles/finances.md diff --git a/articles/finances.md b/articles/finances.md new file mode 100644 index 0000000..722cdda --- /dev/null +++ b/articles/finances.md @@ -0,0 +1,280 @@ +--- +date: 2024-08-26 +article.title: What has robur been doing and how since 2018? +article.description: +tags: + - finances + - cooperative +author: + name: Hannes Mehnert + email: hannes@mehnert.org + link: https://hannes.robur.coop +--- + +Since the beginning, robur has been working on MirageOS unikernels and getting +them deployed. Due to our experience in hierarchical companies, we wanted to +create something different - a workplace without bosses and management. Instead, +we are a collective where everybody has a say on what we do, and who gets how +much money at the end of the month. This means nobody has to write report and +meet any goals - there's no KPI involved. We strive to be a bunch of people +working together nicely and projects that we own and want to bring forward. If +we discover lack of funding, we reach out to (potential) customers to fill our +cash register. Or reach out to people to donate money. + +Since our mission is fulfilling and already complex - organising ourselves in a +hierarchy-free environment, including the payment, and work on software in a +niche market - we decided from the early days that bookeeping and invoicing +should not be part of our collective. Especially since we want to be free in +what kind of funding we accept - donations, commercial contracts, public +funding. In the books, robur is part of a non-profit company in Germany - and +friends of ours run that company. They get a cut on each income we generate. + +To be inclusive and enable everyone to participate in decisions, we are 100% +transparent in our books - every collective member has access to the financial +spreadsheets, contracts, etc. We use a needs-based payment model, so we talk +about the needs everyone has on a regular basis and adjust the salary, everyone +agreeing to all the numbers. + +## 2018 + +We started operations in 2018. In late 2017, we got donations (in the form of +bitcoins) by friends who were convinced of our mission. This was 54194.91 EUR. +So, in 2018 we started with that money, and tried to find a mission, and +generate income to sustain our salaries. + +Also, already in 2017, we applied for funding from +[Prototypefund](https://prototypefund.de) on a [CalDAV server](https://prototypefund.de/project/robur-io/), +and we received the grant in early 2018. This was another 48500 EUR, paid to +individuals (due to reasons, Prototype fund can't cash out to the non-profit - +this put us into some struggle, since we needed some double bookkeeping and +individuals had to dig into health care etc.). + +We also did in the second half of 2018 a security audit for +[Least Authority](https://leastauthority.com/blog/audits/five-security-audits-for-the-tezos-foundation/) +(invoicing 19600 EUR). + +And later in 2018 we started on what is now called NetHSM with an initial +design workshop (5000 EUR). + +And lastly, we started to work on [TLS 1.3](https://datatracker.ietf.org/doc/html/rfc8446) +funded by Jane Street via OCaml Labs Consulting. In 2018, we received 12741.71 EUR + +We applied at NLNet for improving the QubesOS firewall developed in MirageOS +(without success), tried to get the IT security prize in Germany (without +success), and to DIAL OSC (without success). + +| Project | Amount | +|-----------------|----------:| +| Donation | 54194.91 | +| Prototypefund | 48500.00 | +| Least Authority | 19600.00 | +| TLS 1.3 | 12741.71 | +| Nitrokey | 5000.00 | +|-----------------|-----------| +| Total | 140036.62 | + + +## 2019 + +We were keen to finish the CalDAV implementation (and start a CardDAV +implementation), and received some financial support from Tarides for it +(15000 EUR). + +The TLS 1.3 work continued, we got in total 68887.53 EUR. + +We also applied to (and got funding from) Prototypefund, once with an [OpenVPN-compatible +MirageOS unikernel](https://prototypefund.de/en/project/robust-openvpn-client-with-low-use-of-resources/), +and once with [improving the QubesOS firewall developed as MirageOS unikernel](https://prototypefund.de/project/portable-firewall-fuer-qubesos/). +This means again twice 48500 EUR. + +We also started the implementation work of NetHSM - which still included a lot +of design work - in total the contract was over 82500 EUR. In 2019, we invoiced +Nitrokey in 2019 in total 40500 EUR. + +We also received a total of 516.48 EUR as donations from source unknown to us. + +We also applied to NLnet with [DNSvizor](https://nlnet.nl/project/Robur/), and +got a grant, but due to buerocratic reasons they couldn't transfer the money to +our non-profit, and we didn't get any money in the end. + +| Project | Amount | +|----------|----------:| +| CardDAV | 15000.00 | +| TLS 1.3 | 68887.53 | +| OpenVPN | 48500.00 | +| QubesOS | 48500.00 | +| Donation | 516.48 | +| Nitrokey | 40500.00 | +|----------|-----------| +| Total | 221904.01 | + +## 2020 + +In 2020, we agreed with OCaml Labs Consulting to work on maintenance of OCaml +packages in the MirageOS ecosystem. This was a contract where at the end of the +month, we reported on which PRs and issues we spent how much time. For us, this +was great to have the freedom to work on which OCaml packages we were keen to +get up to speed. In 2020, we received 45000 EUR for this maintenance. + +We finished the TLS 1.3 work (18659.01 EUR) + +We continued to work on the NetHSM project, and invoiced 55500 EUR. + +We received a total of 255 EUR in donations from sources unknown to us. + +We applied at reset.tech again with DNSvizor, unfortunately without success. + +We also applied at [NGI pointer](https://pointer.ngi.eu) to work on reproducible +builds for MirageOS, and a web frontend. Here we got the grant of 200000 EUR, +which we worked on in 2021 and 2022. + +| Project | Amount | +|-----------|----------:| +| OCLC | 45000.00 | +| TLS 1.3 | 18659.01 | +| Nitrokey | 55500.00 | +| Donations | 255.00 | +|-----------|-----------| +| Total | 119414.01 | + +## 2021 + +As outlined, we worked on reproducible builds of unikernels - rethinking the way +how a unikernel is configured: no more compiled-in secrets, but instead using +boot parameters. We setup the infrastructure for doing daily reproducible +builds, serving system packages via a package repository, and a +[web frontend](https://builds.robur.coop) hosting the reproducible builds. +We received in total 120000 EUR from NGI Pointer in 2021. + +Our work on NetHSM continued, including the introduction of elliptic curves +in mirage-crypto (using [fiat](https://github.com/mit-plv/fiat-crypto/)). The +invoices to Nitrokey summed up to 26000 EUR in 2021. + +We developed in a short timeframe two packages, [u2f](https://github.com/robur-coop/u2f) +and later [webauthn](https://git.robur.coop/robur/webauthn) for Skolem Labs based +on [gift economy](https://en.wikipedia.org/wiki/Gift_economy). This resulted in +donations of 18976 EUR. + +We agreed with [OCSF](https://ocaml-sf.org/) to work on +[conex](https://github.com/hannesm/conex), which we have not delivered yet +(lots of other things had to be cleared first: we did a security review of opam +(leading to [a security advisory](https://opam.ocaml.org/blog/opam-2-1-5-local-cache/)), +we got rid of [`extra-files`](https://discuss.ocaml.org/t/ann-opam-repository-policy-change-checksums-no-md5-and-no-extra-files) +in the opam-repository, and we [removed the weak hash md5](https://discuss.ocaml.org/t/ann-opam-repository-policy-change-checksums-no-md5-and-no-extra-files) +from the opam-repository. + +| Customer | Amount | +|-------------|----------:| +| NGI Pointer | 120000.00 | +| Nitrokey | 26000.00 | +| Skolem | 18976.00 | +|-------------|-----------| +| Total | 164976.00 | + +## 2022 + +We finished our NGI pointer project, and received another 80000 EUR. + +We also did some minor maintenance for Nitrokey, and invoiced 4500 EUR. + +For Tarides, we started another maintaining MirageOS packages (and continuing +[our TCP/IP stack](https://github.com/robur-coop/utcp)), and invoiced in +total 22500 EUR. + +A grant application for [bob](https://github.com/dinosaure/bob/) was rejected, +but a grant application for [MirageVPN](https://github.com/robur-coop/miragevpn) +got accepted. + +| Project | Amount | +|-------------|---------:| +| NGI Pointer | 80000.00 | +| Nitrokey | 4500.00 | +| Tarides | 22500.00 | +|-------------|----------| +| Total |107000.00 | + +## 2023 + +We finished the NetHSM project, and had a final invoice over 2500 EUR. + +We started a collaboration for [semgrep](https://semgrep.dev), porting some of +their Python code to OCaml. We received in total 37500 EUR. + +We continued the MirageOS opam package maintenance and invoiced in total +89250 EUR to Tarides. + +A grant application on [MirageVPN](https://nlnet.nl/project/MirageVPN/) got +accepted (NGI Assure), and we received in total 12000 EUR for our work on it. +This is a continuation of our 2019 work funded by Prototypefund. + +We also wrote various funding applications, including one for +[DNSvizor](https://github.com/robur-coop/dnsvizor) that was +[accepted](https://nlnet.nl/project/DNSvizor/) (NGI0 Entrust). + +| Customer | Amount | +|-----------|---------:| +| Nitrokey | 2500.00 | +| semgrep | 37500.00 | +| Tarides | 89250.00 | +| MirageVPN | 12000.00 | +|-----------|----------| +| Total |141250.00 | + +## 2024 + +We're still in the middle of it, but so far we continued the Tarides maintenance +contract (54937.50 EUR). + +We also finished the MirageVPN work, and received another 45000 EUR. + +We had a small contract with Semgrep and received 18559.40 EUR. + +We again worked on several successful funding applications, one on +[PTT](https://nlnet.nl/project/PTT/) (NGI Zero Core), a continuation of the +[NGI DAPSI](https://www.ngi.eu/funded_solution/ngi-dapsiproject-24/) project - +now realizing mailing lists with our SMTP stack. + +We also got [MTE](https://nlnet.nl/project/MTE/) (NGI Taler) accepted. + +The below table is until end of August 2024. + +| Project | Amount | +|-----------|----------:| +| Semgrep | 18559.40 | +| Tarides | 54937.50 | +| MirageVPN | 45000.00 | +|-----------|-----------| +| Total | 118496.90 | + +## Total + +In a single table, here's our income over the last 5 years. + +| Year | Amount | +|-------|-----------:| +| 2018 | 140036.62 | +| 2019 | 221904.01 | +| 2020 | 119414.01 | +| 2021 | 164976.00 | +| 2022 | 107000.00 | +| 2023 | 141250.00 | +| 2024 | 118496.90 | +|-------|------------| +| Total | 1013077.50 | + +As you can spot, it varies quite a bit. In some years we have fewer money +available than in other years. + +## Conclusion + +We have provided an overview of our income, we were three to five people working +at robur over the entire time. As written at the beginning, we use needs-based +payment. Our experience with this is great! It provides a lot of trust into each +other. + +We are always happy to discuss how our collective operates. If you're +interested, please drop us a message. + +Of course, if we receive donations, we use them wisely - mainly for working on +the currently not funded projects (bob, miou, mollymawk - to name a few). If you +can spare a dime or two, don't hesitate to [donate](https://robur.coop/Donate). From 62c58c5c30851eea4feb9e2a03ca5e31e59e0608 Mon Sep 17 00:00:00 2001 From: Hannes Mehnert Date: Sat, 19 Oct 2024 13:14:24 +0200 Subject: [PATCH 02/10] edits --- articles/finances.md | 155 ++++++++++++++++++++++--------------------- 1 file changed, 79 insertions(+), 76 deletions(-) diff --git a/articles/finances.md b/articles/finances.md index 722cdda..d54cc90 100644 --- a/articles/finances.md +++ b/articles/finances.md @@ -38,26 +38,26 @@ agreeing to all the numbers. ## 2018 We started operations in 2018. In late 2017, we got donations (in the form of -bitcoins) by friends who were convinced of our mission. This was 54194.91 EUR. +bitcoins) by friends who were convinced of our mission. This was 54,194.91 EUR. So, in 2018 we started with that money, and tried to find a mission, and generate income to sustain our salaries. Also, already in 2017, we applied for funding from [Prototypefund](https://prototypefund.de) on a [CalDAV server](https://prototypefund.de/project/robur-io/), -and we received the grant in early 2018. This was another 48500 EUR, paid to +and we received the grant in early 2018. This was another 48,500 EUR, paid to individuals (due to reasons, Prototype fund can't cash out to the non-profit - this put us into some struggle, since we needed some double bookkeeping and individuals had to dig into health care etc.). We also did in the second half of 2018 a security audit for [Least Authority](https://leastauthority.com/blog/audits/five-security-audits-for-the-tezos-foundation/) -(invoicing 19600 EUR). +(invoicing 19,600 EUR). And later in 2018 we started on what is now called NetHSM with an initial -design workshop (5000 EUR). +design workshop (5,000 EUR). And lastly, we started to work on [TLS 1.3](https://datatracker.ietf.org/doc/html/rfc8446) -funded by Jane Street via OCaml Labs Consulting. In 2018, we received 12741.71 EUR +funded by Jane Street via OCaml Labs Consulting. In 2018, we received 12,741.71 EUR We applied at NLNet for improving the QubesOS firewall developed in MirageOS (without success), tried to get the IT security prize in Germany (without @@ -65,31 +65,30 @@ success), and to DIAL OSC (without success). | Project | Amount | |-----------------|----------:| -| Donation | 54194.91 | -| Prototypefund | 48500.00 | -| Least Authority | 19600.00 | -| TLS 1.3 | 12741.71 | -| Nitrokey | 5000.00 | -|-----------------|-----------| -| Total | 140036.62 | +| Donation | 54,194.91 | +| Prototypefund | 48,500.00 | +| Least Authority | 19,600.00 | +| TLS 1.3 | 12,741.71 | +| Nitrokey | 5,000.00 | +| __Total__ | __140,036.62__ | ## 2019 We were keen to finish the CalDAV implementation (and start a CardDAV implementation), and received some financial support from Tarides for it -(15000 EUR). +(15,000 EUR). -The TLS 1.3 work continued, we got in total 68887.53 EUR. +The TLS 1.3 work continued, we got in total 68,887.53 EUR. We also applied to (and got funding from) Prototypefund, once with an [OpenVPN-compatible MirageOS unikernel](https://prototypefund.de/en/project/robust-openvpn-client-with-low-use-of-resources/), and once with [improving the QubesOS firewall developed as MirageOS unikernel](https://prototypefund.de/project/portable-firewall-fuer-qubesos/). -This means again twice 48500 EUR. +This means again twice 48,500 EUR. We also started the implementation work of NetHSM - which still included a lot -of design work - in total the contract was over 82500 EUR. In 2019, we invoiced -Nitrokey in 2019 in total 40500 EUR. +of design work - in total the contract was over 82,500 EUR. In 2019, we invoiced +Nitrokey in 2019 in total 40,500 EUR. We also received a total of 516.48 EUR as donations from source unknown to us. @@ -99,14 +98,13 @@ our non-profit, and we didn't get any money in the end. | Project | Amount | |----------|----------:| -| CardDAV | 15000.00 | -| TLS 1.3 | 68887.53 | -| OpenVPN | 48500.00 | -| QubesOS | 48500.00 | +| CardDAV | 15,000.00 | +| TLS 1.3 | 68,887.53 | +| OpenVPN | 48,500.00 | +| QubesOS | 48,500.00 | | Donation | 516.48 | -| Nitrokey | 40500.00 | -|----------|-----------| -| Total | 221904.01 | +| Nitrokey | 40,500.00 | +| __Total__ | __221,904.01__ | ## 2020 @@ -114,28 +112,27 @@ In 2020, we agreed with OCaml Labs Consulting to work on maintenance of OCaml packages in the MirageOS ecosystem. This was a contract where at the end of the month, we reported on which PRs and issues we spent how much time. For us, this was great to have the freedom to work on which OCaml packages we were keen to -get up to speed. In 2020, we received 45000 EUR for this maintenance. +get up to speed. In 2020, we received 45,000 EUR for this maintenance. We finished the TLS 1.3 work (18659.01 EUR) -We continued to work on the NetHSM project, and invoiced 55500 EUR. +We continued to work on the NetHSM project, and invoiced 55,500 EUR. We received a total of 255 EUR in donations from sources unknown to us. We applied at reset.tech again with DNSvizor, unfortunately without success. We also applied at [NGI pointer](https://pointer.ngi.eu) to work on reproducible -builds for MirageOS, and a web frontend. Here we got the grant of 200000 EUR, +builds for MirageOS, and a web frontend. Here we got the grant of 200,000 EUR, which we worked on in 2021 and 2022. | Project | Amount | |-----------|----------:| -| OCLC | 45000.00 | -| TLS 1.3 | 18659.01 | -| Nitrokey | 55500.00 | +| OCLC | 45,000.00 | +| TLS 1.3 | 18,659.01 | +| Nitrokey | 55,500.00 | | Donations | 255.00 | -|-----------|-----------| -| Total | 119414.01 | +| __Total__ | __119,414.01__ | ## 2021 @@ -144,16 +141,16 @@ how a unikernel is configured: no more compiled-in secrets, but instead using boot parameters. We setup the infrastructure for doing daily reproducible builds, serving system packages via a package repository, and a [web frontend](https://builds.robur.coop) hosting the reproducible builds. -We received in total 120000 EUR from NGI Pointer in 2021. +We received in total 120,000 EUR from NGI Pointer in 2021. Our work on NetHSM continued, including the introduction of elliptic curves in mirage-crypto (using [fiat](https://github.com/mit-plv/fiat-crypto/)). The -invoices to Nitrokey summed up to 26000 EUR in 2021. +invoices to Nitrokey summed up to 26,000 EUR in 2021. We developed in a short timeframe two packages, [u2f](https://github.com/robur-coop/u2f) and later [webauthn](https://git.robur.coop/robur/webauthn) for Skolem Labs based on [gift economy](https://en.wikipedia.org/wiki/Gift_economy). This resulted in -donations of 18976 EUR. +donations of 18,976 EUR. We agreed with [OCSF](https://ocaml-sf.org/) to work on [conex](https://github.com/hannesm/conex), which we have not delivered yet @@ -165,21 +162,20 @@ from the opam-repository. | Customer | Amount | |-------------|----------:| -| NGI Pointer | 120000.00 | -| Nitrokey | 26000.00 | -| Skolem | 18976.00 | -|-------------|-----------| -| Total | 164976.00 | +| NGI Pointer | 120,000.00 | +| Nitrokey | 26,000.00 | +| Skolem | 18,976.00 | +| __Total__ | __164,976.00__ | ## 2022 -We finished our NGI pointer project, and received another 80000 EUR. +We finished our NGI pointer project, and received another 80,000 EUR. -We also did some minor maintenance for Nitrokey, and invoiced 4500 EUR. +We also did some minor maintenance for Nitrokey, and invoiced 4,500 EUR. For Tarides, we started another maintaining MirageOS packages (and continuing [our TCP/IP stack](https://github.com/robur-coop/utcp)), and invoiced in -total 22500 EUR. +total 22,500 EUR. A grant application for [bob](https://github.com/dinosaure/bob/) was rejected, but a grant application for [MirageVPN](https://github.com/robur-coop/miragevpn) @@ -187,24 +183,23 @@ got accepted. | Project | Amount | |-------------|---------:| -| NGI Pointer | 80000.00 | -| Nitrokey | 4500.00 | -| Tarides | 22500.00 | -|-------------|----------| -| Total |107000.00 | +| NGI Pointer | 80,000.00 | +| Nitrokey | 4,500.00 | +| Tarides | 22,500.00 | +| __Total__ | __107,000.00__ | ## 2023 -We finished the NetHSM project, and had a final invoice over 2500 EUR. +We finished the NetHSM project, and had a final invoice over 2,500 EUR. We started a collaboration for [semgrep](https://semgrep.dev), porting some of -their Python code to OCaml. We received in total 37500 EUR. +their Python code to OCaml. We received in total 37,500 EUR. We continued the MirageOS opam package maintenance and invoiced in total -89250 EUR to Tarides. +89,250 EUR to Tarides. A grant application on [MirageVPN](https://nlnet.nl/project/MirageVPN/) got -accepted (NGI Assure), and we received in total 12000 EUR for our work on it. +accepted (NGI Assure), and we received in total 12,000 EUR for our work on it. This is a continuation of our 2019 work funded by Prototypefund. We also wrote various funding applications, including one for @@ -213,21 +208,20 @@ We also wrote various funding applications, including one for | Customer | Amount | |-----------|---------:| -| Nitrokey | 2500.00 | -| semgrep | 37500.00 | -| Tarides | 89250.00 | -| MirageVPN | 12000.00 | -|-----------|----------| -| Total |141250.00 | +| Nitrokey | 2,500.00 | +| semgrep | 37,500.00 | +| Tarides | 89,250.00 | +| MirageVPN | 12,000.00 | +| __Total__ | __141,250.00__ | ## 2024 We're still in the middle of it, but so far we continued the Tarides maintenance -contract (54937.50 EUR). +contract (54,937.50 EUR). -We also finished the MirageVPN work, and received another 45000 EUR. +We also finished the MirageVPN work, and received another 45,000 EUR. -We had a small contract with Semgrep and received 18559.40 EUR. +We had a small contract with Semgrep again on porting Python code to OCaml and received 18,559.40 EUR. We again worked on several successful funding applications, one on [PTT](https://nlnet.nl/project/PTT/) (NGI Zero Core), a continuation of the @@ -240,11 +234,10 @@ The below table is until end of August 2024. | Project | Amount | |-----------|----------:| -| Semgrep | 18559.40 | -| Tarides | 54937.50 | -| MirageVPN | 45000.00 | -|-----------|-----------| -| Total | 118496.90 | +| Semgrep | 18,559.40 | +| Tarides | 54,937.50 | +| MirageVPN | 45,000.00 | +| __Total__ | __118,496.90__ | ## Total @@ -252,15 +245,14 @@ In a single table, here's our income over the last 5 years. | Year | Amount | |-------|-----------:| -| 2018 | 140036.62 | -| 2019 | 221904.01 | -| 2020 | 119414.01 | -| 2021 | 164976.00 | -| 2022 | 107000.00 | -| 2023 | 141250.00 | -| 2024 | 118496.90 | -|-------|------------| -| Total | 1013077.50 | +| 2018 | 140,036.62 | +| 2019 | 221,904.01 | +| 2020 | 119,414.01 | +| 2021 | 164,976.00 | +| 2022 | 107,000.00 | +| 2023 | 141,250.00 | +| 2024 | 118,496.90 | +| __Total__ | __1,013,077.54__ | As you can spot, it varies quite a bit. In some years we have fewer money available than in other years. @@ -270,7 +262,18 @@ available than in other years. We have provided an overview of our income, we were three to five people working at robur over the entire time. As written at the beginning, we use needs-based payment. Our experience with this is great! It provides a lot of trust into each -other. +other. From our income, some money flows to Aenderwerk for their amazing +bookkeeping work - writing invoices, doing the taxes, helping us with contracts. +We also finance our server, including a severe hard disk failure in June 2024. + +Our funding is diverse from multiple sources - donations, commercial work, +public funding. This was our initial goal, and we're very happy that it works fine +over the last five years. + +Taking the numbers into account, we are not paying ourselves "industry standard" +rates - but we really love what we do - and sometimes we just take some time off. +We do work on various projects that we really really enjoy - but where (at the +moment) no funding is available for. We are always happy to discuss how our collective operates. If you're interested, please drop us a message. From 86dbd5df8c3d0b379223fcf98197d44db135cdc5 Mon Sep 17 00:00:00 2001 From: Hannes Mehnert Date: Sat, 19 Oct 2024 13:35:32 +0200 Subject: [PATCH 03/10] minor updates (include september money for 2024), add expenses section --- articles/finances.md | 55 +++++++++++++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 19 deletions(-) diff --git a/articles/finances.md b/articles/finances.md index d54cc90..7d69483 100644 --- a/articles/finances.md +++ b/articles/finances.md @@ -1,5 +1,5 @@ --- -date: 2024-08-26 +date: 2024-10-21 article.title: What has robur been doing and how since 2018? article.description: tags: @@ -26,8 +26,9 @@ hierarchy-free environment, including the payment, and work on software in a niche market - we decided from the early days that bookeeping and invoicing should not be part of our collective. Especially since we want to be free in what kind of funding we accept - donations, commercial contracts, public -funding. In the books, robur is part of a non-profit company in Germany - and -friends of ours run that company. They get a cut on each income we generate. +funding. In the books, robur is part of the non-profit company +[Änderwerk](https://aenderwerk.de) in Germany - and friends of ours run that +company. They get a cut on each income we generate. To be inclusive and enable everyone to participate in decisions, we are 100% transparent in our books - every collective member has access to the financial @@ -57,7 +58,7 @@ And later in 2018 we started on what is now called NetHSM with an initial design workshop (5,000 EUR). And lastly, we started to work on [TLS 1.3](https://datatracker.ietf.org/doc/html/rfc8446) -funded by Jane Street via OCaml Labs Consulting. In 2018, we received 12,741.71 EUR +funded by Jane Street (via OCaml Labs Consulting). In 2018, we received 12,741.71 EUR We applied at NLNet for improving the QubesOS firewall developed in MirageOS (without success), tried to get the IT security prize in Germany (without @@ -94,7 +95,8 @@ We also received a total of 516.48 EUR as donations from source unknown to us. We also applied to NLnet with [DNSvizor](https://nlnet.nl/project/Robur/), and got a grant, but due to buerocratic reasons they couldn't transfer the money to -our non-profit, and we didn't get any money in the end. +our non-profit (which was involved with NLnet in some EU grants), and we didn't +get any money in the end. | Project | Amount | |----------|----------:| @@ -114,7 +116,7 @@ month, we reported on which PRs and issues we spent how much time. For us, this was great to have the freedom to work on which OCaml packages we were keen to get up to speed. In 2020, we received 45,000 EUR for this maintenance. -We finished the TLS 1.3 work (18659.01 EUR) +We finished the TLS 1.3 work (18,659.01 EUR) We continued to work on the NetHSM project, and invoiced 55,500 EUR. @@ -179,7 +181,7 @@ total 22,500 EUR. A grant application for [bob](https://github.com/dinosaure/bob/) was rejected, but a grant application for [MirageVPN](https://github.com/robur-coop/miragevpn) -got accepted. +got accepted. Both at NLnet within the EU NGI project. | Project | Amount | |-------------|---------:| @@ -221,7 +223,7 @@ contract (54,937.50 EUR). We also finished the MirageVPN work, and received another 45,000 EUR. -We had a small contract with Semgrep again on porting Python code to OCaml and received 18,559.40 EUR. +We had a contract with Semgrep again on porting Python code to OCaml and received 18,559.40 EUR. We again worked on several successful funding applications, one on [PTT](https://nlnet.nl/project/PTT/) (NGI Zero Core), a continuation of the @@ -230,14 +232,14 @@ now realizing mailing lists with our SMTP stack. We also got [MTE](https://nlnet.nl/project/MTE/) (NGI Taler) accepted. -The below table is until end of August 2024. +The below table is until end of September 2024. | Project | Amount | |-----------|----------:| | Semgrep | 18,559.40 | -| Tarides | 54,937.50 | +| Tarides | 62,812.50 | | MirageVPN | 45,000.00 | -| __Total__ | __118,496.90__ | +| __Total__ | __126,371.90__ | ## Total @@ -251,24 +253,33 @@ In a single table, here's our income over the last 5 years. | 2021 | 164,976.00 | | 2022 | 107,000.00 | | 2023 | 141,250.00 | -| 2024 | 118,496.90 | -| __Total__ | __1,013,077.54__ | +| 2024 | 126,371.90 | +| __Total__ | __1,020,952.54__ | As you can spot, it varies quite a bit. In some years we have fewer money available than in other years. +## Expenses + +As mentioned, the non-profit company [Änderwerk](https://aenderwerk.de) running +the bookkeeping and legal stuff (invoices, tax statements, contracts, etc.) gets +a cut on each income we produce. They are doing amazing work and are very +quick responding to our queries. + +We spend most of our income on salary. Some money we spend on travel. We also +pay monthly for our server (plus some extra for hardware, and in June 2024 a +huge amount for trying to recover data from failed SSDs). + ## Conclusion We have provided an overview of our income, we were three to five people working at robur over the entire time. As written at the beginning, we use needs-based payment. Our experience with this is great! It provides a lot of trust into each -other. From our income, some money flows to Aenderwerk for their amazing -bookkeeping work - writing invoices, doing the taxes, helping us with contracts. -We also finance our server, including a severe hard disk failure in June 2024. +other. Our funding is diverse from multiple sources - donations, commercial work, -public funding. This was our initial goal, and we're very happy that it works fine -over the last five years. +public funding. This was our initial goal, and we're very happy that it works +fine over the last five years. Taking the numbers into account, we are not paying ourselves "industry standard" rates - but we really love what we do - and sometimes we just take some time off. @@ -279,5 +290,11 @@ We are always happy to discuss how our collective operates. If you're interested, please drop us a message. Of course, if we receive donations, we use them wisely - mainly for working on -the currently not funded projects (bob, miou, mollymawk - to name a few). If you +the currently not funded projects (bob, albatross, miou, mollymawk - to name a few). If you can spare a dime or two, don't hesitate to [donate](https://robur.coop/Donate). +Donations are tax-deductable in Germany (and should be in Europe) since we're a +registered non-profit. + +If you're interested in MirageOS and using it in your domain, don't hesitate +to reach out to us (via eMail: team@robur.coop) so we can start to chat - we're keen to deploy MirageOS +and find more domains where it is useful. From 4076bdff9ee14f2cd76dd32f403be85b662b95c0 Mon Sep 17 00:00:00 2001 From: Hannes Mehnert Date: Sat, 19 Oct 2024 13:48:29 +0200 Subject: [PATCH 04/10] =?UTF-8?q?use=20=E2=82=AC=20instead=20of=20EUR,=20a?= =?UTF-8?q?dd=20a=20plot?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- articles/finances.md | 60 ++++++++++++++++++++++--------------------- images/finances.png | Bin 0 -> 6488 bytes 2 files changed, 31 insertions(+), 29 deletions(-) create mode 100644 images/finances.png diff --git a/articles/finances.md b/articles/finances.md index 7d69483..b3b0ae7 100644 --- a/articles/finances.md +++ b/articles/finances.md @@ -39,26 +39,26 @@ agreeing to all the numbers. ## 2018 We started operations in 2018. In late 2017, we got donations (in the form of -bitcoins) by friends who were convinced of our mission. This was 54,194.91 EUR. +bitcoins) by friends who were convinced of our mission. This was 54,194.91 €. So, in 2018 we started with that money, and tried to find a mission, and generate income to sustain our salaries. Also, already in 2017, we applied for funding from [Prototypefund](https://prototypefund.de) on a [CalDAV server](https://prototypefund.de/project/robur-io/), -and we received the grant in early 2018. This was another 48,500 EUR, paid to +and we received the grant in early 2018. This was another 48,500 €, paid to individuals (due to reasons, Prototype fund can't cash out to the non-profit - this put us into some struggle, since we needed some double bookkeeping and individuals had to dig into health care etc.). We also did in the second half of 2018 a security audit for [Least Authority](https://leastauthority.com/blog/audits/five-security-audits-for-the-tezos-foundation/) -(invoicing 19,600 EUR). +(invoicing 19,600 €). And later in 2018 we started on what is now called NetHSM with an initial -design workshop (5,000 EUR). +design workshop (5,000 €). And lastly, we started to work on [TLS 1.3](https://datatracker.ietf.org/doc/html/rfc8446) -funded by Jane Street (via OCaml Labs Consulting). In 2018, we received 12,741.71 EUR +funded by Jane Street (via OCaml Labs Consulting). In 2018, we received 12,741.71 € We applied at NLNet for improving the QubesOS firewall developed in MirageOS (without success), tried to get the IT security prize in Germany (without @@ -78,20 +78,20 @@ success), and to DIAL OSC (without success). We were keen to finish the CalDAV implementation (and start a CardDAV implementation), and received some financial support from Tarides for it -(15,000 EUR). +(15,000 €). -The TLS 1.3 work continued, we got in total 68,887.53 EUR. +The TLS 1.3 work continued, we got in total 68,887.53 €. We also applied to (and got funding from) Prototypefund, once with an [OpenVPN-compatible MirageOS unikernel](https://prototypefund.de/en/project/robust-openvpn-client-with-low-use-of-resources/), and once with [improving the QubesOS firewall developed as MirageOS unikernel](https://prototypefund.de/project/portable-firewall-fuer-qubesos/). -This means again twice 48,500 EUR. +This means again twice 48,500 €. We also started the implementation work of NetHSM - which still included a lot -of design work - in total the contract was over 82,500 EUR. In 2019, we invoiced -Nitrokey in 2019 in total 40,500 EUR. +of design work - in total the contract was over 82,500 €. In 2019, we invoiced +Nitrokey in 2019 in total 40,500 €. -We also received a total of 516.48 EUR as donations from source unknown to us. +We also received a total of 516.48 € as donations from source unknown to us. We also applied to NLnet with [DNSvizor](https://nlnet.nl/project/Robur/), and got a grant, but due to buerocratic reasons they couldn't transfer the money to @@ -114,18 +114,18 @@ In 2020, we agreed with OCaml Labs Consulting to work on maintenance of OCaml packages in the MirageOS ecosystem. This was a contract where at the end of the month, we reported on which PRs and issues we spent how much time. For us, this was great to have the freedom to work on which OCaml packages we were keen to -get up to speed. In 2020, we received 45,000 EUR for this maintenance. +get up to speed. In 2020, we received 45,000 € for this maintenance. -We finished the TLS 1.3 work (18,659.01 EUR) +We finished the TLS 1.3 work (18,659.01 €) -We continued to work on the NetHSM project, and invoiced 55,500 EUR. +We continued to work on the NetHSM project, and invoiced 55,500 €. -We received a total of 255 EUR in donations from sources unknown to us. +We received a total of 255 € in donations from sources unknown to us. We applied at reset.tech again with DNSvizor, unfortunately without success. We also applied at [NGI pointer](https://pointer.ngi.eu) to work on reproducible -builds for MirageOS, and a web frontend. Here we got the grant of 200,000 EUR, +builds for MirageOS, and a web frontend. Here we got the grant of 200,000 €, which we worked on in 2021 and 2022. | Project | Amount | @@ -143,16 +143,16 @@ how a unikernel is configured: no more compiled-in secrets, but instead using boot parameters. We setup the infrastructure for doing daily reproducible builds, serving system packages via a package repository, and a [web frontend](https://builds.robur.coop) hosting the reproducible builds. -We received in total 120,000 EUR from NGI Pointer in 2021. +We received in total 120,000 € from NGI Pointer in 2021. Our work on NetHSM continued, including the introduction of elliptic curves in mirage-crypto (using [fiat](https://github.com/mit-plv/fiat-crypto/)). The -invoices to Nitrokey summed up to 26,000 EUR in 2021. +invoices to Nitrokey summed up to 26,000 € in 2021. We developed in a short timeframe two packages, [u2f](https://github.com/robur-coop/u2f) and later [webauthn](https://git.robur.coop/robur/webauthn) for Skolem Labs based on [gift economy](https://en.wikipedia.org/wiki/Gift_economy). This resulted in -donations of 18,976 EUR. +donations of 18,976 €. We agreed with [OCSF](https://ocaml-sf.org/) to work on [conex](https://github.com/hannesm/conex), which we have not delivered yet @@ -171,13 +171,13 @@ from the opam-repository. ## 2022 -We finished our NGI pointer project, and received another 80,000 EUR. +We finished our NGI pointer project, and received another 80,000 €. -We also did some minor maintenance for Nitrokey, and invoiced 4,500 EUR. +We also did some minor maintenance for Nitrokey, and invoiced 4,500 €. For Tarides, we started another maintaining MirageOS packages (and continuing [our TCP/IP stack](https://github.com/robur-coop/utcp)), and invoiced in -total 22,500 EUR. +total 22,500 €. A grant application for [bob](https://github.com/dinosaure/bob/) was rejected, but a grant application for [MirageVPN](https://github.com/robur-coop/miragevpn) @@ -192,16 +192,16 @@ got accepted. Both at NLnet within the EU NGI project. ## 2023 -We finished the NetHSM project, and had a final invoice over 2,500 EUR. +We finished the NetHSM project, and had a final invoice over 2,500 €. We started a collaboration for [semgrep](https://semgrep.dev), porting some of -their Python code to OCaml. We received in total 37,500 EUR. +their Python code to OCaml. We received in total 37,500 €. We continued the MirageOS opam package maintenance and invoiced in total -89,250 EUR to Tarides. +89,250 € to Tarides. A grant application on [MirageVPN](https://nlnet.nl/project/MirageVPN/) got -accepted (NGI Assure), and we received in total 12,000 EUR for our work on it. +accepted (NGI Assure), and we received in total 12,000 € for our work on it. This is a continuation of our 2019 work funded by Prototypefund. We also wrote various funding applications, including one for @@ -219,11 +219,11 @@ We also wrote various funding applications, including one for ## 2024 We're still in the middle of it, but so far we continued the Tarides maintenance -contract (54,937.50 EUR). +contract (54,937.50 €). -We also finished the MirageVPN work, and received another 45,000 EUR. +We also finished the MirageVPN work, and received another 45,000 €. -We had a contract with Semgrep again on porting Python code to OCaml and received 18,559.40 EUR. +We had a contract with Semgrep again on porting Python code to OCaml and received 18,559.40 €. We again worked on several successful funding applications, one on [PTT](https://nlnet.nl/project/PTT/) (NGI Zero Core), a continuation of the @@ -256,6 +256,8 @@ In a single table, here's our income over the last 5 years. | 2024 | 126,371.90 | | __Total__ | __1,020,952.54__ | +![Plot of above income table](../images/finances.png) + As you can spot, it varies quite a bit. In some years we have fewer money available than in other years. diff --git a/images/finances.png b/images/finances.png new file mode 100644 index 0000000000000000000000000000000000000000..698f79984fcb93c2d9ba15832587ecd13a6d9023 GIT binary patch literal 6488 zcmdT|XH-+mw@(EEQq&+2T0pLJ5Cua~30|5C7z9P6MNtFZ=D51l7CwSlbzqQ_{_wlWDGC6zC?AgEBWzL?7B$*lUa^tvRFc|Mi zWBs!*7y^L7;0!J##6j>Y^+3cSl8L1O2!arYMx(L+=r9-n(qSNMex6Q*efR*=a~T2Y zco;yW1K>e25DkM70T>8?RIuxXf&wH;WVAtYI2`Wq;lrk;rcO>yR4Vo9)2C%+Wpp~d zrKM$TYz$JtJai~-KCYl|oOzDP0Kxg85U`@5Xnr2-g+bb2SD=#6`224JxO5qbcCOb5syz{XDmY0yIkX*WSS9fZ~c(!W%uFhM4*;!6YA z@P%F+01{~+zOJs$!NH-vzFtyNQdd_uH8pj3cvxg#pgOc>%uQo!Zy1cPiT#5=Qsfhb z!Gu~)>g!ojp3f!o+{(ja4SdDE%KjiWter_4EjpkU;Xh`(I9qxC^zVzBi}Pcu3I=*y zQlSDT{&!>ScsjP=Ns&hP!f?^E(&F*1h%C*vJ0;heWn4=t<`0f_(BptCm+0#4E%2G8 z>B<<9KaKRWuJ6*94kfFDX%}t0z33g{8#-1gVu{&Tux+cXv)vD47TDL{l@L(EZIWZ&{182||I^I>&5ZK2t3dda-!1s??54Q)oEJT(WFXLB+x4 z<+<)QhtArzBKdHk@bYi{knnv~S% zZfsi&)qJ2i_5B+4U5w~JwOIBW!P%+@RyCN_#f^m@tq8MZ5+p=u2;z6U%G;-N_AYvM zxwGGsSF^74LPmMYcK9vr_TS2k9^B38P=wP*3W=<{(%?_1*?&NZT<<#zUOw-&KIY<3 zTp*;YybRY3qN;7z1JRBS^GK(Ucyj&cg;>Mk`yo0-7kl0E;h*RI3Urf_37@u|dnARd zhE{qm46jX_Gba|n*m?m-gHglNL&;&*DPGUMBG+4oT6&I?uQ^wWeiPShEo#|XnqY-F zJZ(jukNyo@uh+c?sxk&Kt;ju?{tO9Ep}2^fK34Zr(R)SmwSHOE;KKeBa<*>+u;8l3lZX-56oq1$6elFauw#lR1QaK3&nw4K7-GcX&tYjdf2A223U%L@tG|`vu=gkn!Y%-;&qal4(QCqu{v&zHtx#l$!1k4i0|^bts7;rUYNl0Pc>V> z3W_tP(3(9t8dgiydMSv6{m=cM&zLh<;hcEVPP@0K>3B42j=RR2KEuyXJdht5uy1Dc zQvS=}UP%eSsv zPMz%k9W{2HMA;gFe+boxZ@v5|047zl&4gWfoAlvYiHbzCKknbolGe*xRN)zy{{iR^ ztp7Ky%(U(qoEo9c`(6A1o`~=Ksd37d5(Wl^gV$FSYlBo6m4<>ITpW0U zVea<1wc$R3V>JmN)JZm*J(NC2y$*`9G+*nBJ4bL*?jXK%q^-X>DL*WHpuhtP8)Ht& z4+G?lJ0@EbjZurlMuI#(l9;*OEz{LTybdwZi$g@v*IsJM8*jBp z*`*9kZi*~JQr}hv&s&38!>sym7(VSS_|cfI zG2l$Q_3u0ZC|lncgsZGK++~NC5CiC%WB{K&+7WTt&uvkgQzGatUbGCUR49&P`oLZ| z^07Iwn?ywXMTI0>e+e9%6h?RLVh<2Fm=C?SAW@mYNo>u02oH=QT<|vv8h9B}mk9*WcMtZE6+>fU zul(40U4O?r^(F*~etZ9Z1|?wRStRxZxy$MHYoOgtU>B^_9&0jN(IkPX+X@__f2>A*CbQ3f%lt8xG%gLI&u%{YcW zI=`FOk^@r4R&pBNdO;uQtM{)GbGikeInnN@8D!~bQEo~Ho;#Zx(th*|#E9C!Q2Hgg zvoUN231UPJVC2aBXiF3{+57=o=us?b_Ze&)he8O1kg%6zD9)W7Zp3YjWD%hVyN!|i ziw|viCj!XIUtc(9aU^gi_w{H~Q(Evv0fAzVSv<{Ux?=fv$-2DSkUC*JwmBZ=)lVWS z8@C9}M(NSFuaC*1?>mcOi16QkJ4rI_=z)i`7K9B+qPT3-NqAn?e8v0jNvnyAG*1~I zQyojfBp_~a?!W4?8I%I1DceD87`jE^B>d%_xM&pCHw>YmN22Q~T2%?6)F6+vqHl@*l@aE;b(Renu z0-wA2@BTi^hj-t_YZ(jx6%G&93#MO4zB8vQz5eo!YqX9;6g+ALnJnZD7bRF3OF}}9 z`==OCCm{*DnR~3{Xo!FF>NXc8UO`=epB)TRjC1KE;?dZBaU7#iVtf)u)tK$&=9>5h zrKTp^^TB}CsT1&aC?*W*fnMzs$Od+Toghwpub1T`!pod&h=k*-FDP%G9kK@Uc+-L} zRG^m#7klnfX$`+hf<8hKUh{2V+c48+xxUxFq|q3jYTATrGet=E0KFS}$TT;eNlBe4 zv|FCbwS!k-+=*JdZO(y{G24rxR;!h}@xkI)fm1CWc6N`l@~7t<9`eV%<-)gy{4X@xL`z`p zL}}7?;Of;osOWnl9y4uRzEY zo%F}p=Y4r8B~P9*u}=C}^tGJmxF2R2zJxqWFRP`%2j(Z!eTR8~8a zjcC9stPN*-e6IfbT_&;d}Wc+jY<=PD(W}iH;Myibxj% zU;Hrgy>E}mNdp#ah4H1=SEY@4&;gvP_#hD(gD1f1RjOUcWXd9s)L&TUojmE;Nvnpl z#^DNZ4W)m$6ZdhiHW-N9^3A)Xl^KEvx@j5~SnGO$FQ-k0c7H6$AgVTS`of-*GywW| zW|HV#NI@g9GuWTTW(T#A`;_ zSJK@|Y=imW-OA4KMC?HXcU6==UO8|w3{fa8VEplvrH%s1vMRCM?YN){&RUM4{c^v& zR^0hm4!DNO6^&~obrrFb`Y82Ax2Gvt3pa;tJ#kOe&?cb(;Olq|o)@%jrTbUbv+?H5 z_6sP|>wDb+QCVJ7AEfX!?{_j}oAs%X=%7z6xtJr{$VuC`t}6T6UQ?Rlo)=fkxs9DF z8c7l9e55jRILFfVY~Wsfw2$csT5NOLmPdUb{Gkf@nAI;AYhsaNh%xtM?Jq>N*Xl9kCs2a9ELJ6I~EONCa2gdnQ3l<&KRlzaJ@PslT#>s`>( zgPUrR=5)9gBSPa0+qWK4kWVm8*oS$6s^l5Z?*+|1x=9E65c1BLRYR_$ENC`6(u*WQr?u_15uj>uJ?fNc#)^R&G6dXJHDt$8T z1R35NCUjN+s(FE7u?ugXL?Sep?-|nEZ=njBDau`?Q2~T7*Bg?3(s8o?S#sSz@>j-W=Z0eaO!SfY*6E#qyUEVkZ7k8R?KNKWpsH*j`*#+?gTH zh=(#;#!RN7+4IG%CNmW+WF*FZk~grSP>GK>`T5r5is31E>)_t9A2)VTWSpjla-`I# zYOlBM(0l)pULM5~#N^KFvFr9D5!UxHmG=n!J@4h&D(D<)sdw#Dr57)p$Y|PuP3QQ8 zs`)mR;=Z%0zRTXbvySOJA*;7bRqQAwM}L_aNys$TN?~%1%wXBof8VGl!u}wU_(uaq zNPkNZpY`a%xwWfVxlex>b9Ik1@@-GAFxgH?U#s~4W#FTH9m zl1S~{mHaCq3M^q`iU1Iw_>aVJunmWrc>!Pdd&l^w+b+VfW4N&LQR3DENpVlZp;!!i z$gXu1w*E4);!U5q!z$$drsA^_#niVye%zm6n=xWEkLV0u*$W%yWiP<|r!xN67xtk` z;N7)I<~GI&s1sr1NT;BwO?W}XhSLs)AA+lxyC&Ss+w21w{(f((BoHxJtJwBlL_I92y59CGtuEpQAM!)JQ7u_CVPXnGU;{ZcSS?s9kjD_ z3s1`$!3InoXKpF`1Y-=KYW6v>Zc4}Auas7ym1j64Uk?tu3310&b2XnEf3%6;*XHZN z``~=#3m)}QWG3TWc20jtM&zrSy_ewck-Wn#=0xRlHeN~(lKi9<$=%N$O&qAodzzH1 ztc5+*sMGM>7JRk@Y)%57%kjRUXKs`>NF%j=mRbps%yA0nrk z=WaH#P0YEh`Qq~q(~BH#`RNanC%wF5T(S=Go3+5qBW;igIrPIF&9bGnaJIQ6Nb~`Y z523=9*!3Oyfc}RU?SJODWTE_i+_o$y?pWd&59PEL!l)!-Ao!I=Q z2VW4x>-row+v40A6yEVZr)Vdz!sG&zSPE?Bm57d))

R^6wA6-+{}8We4#8y^UXg z=2_j7C_k!cC1x#60;@|peF_SFJ0B+6@HW7HHgk0izxJ$SG*b(bs=~-HFGrMY{{5$N zfmfS-;$c4vxwti*yXE(F3h*(XPDGjAz_L6S>V?`^f#olvUAQ<`Tf7Zk5~9|tR?fgB z+j7RU2T{5-i!bJ_Vxe)@_REsn6X&B{MscBB?YBhFTl6-bgra7krW>!%rIUYZz)|wu zZuZS&oGi)rc5q|&;otKNpJTn74jsu7gEO1+zE{N>%qChAk|i9ndzWzjph3HBkS748 z)}~iVQA<+M#39q6o~=k+gV`I$`Ra?$*N%73tSBZVe|`FwPO@le?UA}mS9FvE%2kAl z{f3lwBouUuy7$aH4(q zm|&V2c$mj;eOO?&`|W~l zaz_MvU!6pW5yFSx^RQMw#piC%`q0G(?6&89-NkaubPt{O^}lR2=U22P`b437HA+Oa zO}j)?tg%M7wC2#vERN~-^6qcYF~+2;+p|eqnU6^vcJkOs`rO~#WpB64*C~n zq%NRzG)!IimB9sjtLFIGCEYUHm(gIty?$KD*;-i>ABnjC+%5j+ErLmv8lgp5m`ymb*B@ZvSz)3Ga7Ph`Ov zcjPT}U6OOK@ynHSKl*$6D)RgL`@;|k`dvS&TT?mJ3+f3iJ-(eJVgko^iZSp?HbvLy mgG=s@*3|v~UdVg>MfDijjH>1c=7BEzVJ8jD^b1drL;efh4iv@! literal 0 HcmV?d00001 From 73dd1a52c7c446108d44ef901bc01b7be26f0eaa Mon Sep 17 00:00:00 2001 From: Hannes Mehnert Date: Sat, 19 Oct 2024 14:17:29 +0200 Subject: [PATCH 05/10] ec string: fix typo --- articles/speeding-ec-string.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/speeding-ec-string.md b/articles/speeding-ec-string.md index 36a0252..b7d9d77 100644 --- a/articles/speeding-ec-string.md +++ b/articles/speeding-ec-string.md @@ -93,6 +93,6 @@ As a spoiler, for P-256 sign there's another improvement of around 4.5 with [Vir Remove all cstruct, everywhere, apart from in mirage-block-xen and mirage-net-xen ;). It was a fine decision in the early MirageOS days, but from a performance point of view, and for making our packages more broadly usable without many dependencies, it is time to remove cstruct. Earlier this year we already [removed cstruct from ocaml-tar](https://github.com/mirage/ocaml-tar/pull/137) for similar reasons. -Our MirageOS work is only partially funded, we cross-fund our work by commercial contracts and public (EU) funding. We are part of a non-profit company, you can make a (tax-deducable - at least in the EU) [donation](https://aenderwerk.de/donate/) (select "DONATION robur" in the dropdown menu). +Our MirageOS work is only partially funded, we cross-fund our work by commercial contracts and public (EU) funding. We are part of a non-profit company, you can make a (tax-deductable - at least in the EU) [donation](https://aenderwerk.de/donate/) (select "DONATION robur" in the dropdown menu). We're keen to get MirageOS deployed in production - if you would like to do that, don't hesitate to reach out to us via eMail team at robur.coop From 21abbd9f943674a22145b80e1aa48c3849f9d5ed Mon Sep 17 00:00:00 2001 From: Hannes Mehnert Date: Sat, 19 Oct 2024 22:34:44 +0200 Subject: [PATCH 06/10] use a better chart --- images/finances.png | Bin 6488 -> 6478 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/finances.png b/images/finances.png index 698f79984fcb93c2d9ba15832587ecd13a6d9023..9177644608ec9574e3a690df8560435b9136afee 100644 GIT binary patch literal 6478 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 G$o~RnW3gWV literal 6488 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

R^6wA6-+{}8We4#8y^UXg z=2_j7C_k!cC1x#60;@|peF_SFJ0B+6@HW7HHgk0izxJ$SG*b(bs=~-HFGrMY{{5$N zfmfS-;$c4vxwti*yXE(F3h*(XPDGjAz_L6S>V?`^f#olvUAQ<`Tf7Zk5~9|tR?fgB z+j7RU2T{5-i!bJ_Vxe)@_REsn6X&B{MscBB?YBhFTl6-bgra7krW>!%rIUYZz)|wu zZuZS&oGi)rc5q|&;otKNpJTn74jsu7gEO1+zE{N>%qChAk|i9ndzWzjph3HBkS748 z)}~iVQA<+M#39q6o~=k+gV`I$`Ra?$*N%73tSBZVe|`FwPO@le?UA}mS9FvE%2kAl z{f3lwBouUuy7$aH4(q zm|&V2c$mj;eOO?&`|W~l zaz_MvU!6pW5yFSx^RQMw#piC%`q0G(?6&89-NkaubPt{O^}lR2=U22P`b437HA+Oa zO}j)?tg%M7wC2#vERN~-^6qcYF~+2;+p|eqnU6^vcJkOs`rO~#WpB64*C~n zq%NRzG)!IimB9sjtLFIGCEYUHm(gIty?$KD*;-i>ABnjC+%5j+ErLmv8lgp5m`ymb*B@ZvSz)3Ga7Ph`Ov zcjPT}U6OOK@ynHSKl*$6D)RgL`@;|k`dvS&TT?mJ3+f3iJ-(eJVgko^iZSp?HbvLy mgG=s@*3|v~UdVg>MfDijjH>1c=7BEzVJ8jD^b1drL;efh4iv@! From a1dbffeb7fbe3a9ce621d48527a62cfc1e724721 Mon Sep 17 00:00:00 2001 From: Hannes Mehnert Date: Sat, 19 Oct 2024 22:36:07 +0200 Subject: [PATCH 07/10] minor: clarify that tls 1.3 was a grant --- articles/finances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/finances.md b/articles/finances.md index b3b0ae7..ea6714c 100644 --- a/articles/finances.md +++ b/articles/finances.md @@ -57,7 +57,7 @@ We also did in the second half of 2018 a security audit for And later in 2018 we started on what is now called NetHSM with an initial design workshop (5,000 €). -And lastly, we started to work on [TLS 1.3](https://datatracker.ietf.org/doc/html/rfc8446) +And lastly, we started to work on a grant to implement [TLS 1.3](https://datatracker.ietf.org/doc/html/rfc8446), funded by Jane Street (via OCaml Labs Consulting). In 2018, we received 12,741.71 € We applied at NLNet for improving the QubesOS firewall developed in MirageOS From e1618b8c2cf707bcb057b20b216a6cdf9888a655 Mon Sep 17 00:00:00 2001 From: Hannes Mehnert Date: Sat, 19 Oct 2024 22:37:27 +0200 Subject: [PATCH 08/10] minor edit --- articles/finances.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles/finances.md b/articles/finances.md index ea6714c..998a1f9 100644 --- a/articles/finances.md +++ b/articles/finances.md @@ -243,7 +243,7 @@ The below table is until end of September 2024. ## Total -In a single table, here's our income over the last 5 years. +In a single table, here's our income since robur started. | Year | Amount | |-------|-----------:| From 8ced832149804c978cef5fdbd8c943dc8355edb3 Mon Sep 17 00:00:00 2001 From: Hannes Mehnert Date: Sat, 19 Oct 2024 22:38:46 +0200 Subject: [PATCH 09/10] minor --- images/finances.png | Bin 6478 -> 6425 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/images/finances.png b/images/finances.png index 9177644608ec9574e3a690df8560435b9136afee..5c7fbc4cb28baaea8b69ed1d9b4d93e69b026927 100644 GIT binary patch literal 6425 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 G$o~RnW3gWV From f1c0e05e81e61a63188866f02c557eb39d4db26a Mon Sep 17 00:00:00 2001 From: Hannes Mehnert Date: Mon, 21 Oct 2024 13:28:28 +0200 Subject: [PATCH 10/10] minor adjustments --- README.md | 2 +- articles/finances.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 0c59861..ec80c87 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ $ git clone git@git.robur.coop:robur/blog.robur.coop $ cd blog.robur.coop/ $ opam pin add -yn . $ opam install --deps-only blogger -$ dune exec src/watch.exe -- +$ dune exec bin/watch.exe -- ``` A little server run on `http://localhost:8000`. diff --git a/articles/finances.md b/articles/finances.md index 998a1f9..73ae505 100644 --- a/articles/finances.md +++ b/articles/finances.md @@ -1,7 +1,7 @@ --- date: 2024-10-21 -article.title: What has robur been doing and how since 2018? -article.description: +title: How has robur financially been doing since 2018? +description: How we organise as a collective, and why we're doing that. tags: - finances - cooperative