Compare commits
157 commits
Author | SHA1 | Date | |
---|---|---|---|
42739bb6f5 | |||
693a06f184 | |||
1eb0937c62 | |||
638f387458 | |||
cb403c8a60 | |||
6ecf75b76e | |||
4820b0dacf | |||
cfcb37384a | |||
8d7ab31606 | |||
54fcf0aefe | |||
c8db81ffe9 | |||
1f71504de7 | |||
07f2f9471d | |||
fa2900a0e0 | |||
9c0606b9a5 | |||
27d621de66 | |||
6b6984ef02 | |||
e5e608f2c9 | |||
2b8507ae78 | |||
798522c747 | |||
3d55b459c2 | |||
82a86f4515 | |||
343f77ef61 | |||
5394b0253f | |||
247325db93 | |||
7cb91acb3a | |||
baf21e1603 | |||
08bb73aabb | |||
2c12fc677c | |||
6514843244 | |||
937d572955 | |||
df8036c950 | |||
2ff8f15133 | |||
2eb7b855b6 | |||
995dea81a9 | |||
b3c60220de | |||
7d68f6fef8 | |||
f6a06a1f78 | |||
5791174a7e | |||
80bc7e33e3 | |||
ebaf20d558 | |||
7b828b497d | |||
76eafa45ca | |||
e4bcffb489 | |||
a76b4e7009 | |||
dadf18930a | |||
502e650e03 | |||
4d305b4085 | |||
0fe0df8eba | |||
631b0b6c93 | |||
e462211c49 | |||
8182b5bf05 | |||
bc59794685 | |||
2f3e1222b8 | |||
4234ff4b33 | |||
5b40131319 | |||
5803f0bd1e | |||
d2240a2d23 | |||
9f9723ea62 | |||
b273853121 | |||
37ec930f56 | |||
9d9dfa3c6f | |||
4dcdb75d4e | |||
f408bc51bf | |||
![]() |
aea5d27f20 | ||
34500abbab | |||
![]() |
a6209f056c | ||
![]() |
1aeece12a0 | ||
![]() |
0ff5a8affe | ||
![]() |
a5670bb674 | ||
![]() |
1c617dce0c | ||
![]() |
6b965debaf | ||
![]() |
baddefdf3b | ||
![]() |
d4daf8879a | ||
![]() |
9b950763b8 | ||
![]() |
ae0ca796de | ||
![]() |
edcd80e87f | ||
![]() |
ee90fedbf2 | ||
![]() |
f77db3058b | ||
![]() |
4279f6eba6 | ||
![]() |
dc8082cdcf | ||
![]() |
d89fb38d88 | ||
![]() |
7a90dad1dc | ||
![]() |
cf7479165a | ||
![]() |
3bfbd9eece | ||
![]() |
1bfc05f8de | ||
![]() |
b5fe19f862 | ||
![]() |
cd0a53200a | ||
![]() |
f18d23d6ec | ||
f56524299e | |||
ce8e540928 | |||
59bd52eba8 | |||
![]() |
23e8643980 | ||
![]() |
25e6cb6fa0 | ||
![]() |
e47fdb5d09 | ||
![]() |
9f25fd986d | ||
![]() |
029c55e743 | ||
![]() |
c53a8d46ee | ||
![]() |
5a16f56c2e | ||
![]() |
e12f8224a6 | ||
![]() |
cbe290628e | ||
![]() |
d4fae12375 | ||
![]() |
167b2df825 | ||
![]() |
c7431ed63d | ||
9d829c5d3f | |||
![]() |
5263958f0e | ||
![]() |
393119cc7d | ||
![]() |
32675afc4a | ||
![]() |
f9779723ed | ||
![]() |
d4e7b959a7 | ||
![]() |
68178405a8 | ||
![]() |
2c9369eaf3 | ||
![]() |
3d0fcb801e | ||
![]() |
fbc0e5f445 | ||
![]() |
cd1fc1cf6b | ||
![]() |
20283b4492 | ||
![]() |
2a4f516b7c | ||
84d9fac803 | |||
![]() |
19b7ff6c5d | ||
![]() |
3bc0325a0e | ||
![]() |
680c11b64b | ||
![]() |
f4eb914d6e | ||
![]() |
a00963fc80 | ||
![]() |
0078f3f372 | ||
8f9e3528e7 | |||
![]() |
fd3d840538 | ||
![]() |
22f2cabe1e | ||
7c31a32ff9 | |||
7483cb20b3 | |||
![]() |
fd9d9ae4a2 | ||
![]() |
66a26894e3 | ||
![]() |
fa1cd42de6 | ||
![]() |
2092d32fad | ||
![]() |
1f2e1ad274 | ||
![]() |
311f93c946 | ||
![]() |
96a062f521 | ||
![]() |
6b5f5ac331 | ||
![]() |
dc6918c6bc | ||
![]() |
4ef3af8fea | ||
![]() |
89ec4e23db | ||
![]() |
1feebac6f3 | ||
![]() |
81bec1e829 | ||
![]() |
0006758ab7 | ||
![]() |
b389860aa7 | ||
![]() |
1f230c71e2 | ||
![]() |
7ed0dcdf7c | ||
![]() |
3835c8d542 | ||
![]() |
ca13d9fcb5 | ||
![]() |
0621032cc2 | ||
![]() |
8249d2b5bd | ||
![]() |
727246fce4 | ||
416d5a92de | |||
![]() |
7053032756 | ||
![]() |
7f3842ca57 | ||
![]() |
9a24f91976 | ||
![]() |
346c3add5a | ||
![]() |
e4beab3fb5 |
|
@ -1,28 +0,0 @@
|
|||
Attendees: Gheorghe, Richard, Valentin, Ronny, Nicolas, Björn
|
||||
|
||||
Not attending: Koen & Robert (travelling), Kevin (day off)
|
||||
|
||||
* Bjorn set up some data structures in the internal Wiki
|
||||
* Valentin:
|
||||
* Met Eli from Thymis & Johannes from Clan. Discussed the three system architectures with them.
|
||||
* NixOps took some time for them to make it click. Now I know a bit better what we can learn from them, and if and on what we can collaborate. Overlap might be rather small with those projects.
|
||||
* We need to think about how to convey the power of NixOps in such a way that people understand this properly -- it's at a very high level of abstraction (essentially an IO monad for the Nix language), while people typically think in terms of their concrete use cases.
|
||||
* That gap requires some storytelling and didactic techniques to bridge.
|
||||
* Will work on a report & publish it on the website to communicate
|
||||
* Valentin & Bjorn will have a chat tomorrow after standup
|
||||
* Gheorghe:
|
||||
* Shared the UML info last Friday
|
||||
* Will work on the financials & get the numbers
|
||||
* Diagram code wants to add a PR
|
||||
* Update the numbers
|
||||
* Nicolas:
|
||||
* Wiki e-mail: we need to have a secrets management solution.
|
||||
* No test for PeerTube yet. So I started working on it. Probably finished today
|
||||
* Ronny:
|
||||
* Will have a look at Gheorghe's PR.
|
||||
* Richard:
|
||||
* Will ask Kevin about his work & check if I can help out
|
||||
* Looking for stuff to work on
|
||||
|
||||
* Nicholas opened up the wiki registration so each team member can create their own account today.
|
||||
* Nicholas: Make Forgejo send out notifications (Nicholas will do this).
|
|
@ -1,86 +0,0 @@
|
|||
Outline
|
||||
> Release a report on the estimated collective current investment on fediverse technology:
|
||||
>
|
||||
> Look at qualifiers like:
|
||||
>- Used system resources (CPU, storage, networking)
|
||||
>- Amount of software developers actively working on Fediverse software >products
|
||||
>- Amount of system administration engineers actively working on Fediverse software products
|
||||
>- Amount of moderation and governance people
|
||||
|
||||
* * *
|
||||
|
||||
# An estimate of investments in the Fediverse
|
||||
|
||||
## Introduction
|
||||
To provide an estimate of the investments made into the Fediverse, is a very daunting task due to decentralised nature of the Fediverse, the amount of volunteers contributing freely and - in our experience - a lack of research on this topic thus far. Nonetheless, we have taken upon ourselves the task to provide a first glimpse on this subject.
|
||||
|
||||
[TODO: describe 'the why' better]
|
||||
|
||||
We hope our work will contribute and ignite more serious research into this topic.
|
||||
|
||||
In this document we describe our assessment of the investments made in the Fediverse. We start with how we define the Fediverse, describe our methodology for gathering data on the defined Fediverse and share information on the services, platforms and software applications we have deemed relevant to include.
|
||||
|
||||
[TODO: need to add more info here ]
|
||||
|
||||
|
||||
* * *
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
## Define the Fediverse
|
||||
We need to define what the Fediverse is.
|
||||
|
||||
Wikipedia defines Fediverse as "a collection of social networking services that can communicate with each other (formally known as federation) using a common protocol. Users of different websites can send and receive status updates, multimedia files and other data across the network. The term Fediverse is a portmanteau of "federation" and "universe". (Wikipedia contributors, 2024)[^1]".
|
||||
|
||||
Erin Kissane & Darius Kazemi in 'Findings Report: Governance on Fediverse Microblogging Servers' define the Fediverse as "a decentralized interoperable network of social media sites, apps, and services built on the ActivityPub protocol.[^2]".
|
||||
|
||||
[ TODO: add the other definitions ]
|
||||
|
||||
|
||||
It seems there has not yet formed consensus on what exactly are the attributes which could define a platform, service or software application part of the Fediverse.
|
||||
|
||||
|
||||
|
||||
## Methodology
|
||||
* Numbers used & why these numbers and not other numbers
|
||||
* Services / platforms investigated
|
||||
* Why these services & platforms?
|
||||
* Software applications
|
||||
* Topic opened: https://socialhub.activitypub.rocks/t/any-info-on-the-estimated-collective-investments-time-money-on-fediverse-tech/4844?u=bjornw
|
||||
|
||||
## A closer look at the Fediverse platforms
|
||||
* Name of service/platform
|
||||
* Description of service/platform
|
||||
* estimated nr of installations
|
||||
* estimated nr of users (Monthly Active Users)
|
||||
* estimated nr of developers working on the service
|
||||
* estimated nr of moderators
|
||||
* estimated costs for the service
|
||||
|
||||
## Estimating investments in the Fediverse
|
||||
* Conclusion
|
||||
|
||||
|
||||
## Notes
|
||||
[^1]: Wikipedia contributors. (2024, December 29). Fediverse. Wikipedia. https://en.wikipedia.org/wiki/Fediverse
|
||||
[^2]: Kissane, E., & Kazemi, D. (2024, September 4). Findings Report: Governance on Fediverse Microblogging Servers. https://fediverse-governance.github.io/#brief-glossary
|
||||
|
||||
|
||||
## References
|
||||
* https://en.wikipedia.org/wiki/Fediverse
|
||||
* https://fedidb.org/
|
||||
* https://mastodon-analytics.com/
|
||||
* https://www.thinkimpact.com/mastodon-statistics/
|
||||
* https://fediverse.observer/
|
||||
* https://the-federation.info/
|
||||
* https://fediverse.party
|
||||
* https://socialhub.activitypub.rocks/t/fep-f1d5-nodeinfo-in-fediverse-software/1190
|
||||
* https://codeberg.org/fediverse
|
||||
|
||||
|
||||
|
||||
|
10296
MarCom/Communication Strategy Fediversity v0.1 aug 24.pdf
Normal file
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 8.1 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" width="729" height="658" viewBox="0 0 729 658" xmlns:xlink="http://www.w3.org/1999/xlink"><rect y="93" width="298" height="168" fill="#ff6e00"/><path d="M535.31443,392.74227h-300v-170h300Zm-298-2h296v-166h-296Z" transform="translate(-215.31443 -146.74227)" fill="#3f3d56"/><rect x="409" y="17" width="298" height="168" fill="#f2f2f2"/><path d="M944.31443,316.74227h-300v-170h300Zm-298-2h296v-166h-296Z" transform="translate(-215.31443 -146.74227)" fill="#3f3d56"/><path d="M727.42861,804.74227h-381a1,1,0,1,1,0-2h381a1,1,0,1,1,0,2Z" transform="translate(-215.31443 -146.74227)" fill="#ccc"/><path d="M584.94579,568.47455A12.38034,12.38034,0,0,1,600.06091,556.989l16.372-23.07272,16.44782,6.5295-23.57812,32.25841a12.44744,12.44744,0,0,1-24.35686-4.22968Z" transform="translate(-215.31443 -146.74227)" fill="#a0616a"/><path d="M602.90561,548.632l29.109-48.95706L620.155,468.04947l16.15228-43.07395.59568.25555c.39058.16734,9.56836,4.26281,10.92858,18.92951l18.56189,58.33693-49.53915,64.26717Z" transform="translate(-215.31443 -146.74227)" fill="#3f3d56"/><path d="M444.813,368.65055a12.3803,12.3803,0,0,1,10.28248,15.9579l21.73782,18.10693-7.78163,15.89375-30.33887-26.00164a12.44745,12.44745,0,0,1,6.1002-23.95694Z" transform="translate(-215.31443 -146.74227)" fill="#a0616a"/><path d="M463.2075,388.09077l46.55991,32.807,32.44778-9.37889,41.69617,19.43425-.30084.57414c-.197.37647-4.98984,9.21014-19.7178,9.43231l-59.59745,13.99592-60.2446-54.35977Z" transform="translate(-215.31443 -146.74227)" fill="#3f3d56"/><polygon points="333.089 640.297 316.903 640.297 309.202 577.863 333.092 577.864 333.089 640.297" fill="#a0616a"/><path d="M300.57258,635.67157h35.985a0,0,0,0,1,0,0v19.655a0,0,0,0,1,0,0H285.68572a0,0,0,0,1,0,0v-4.76818A14.88686,14.88686,0,0,1,300.57258,635.67157Z" fill="#2f2e41"/><polygon points="397.784 640.297 381.597 640.297 373.897 577.863 397.786 577.864 397.784 640.297" fill="#a0616a"/><path d="M365.26694,635.67157h35.985a0,0,0,0,1,0,0v19.655a0,0,0,0,1,0,0H350.38008a0,0,0,0,1,0,0v-4.76818A14.88686,14.88686,0,0,1,365.26694,635.67157Z" fill="#2f2e41"/><polygon points="403.54 412.407 402.22 504.828 400.9 626.295 371.853 623.654 357.33 455.977 338.846 623.654 308.859 623.654 305.839 454.657 316.401 417.688 403.54 412.407" fill="#2f2e41"/><path d="M528.82027,564.99455l-4.425-.19151L544.949,451.57579l-8.41566-34.22331a7.48958,7.48958,0,0,1,4.6419-8.79869l15.14186-5.6777,5.34935-14.71141,42.20641,4.548L604.91075,404.21c4.57364,1.46685,42.23691,14.01,39.63821,28.30213-2.56488,14.10666-17.70915,58.48857-18.47822,60.73778l-2.65217,63.64914-.32624.16311c-.39269.19635-29.48413,14.50056-61.08849,14.49815C550.87438,571.55973,539.42684,569.78477,528.82027,564.99455Z" transform="translate(-215.31443 -146.74227)" fill="#3f3d56"/><circle cx="581.11565" cy="350.49552" r="30.38881" transform="translate(-220.48051 545.53717) rotate(-61.33681)" fill="#a0616a"/><path d="M605.73047,379.91276c-5.79138,6.16906-16.54677,2.85737-17.30139-5.57045a10.18165,10.18165,0,0,1,.01281-1.96632c.38963-3.73316,2.54637-7.12242,2.02975-11.06411a5.80213,5.80213,0,0,0-1.06186-2.71612c-4.615-6.17988-15.44834,2.7641-19.80382-2.83036-2.67068-3.43039.46868-8.83137-1.58076-12.66542-2.70493-5.06032-10.71679-2.56405-15.74108-5.33533-5.59013-3.08338-5.25578-11.66024-1.576-16.87713,4.48768-6.36221,12.356-9.75708,20.12633-10.24635s15.48707,1.61122,22.74136,4.4383c8.24232,3.21213,16.41577,7.65133,21.488,14.89884,6.16835,8.81374,6.762,20.663,3.67705,30.969C616.86429,367.21654,610.45975,374.87506,605.73047,379.91276Z" transform="translate(-215.31443 -146.74227)" fill="#2f2e41"/></svg>
|
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 26 KiB |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" data-name="Layer 1" width="649.67538" height="516.23162" viewBox="0 0 649.67538 516.23162" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M759.79588,701.91485c-8.99256-7.59865-14.45479-19.60227-13.02232-31.28789s10.30472-22.42829,21.81332-24.90978,24.62761,4.38768,28.12315,15.62987c1.92376-21.6745,4.14055-44.25714,15.66409-62.715,10.43429-16.71314,28.50667-28.672,48.09305-30.81147s40.20832,5.941,52.42363,21.40027,15.20618,37.93388,6.6509,55.68241c-6.30238,13.07474-17.91359,22.80511-30.07923,30.72128a194.12948,194.12948,0,0,1-132.77224,29.04621" transform="translate(-275.16231 -191.88419)" fill="#f2f2f2"/><path d="M893.52217,574.20948a317.62446,317.62446,0,0,0-44.26411,43.95415,318.55051,318.55051,0,0,0-49.85571,83.314c-.89774,2.19991,2.67454,3.15752,3.56229.98208a316.7584,316.7584,0,0,1,93.16976-125.638c1.8443-1.5018-.78314-4.10164-2.61223-2.61223Z" transform="translate(-275.16231 -191.88419)" fill="#fff"/><path d="M434,707.11581H383a6.50745,6.50745,0,0,1-6.5-6.5v-106a6.50745,6.50745,0,0,1,6.5-6.5h51a6.50745,6.50745,0,0,1,6.5,6.5v106A6.50745,6.50745,0,0,1,434,707.11581Z" transform="translate(-275.16231 -191.88419)" fill="#ff6e00"/><path d="M555.00008,708.11581h-51a7.50836,7.50836,0,0,1-7.5-7.5v-206a7.50836,7.50836,0,0,1,7.5-7.5h51a7.50836,7.50836,0,0,1,7.5,7.5v206A7.50836,7.50836,0,0,1,555.00008,708.11581Zm-51-219a5.50623,5.50623,0,0,0-5.5,5.5v206a5.50622,5.50622,0,0,0,5.5,5.5h51a5.50622,5.50622,0,0,0,5.5-5.5v-206a5.50622,5.50622,0,0,0-5.5-5.5Z" transform="translate(-275.16231 -191.88419)" fill="#3f3d56"/><path d="M676.00008,708.11581h-51a7.50836,7.50836,0,0,1-7.5-7.5v-337a7.50836,7.50836,0,0,1,7.5-7.5h51a7.50836,7.50836,0,0,1,7.5,7.5v337A7.50836,7.50836,0,0,1,676.00008,708.11581Zm-51-350a5.50623,5.50623,0,0,0-5.5,5.5v337a5.50622,5.50622,0,0,0,5.5,5.5h51a5.50622,5.50622,0,0,0,5.5-5.5v-337a5.50622,5.50622,0,0,0-5.5-5.5Z" transform="translate(-275.16231 -191.88419)" fill="#3f3d56"/><path d="M798.12948,707.61581h-51a6.50753,6.50753,0,0,1-6.5-6.5v-475a6.50753,6.50753,0,0,1,6.5-6.5h51a6.50753,6.50753,0,0,1,6.5,6.5v475A6.50753,6.50753,0,0,1,798.12948,707.61581Z" transform="translate(-275.16231 -191.88419)" fill="#ff6e00"/><path d="M480.94169,414.24247a10.05581,10.05581,0,0,0-10.48188-11.30867L452.6832,370.32469l-4,14,12.17889,29.88574a10.11027,10.11027,0,0,0,20.0796.032Z" transform="translate(-275.16231 -191.88419)" fill="#a0616a"/><polygon points="68.816 351.113 78.717 358.342 111.312 323.589 96.698 312.92 68.816 351.113" fill="#a0616a"/><path d="M335.82708,548.54689H374.3578a0,0,0,0,1,0,0v14.88687a0,0,0,0,1,0,0H350.71393a14.88686,14.88686,0,0,1-14.88686-14.88686v0A0,0,0,0,1,335.82708,548.54689Z" transform="translate(38.89227 1022.53744) rotate(-143.86855)" fill="#2f2e41"/><polygon points="121.201 389.377 133.461 389.376 139.293 342.088 121.199 342.089 121.201 389.377" fill="#a0616a"/><path d="M393.73673,577.75756h38.53073a0,0,0,0,1,0,0v14.88687a0,0,0,0,1,0,0H408.62359a14.88686,14.88686,0,0,1-14.88686-14.88686v0A0,0,0,0,1,393.73673,577.75756Z" transform="translate(550.8686 978.49895) rotate(179.99738)" fill="#2f2e41"/><path d="M433.1832,396.82469s6,58-9,98l-11,76h-19l2-90-7-80S403.1832,364.82469,433.1832,396.82469Z" transform="translate(-275.16231 -191.88419)" fill="#2f2e41"/><polygon points="93.021 208.94 113.021 277.94 74.021 339.94 93.521 356.44 138.021 286.94 125.021 201.94 93.021 208.94" fill="#2f2e41"/><circle cx="144.02483" cy="29.6531" r="24.56103" fill="#a0616a"/><path d="M398.6832,255.32469s15-10,32,12l4.5,138.5s-13-18-40-1-33-2-33-2S343.1832,259.82469,398.6832,255.32469Z" transform="translate(-275.16231 -191.88419)" fill="#ccc"/><path d="M429.47327,266.9755h0a17.50586,17.50586,0,0,1,16.53679,16.56026l3.1731,60.28892,21,57-12,10-39-68-7.98473-55.89313A17.50587,17.50587,0,0,1,429.47327,266.9755Z" transform="translate(-275.16231 -191.88419)" fill="#ccc"/><path d="M401.14009,239.96055c4.01526,4.27712,11.47215,1.98106,11.99535-3.86208a7.05905,7.05905,0,0,0-.00889-1.36328c-.27013-2.58827-1.76543-4.9381-1.40725-7.67094a4.02264,4.02264,0,0,1,.7362-1.88313c3.19965-4.28461,10.71059,1.9164,13.73032-1.96233,1.85163-2.37835-.32494-6.12294,1.096-8.78115,1.87537-3.5084,7.43013-1.7777,10.91355-3.69907,3.87574-2.13777,3.64392-8.08425,1.09265-11.7012-3.11139-4.411-8.56664-6.76475-13.95392-7.104s-10.73745,1.11709-15.767,3.07715c-5.71454,2.227-11.38133,5.3048-14.898,10.32961-4.27662,6.11072-4.68817,14.326-2.54936,21.47132C393.42083,231.15805,397.8612,236.46783,401.14009,239.96055Z" transform="translate(-275.16231 -191.88419)" fill="#2f2e41"/><path d="M923.647,707.69147H276.353a1.19069,1.19069,0,0,1,0-2.38137H923.647a1.19069,1.19069,0,0,1,0,2.38137Z" transform="translate(-275.16231 -191.88419)" fill="#3f3d56"/></svg>
|
After Width: | Height: | Size: 4.6 KiB |
After Width: | Height: | Size: 6.8 KiB |
After Width: | Height: | Size: 7.8 KiB |
After Width: | Height: | Size: 8.3 KiB |
BIN
MarCom/Presentations/assets/What is the Fediverse -1080p-hls.mp4
Normal file
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
842
MarCom/Presentations/assets/federated-inkscape.svg
Normal file
|
@ -0,0 +1,842 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="176.56766mm"
|
||||
height="174.6866mm"
|
||||
viewBox="0 0 176.56766 174.6866"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||
sodipodi:docname="federated-inkscape.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.79196829"
|
||||
inkscape:cx="628.81305"
|
||||
inkscape:cy="520.22285"
|
||||
inkscape:window-width="2556"
|
||||
inkscape:window-height="1391"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g61145">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid58243"
|
||||
originx="-60.216167"
|
||||
originy="-17.656703" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Mend"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Mend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.4,0,0,-0.4,-4,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path36654" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Mstart"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Mstart"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(0.4,0,0,0.4,4,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path36651" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path36648" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="marker37471"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Tail"
|
||||
inkscape:isstock="true">
|
||||
<g
|
||||
transform="scale(-1.2)"
|
||||
id="g37469">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M -3.8048674,-3.9585227 0.54352094,0"
|
||||
id="path37457" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M -1.2866832,-3.9585227 3.0617053,0"
|
||||
id="path37459" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M 1.3053582,-3.9585227 5.6537466,0"
|
||||
id="path37461" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M -3.8048674,4.1775838 0.54352094,0.21974226"
|
||||
id="path37463" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M -1.2866832,4.1775838 3.0617053,0.21974226"
|
||||
id="path37465" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M 1.3053582,4.1775838 5.6537466,0.21974226"
|
||||
id="path37467" />
|
||||
</g>
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lstart"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lstart"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(0.8,0,0,0.8,10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path36645" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Tail"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Tail"
|
||||
inkscape:isstock="true">
|
||||
<g
|
||||
transform="scale(-1.2)"
|
||||
id="g36693">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M -3.8048674,-3.9585227 0.54352094,0"
|
||||
id="path36681" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M -1.2866832,-3.9585227 3.0617053,0"
|
||||
id="path36683" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M 1.3053582,-3.9585227 5.6537466,0"
|
||||
id="path36685" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M -3.8048674,4.1775838 0.54352094,0.21974226"
|
||||
id="path36687" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M -1.2866832,4.1775838 3.0617053,0.21974226"
|
||||
id="path36689" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M 1.3053582,4.1775838 5.6537466,0.21974226"
|
||||
id="path36691" />
|
||||
</g>
|
||||
</marker>
|
||||
<inkscape:perspective
|
||||
sodipodi:type="inkscape:persp3d"
|
||||
inkscape:vp_x="0 : 243.373 : 1"
|
||||
inkscape:vp_y="0 : 1000 : 0"
|
||||
inkscape:vp_z="840.54822 : 243.373 : 1"
|
||||
inkscape:persp3d-origin="420.27411 : 121.47753 : 1"
|
||||
id="perspective71" />
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath36447">
|
||||
<g
|
||||
inkscape:label="Clip"
|
||||
id="use36449">
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:4.70399;stop-color:#000000"
|
||||
id="path58906"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="98.605453"
|
||||
sodipodi:cy="129.24454"
|
||||
sodipodi:rx="14.370799"
|
||||
sodipodi:ry="14.370799"
|
||||
sodipodi:start="0.52359878"
|
||||
sodipodi:end="0.50870414"
|
||||
sodipodi:open="true"
|
||||
sodipodi:arc-type="arc"
|
||||
d="m 111.05093,136.42994 a 14.370799,14.370799 0 0 1 -19.584484,5.28674 14.370799,14.370799 0 0 1 -5.359636,-19.56466 14.370799,14.370799 0 0 1 19.54457,-5.43245 14.370799,14.370799 0 0 1 5.50519,19.52421" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.175px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="87.123085"
|
||||
y="130.00655"
|
||||
id="text58910"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan58908"
|
||||
style="font-size:3.175px;fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="87.123085"
|
||||
y="130.00655">my.peertube.eu</tspan></text>
|
||||
</g>
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath36458">
|
||||
<g
|
||||
inkscape:label="Clip"
|
||||
id="use36460">
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:4.70399;stop-color:#000000"
|
||||
id="path58914"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="41.126167"
|
||||
sodipodi:cy="119.63312"
|
||||
sodipodi:rx="14.370799"
|
||||
sodipodi:ry="14.370799"
|
||||
sodipodi:start="0.52359878"
|
||||
sodipodi:end="0.50870414"
|
||||
sodipodi:open="true"
|
||||
sodipodi:arc-type="arc"
|
||||
d="m 53.571644,126.81852 a 14.370799,14.370799 0 0 1 -19.584484,5.28674 14.370799,14.370799 0 0 1 -5.359636,-19.56466 14.370799,14.370799 0 0 1 19.544569,-5.43245 14.370799,14.370799 0 0 1 5.505191,19.52421" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.175px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="29.643806"
|
||||
y="120.39513"
|
||||
id="text58918"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan58916"
|
||||
style="font-size:3.175px;fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="29.643806"
|
||||
y="120.39513">my.pixelfed.eu</tspan></text>
|
||||
</g>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-60.216167,-17.656702)">
|
||||
<g
|
||||
id="g61145"
|
||||
transform="translate(4.4240417,2.0728321)">
|
||||
<path
|
||||
style="fill:#2541b2;fill-opacity:1;stroke:none;stroke-width:11.1625;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path59396"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="93.037262"
|
||||
sodipodi:cy="153.02533"
|
||||
sodipodi:rx="37.245136"
|
||||
sodipodi:ry="37.245136"
|
||||
sodipodi:start="0.52359878"
|
||||
sodipodi:end="0.50870414"
|
||||
sodipodi:open="true"
|
||||
sodipodi:arc-type="arc"
|
||||
d="m 125.2925,171.6479 a 37.245136,37.245136 0 0 1 -50.75757,13.70178 37.245136,37.245136 0 0 1 -13.890695,-50.70619 37.245136,37.245136 0 0 1 50.654115,-14.07941 37.245136,37.245136 0 0 1 14.26793,50.60134" />
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:9.15155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path58590-9-1"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="69.10688"
|
||||
sodipodi:cy="166.76422"
|
||||
sodipodi:rx="6.1949"
|
||||
sodipodi:ry="6.1949"
|
||||
sodipodi:start="0.52359878"
|
||||
sodipodi:end="0.50870414"
|
||||
sodipodi:open="true"
|
||||
sodipodi:arc-type="arc"
|
||||
d="m 74.471821,169.86167 a 6.1949,6.1949 0 0 1 -8.442392,2.27899 6.1949,6.1949 0 0 1 -2.310408,-8.43385 6.1949,6.1949 0 0 1 8.425186,-2.3418 6.1949,6.1949 0 0 1 2.373153,8.41641" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff6e00;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 110.77281,166.76422 H 75.301665"
|
||||
id="path58820"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9"
|
||||
inkscape:connection-end="#path58590-9-1" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff6e00;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 89.646977,134.87837 -17.185324,26.678"
|
||||
id="path58822"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590"
|
||||
inkscape:connection-end="#path58590-9-1" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff6e00;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 96.36351,134.87382 17.24234,26.68714"
|
||||
id="path58824"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590"
|
||||
inkscape:connection-end="#path58590-9" />
|
||||
<path
|
||||
style="fill:#2541b2;fill-opacity:1;stroke:none;stroke-width:11.1625;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path59396-7"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="195.11465"
|
||||
sodipodi:cy="152.98441"
|
||||
sodipodi:rx="37.245136"
|
||||
sodipodi:ry="37.245136"
|
||||
sodipodi:start="0.52359878"
|
||||
sodipodi:end="0.50870414"
|
||||
sodipodi:open="true"
|
||||
sodipodi:arc-type="arc"
|
||||
d="m 227.36989,171.60697 a 37.245136,37.245136 0 0 1 -50.75757,13.70179 37.245136,37.245136 0 0 1 -13.89069,-50.70619 37.245136,37.245136 0 0 1 50.65412,-14.07941 37.245136,37.245136 0 0 1 14.26793,50.60134" />
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:9.15155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path58590-9-6"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="219.04503"
|
||||
sodipodi:cy="166.72331"
|
||||
sodipodi:rx="6.1949"
|
||||
sodipodi:ry="6.1949"
|
||||
sodipodi:start="0.52359878"
|
||||
sodipodi:end="0.50870414"
|
||||
sodipodi:open="true"
|
||||
sodipodi:arc-type="arc"
|
||||
d="m 224.40997,169.82076 a 6.1949,6.1949 0 0 1 -8.44239,2.27899 6.1949,6.1949 0 0 1 -2.31041,-8.43385 6.1949,6.1949 0 0 1 8.42519,-2.34179 6.1949,6.1949 0 0 1 2.37315,8.4164" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff6e00;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 212.85019,166.72331 H 177.37905"
|
||||
id="path58820-6"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9-6"
|
||||
inkscape:connection-end="#path58590-9-1-0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff6e00;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 191.72437,134.83745 -17.18533,26.67801"
|
||||
id="path58822-2"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-93"
|
||||
inkscape:connection-end="#path58590-9-1-0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff6e00;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 198.4409,134.8329 17.24234,26.68715"
|
||||
id="path58824-6"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-93"
|
||||
inkscape:connection-end="#path58590-9-6" />
|
||||
<path
|
||||
style="opacity:1;fill:#2541b2;fill-opacity:1;stroke:none;stroke-width:11.1625;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path59396-8"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="144.07596"
|
||||
sodipodi:cy="52.829006"
|
||||
sodipodi:rx="37.245136"
|
||||
sodipodi:ry="37.245136"
|
||||
sodipodi:start="0.52359878"
|
||||
sodipodi:end="0.50870414"
|
||||
sodipodi:open="true"
|
||||
sodipodi:arc-type="arc"
|
||||
d="m 176.33119,71.451574 a 37.245136,37.245136 0 0 1 -50.75756,13.701787 37.245136,37.245136 0 0 1 -13.8907,-50.706194 37.245136,37.245136 0 0 1 50.65412,-14.07941 37.245136,37.245136 0 0 1 14.26793,50.601339" />
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:9.15155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path58590-92"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="144.04042"
|
||||
sodipodi:cy="29.474239"
|
||||
sodipodi:rx="6.1949"
|
||||
sodipodi:ry="6.1949"
|
||||
sodipodi:start="0.52359878"
|
||||
sodipodi:end="0.50870414"
|
||||
sodipodi:open="true"
|
||||
sodipodi:arc-type="arc"
|
||||
d="m 149.40536,32.571689 a 6.1949,6.1949 0 0 1 -8.44239,2.278988 6.1949,6.1949 0 0 1 -2.31041,-8.433848 6.1949,6.1949 0 0 1 8.42519,-2.341797 6.1949,6.1949 0 0 1 2.37315,8.416408" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff6e00;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 161.81149,66.567909 H 126.34036"
|
||||
id="path58820-3"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9-0"
|
||||
inkscape:connection-end="#path58590-9-1-2" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff6e00;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 140.68567,34.682051 123.50035,61.360058"
|
||||
id="path58822-7"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-92"
|
||||
inkscape:connection-end="#path58590-9-1-2" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff6e00;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 147.40221,34.677502 17.24233,26.68714"
|
||||
id="path58824-5"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-92"
|
||||
inkscape:connection-end="#path58590-9-0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 95.44958,123.97991 117.69772,72.258569"
|
||||
id="path60835"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590"
|
||||
inkscape:connection-end="#path58590-9-1-2" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 97.742036,125.68246 163.26602,70.556018"
|
||||
id="path60837"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590"
|
||||
inkscape:connection-end="#path58590-9-0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 95.813494,124.15065 141.22861,34.994238"
|
||||
id="path60839"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590"
|
||||
inkscape:connection-end="#path58590-92" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 192.6353,123.93715 170.45011,72.260302"
|
||||
id="path60841"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-93"
|
||||
inkscape:connection-end="#path58590-9-0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 192.26643,124.11019 146.85314,34.993764"
|
||||
id="path60843"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-93"
|
||||
inkscape:connection-end="#path58590-92" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 190.33932,125.64078 124.88529,70.556708"
|
||||
id="path60845"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-93"
|
||||
inkscape:connection-end="#path58590-9-1-2" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 71.91865,161.24431 117.33376,72.087907"
|
||||
id="path60847"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9-1"
|
||||
inkscape:connection-end="#path58590-9-1-2" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 72.074779,161.32656 141.07256,34.911822"
|
||||
id="path60849"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9-1"
|
||||
inkscape:connection-end="#path58590-92" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 73.458652,162.35539 163.65455,70.976761"
|
||||
id="path60851"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9-1"
|
||||
inkscape:connection-end="#path58590-9-0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 117.16403,160.57253 2.78516,-87.812885"
|
||||
id="path60853"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9"
|
||||
inkscape:connection-end="#path58590-9-1-2" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 119.77941,161.24431 165.19452,72.087907"
|
||||
id="path60855"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9"
|
||||
inkscape:connection-end="#path58590-9-0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 118.16616,160.68639 142.84193,35.551984"
|
||||
id="path60857"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9"
|
||||
inkscape:connection-end="#path58590-92" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 170.9878,160.53164 -2.785,-87.771971"
|
||||
id="path60859"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9-1-0"
|
||||
inkscape:connection-end="#path58590-9-0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 168.37158,161.20387 122.9583,72.087434"
|
||||
id="path60861"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9-1-0"
|
||||
inkscape:connection-end="#path58590-9-1-2" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 169.98239,160.64619 145.24229,35.55132"
|
||||
id="path60863"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9-1-0"
|
||||
inkscape:connection-end="#path58590-92" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 216.23235,161.20387 170.81905,72.087434"
|
||||
id="path60865"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9-6"
|
||||
inkscape:connection-end="#path58590-9-0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 214.69238,162.31539 124.49828,70.975886"
|
||||
id="path60867"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9-6"
|
||||
inkscape:connection-end="#path58590-9-1-2" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 216.07432,161.28728 147.01113,34.910269"
|
||||
id="path60869"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9-6"
|
||||
inkscape:connection-end="#path58590-92" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 99.196511,129.66808 89.687779,-0.036"
|
||||
id="path60871"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590"
|
||||
inkscape:connection-end="#path58590-93" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 98.599665,132.32357 66.986565,31.74669"
|
||||
id="path60873"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590"
|
||||
inkscape:connection-end="#path58590-9-1-0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 98.945067,131.41772 213.10168,164.97616"
|
||||
id="path60875"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590"
|
||||
inkscape:connection-end="#path58590-9-6" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 123.16243,166.75955 41.82702,-0.0316"
|
||||
id="path60877"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9"
|
||||
inkscape:connection-end="#path58590-9-1-0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 122.56241,164.10444 189.48438,132.2894"
|
||||
id="path60879"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9"
|
||||
inkscape:connection-end="#path58590-93" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 123.16243,166.76174 89.68777,-0.0359"
|
||||
id="path60881"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9"
|
||||
inkscape:connection-end="#path58590-9-6" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 75.301667,166.76174 89.687773,-0.0359"
|
||||
id="path60883"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9-1"
|
||||
inkscape:connection-end="#path58590-9-1-0" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 75.301666,166.76253 212.8502,166.725"
|
||||
id="path60885"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9-1"
|
||||
inkscape:connection-end="#path58590-9-6" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 75.048966,165.01259 189.13713,131.38124"
|
||||
id="path60887"
|
||||
inkscape:connector-type="polyline"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:connection-start="#path58590-9-1"
|
||||
inkscape:connection-end="#path58590-93" />
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:9.15155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path58590-9-0"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="168.00633"
|
||||
sodipodi:cy="66.567909"
|
||||
sodipodi:rx="6.1949"
|
||||
sodipodi:ry="6.1949"
|
||||
sodipodi:start="0.52359878"
|
||||
sodipodi:end="0.50870414"
|
||||
sodipodi:open="true"
|
||||
sodipodi:arc-type="arc"
|
||||
d="m 173.37127,69.665359 a 6.1949,6.1949 0 0 1 -8.44239,2.278988 6.1949,6.1949 0 0 1 -2.31041,-8.433848 6.1949,6.1949 0 0 1 8.42519,-2.341797 6.1949,6.1949 0 0 1 2.37315,8.416408" />
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:9.15155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path58590-9-1-2"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="120.14558"
|
||||
sodipodi:cy="66.567909"
|
||||
sodipodi:rx="6.1949"
|
||||
sodipodi:ry="6.1949"
|
||||
sodipodi:start="0.52359878"
|
||||
sodipodi:end="0.50870414"
|
||||
sodipodi:open="true"
|
||||
sodipodi:arc-type="arc"
|
||||
d="m 125.51052,69.665359 a 6.1949,6.1949 0 0 1 -8.44239,2.278988 6.1949,6.1949 0 0 1 -2.31041,-8.433848 6.1949,6.1949 0 0 1 8.42518,-2.341797 6.1949,6.1949 0 0 1 2.37316,8.416408" />
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:9.15155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path58590-93"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="195.07912"
|
||||
sodipodi:cy="129.62964"
|
||||
sodipodi:rx="6.1949"
|
||||
sodipodi:ry="6.1949"
|
||||
sodipodi:start="0.52359878"
|
||||
sodipodi:end="0.50870414"
|
||||
sodipodi:open="true"
|
||||
sodipodi:arc-type="arc"
|
||||
d="m 200.44406,132.72709 a 6.1949,6.1949 0 0 1 -8.44239,2.27899 6.1949,6.1949 0 0 1 -2.31041,-8.43385 6.1949,6.1949 0 0 1 8.42518,-2.3418 6.1949,6.1949 0 0 1 2.37316,8.41641" />
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:9.15155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path58590-9-1-0"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="171.18427"
|
||||
sodipodi:cy="166.72331"
|
||||
sodipodi:rx="6.1949"
|
||||
sodipodi:ry="6.1949"
|
||||
sodipodi:start="0.52359878"
|
||||
sodipodi:end="0.50870414"
|
||||
sodipodi:open="true"
|
||||
sodipodi:arc-type="arc"
|
||||
d="m 176.54921,169.82076 a 6.1949,6.1949 0 0 1 -8.4424,2.27899 6.1949,6.1949 0 0 1 -2.3104,-8.43385 6.1949,6.1949 0 0 1 8.42518,-2.34179 6.1949,6.1949 0 0 1 2.37315,8.4164" />
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:9.15155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path58590-9"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="116.96764"
|
||||
sodipodi:cy="166.76422"
|
||||
sodipodi:rx="6.1949"
|
||||
sodipodi:ry="6.1949"
|
||||
sodipodi:start="0.52359878"
|
||||
sodipodi:end="0.50870414"
|
||||
sodipodi:open="true"
|
||||
sodipodi:arc-type="arc"
|
||||
d="m 122.33258,169.86167 a 6.1949,6.1949 0 0 1 -8.44239,2.27899 6.1949,6.1949 0 0 1 -2.31041,-8.43385 6.1949,6.1949 0 0 1 8.42519,-2.3418 6.1949,6.1949 0 0 1 2.37315,8.41641" />
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:9.15155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path58590"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="93.001724"
|
||||
sodipodi:cy="129.67056"
|
||||
sodipodi:rx="6.1949"
|
||||
sodipodi:ry="6.1949"
|
||||
sodipodi:start="0.52359878"
|
||||
sodipodi:end="0.50870414"
|
||||
sodipodi:open="true"
|
||||
sodipodi:arc-type="arc"
|
||||
d="m 98.366665,132.76801 a 6.1949,6.1949 0 0 1 -8.442392,2.27899 6.1949,6.1949 0 0 1 -2.310408,-8.43385 6.1949,6.1949 0 0 1 8.425186,-2.34179 6.1949,6.1949 0 0 1 2.373153,8.4164" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.82083px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="141.18677"
|
||||
y="31.569738"
|
||||
id="text75117"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan75115"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:5.82083px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="141.18677"
|
||||
y="31.569738">A1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.82083px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="117.2439"
|
||||
y="68.663406"
|
||||
id="text75117-9"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan75115-2"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:5.82083px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="117.2439"
|
||||
y="68.663406">B1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.82083px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="164.91402"
|
||||
y="68.663406"
|
||||
id="text75117-2"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan75115-8"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:5.82083px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="164.91402"
|
||||
y="68.663406">C1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.82083px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="215.34152"
|
||||
y="168.81882"
|
||||
id="text75117-2-3"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan75115-8-1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:5.82083px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="215.34152"
|
||||
y="168.81882">C3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.82083px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="89.464119"
|
||||
y="131.80972"
|
||||
id="text75117-97"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan75115-3"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:5.82083px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="89.464119"
|
||||
y="131.80972">A2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.82083px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="65.521255"
|
||||
y="168.90338"
|
||||
id="text75117-9-6"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan75115-2-1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:5.82083px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="65.521255"
|
||||
y="168.90338">B2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.82083px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="113.19138"
|
||||
y="168.85973"
|
||||
id="text75117-2-2"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan75115-8-9"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:5.82083px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="113.19138"
|
||||
y="168.85973">C2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.82083px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="167.6714"
|
||||
y="168.77953"
|
||||
id="text75117-9-7"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan75115-2-8"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:5.82083px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="167.6714"
|
||||
y="168.77953">B3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.82083px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="191.61427"
|
||||
y="131.68585"
|
||||
id="text75117-4"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan75115-5"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:5.82083px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="191.61427"
|
||||
y="131.68585">A3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="129.53557"
|
||||
y="21.968952"
|
||||
id="text151203"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan151201"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:4.23333px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#efedef;fill-opacity:1;stroke-width:0.264583"
|
||||
x="129.53557"
|
||||
y="21.968952">My Fediversity</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="179.18785"
|
||||
y="185.09686"
|
||||
id="text151203-0"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan151201-3"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:4.23333px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#efedef;fill-opacity:1;stroke-width:0.264583"
|
||||
x="179.18785"
|
||||
y="185.09686">Your Fediversity</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="76.365395"
|
||||
y="185.09686"
|
||||
id="text151203-0-6"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan151201-3-1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:4.23333px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#efedef;fill-opacity:1;stroke-width:0.264583"
|
||||
x="76.365395"
|
||||
y="185.09686">Their Fediversity</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:10.5833px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="240.13141"
|
||||
y="47.2188"
|
||||
id="text171688"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan171686"
|
||||
style="stroke-width:0.264583"
|
||||
x="240.13141"
|
||||
y="47.2188" /></text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 40 KiB |
505
MarCom/Presentations/assets/federated.svg
Normal file
|
@ -0,0 +1,505 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="176.56766mm"
|
||||
height="174.6866mm"
|
||||
viewBox="0 0 176.56766 174.6866"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Mend"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto">
|
||||
<path
|
||||
transform="matrix(-0.4,0,0,-0.4,-4,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path36654" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Mstart"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto">
|
||||
<path
|
||||
transform="matrix(0.4,0,0,0.4,4,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path36651" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path36648" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="marker37471"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto">
|
||||
<g
|
||||
transform="scale(-1.2)"
|
||||
id="g37469">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M -3.8048674,-3.9585227 0.54352094,0"
|
||||
id="path37457" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M -1.2866832,-3.9585227 3.0617053,0"
|
||||
id="path37459" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M 1.3053582,-3.9585227 5.6537466,0"
|
||||
id="path37461" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M -3.8048674,4.1775838 0.54352094,0.21974226"
|
||||
id="path37463" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M -1.2866832,4.1775838 3.0617053,0.21974226"
|
||||
id="path37465" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M 1.3053582,4.1775838 5.6537466,0.21974226"
|
||||
id="path37467" />
|
||||
</g>
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lstart"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto">
|
||||
<path
|
||||
transform="matrix(0.8,0,0,0.8,10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path36645" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Tail"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto">
|
||||
<g
|
||||
transform="scale(-1.2)"
|
||||
id="g36693">
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M -3.8048674,-3.9585227 0.54352094,0"
|
||||
id="path36681" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M -1.2866832,-3.9585227 3.0617053,0"
|
||||
id="path36683" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M 1.3053582,-3.9585227 5.6537466,0"
|
||||
id="path36685" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M -3.8048674,4.1775838 0.54352094,0.21974226"
|
||||
id="path36687" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M -1.2866832,4.1775838 3.0617053,0.21974226"
|
||||
id="path36689" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:context-stroke;stroke-width:0.8;stroke-linecap:round"
|
||||
d="M 1.3053582,4.1775838 5.6537466,0.21974226"
|
||||
id="path36691" />
|
||||
</g>
|
||||
</marker>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath36447">
|
||||
<g
|
||||
id="use36449">
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:4.70399;stop-color:#000000"
|
||||
id="path58906"
|
||||
d="m 111.05093,136.42994 a 14.370799,14.370799 0 0 1 -19.584484,5.28674 14.370799,14.370799 0 0 1 -5.359636,-19.56466 14.370799,14.370799 0 0 1 19.54457,-5.43245 14.370799,14.370799 0 0 1 5.50519,19.52421" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.175px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="87.123085"
|
||||
y="130.00655"
|
||||
id="text58910"><tspan
|
||||
id="tspan58908"
|
||||
style="font-size:3.175px;fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="87.123085"
|
||||
y="130.00655">my.peertube.eu</tspan></text>
|
||||
</g>
|
||||
</clipPath>
|
||||
<clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath36458">
|
||||
<g
|
||||
id="use36460">
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:4.70399;stop-color:#000000"
|
||||
id="path58914"
|
||||
d="m 53.571644,126.81852 a 14.370799,14.370799 0 0 1 -19.584484,5.28674 14.370799,14.370799 0 0 1 -5.359636,-19.56466 14.370799,14.370799 0 0 1 19.544569,-5.43245 14.370799,14.370799 0 0 1 5.505191,19.52421" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:3.175px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="29.643806"
|
||||
y="120.39513"
|
||||
id="text58918"><tspan
|
||||
id="tspan58916"
|
||||
style="font-size:3.175px;fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="29.643806"
|
||||
y="120.39513">my.pixelfed.eu</tspan></text>
|
||||
</g>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<g
|
||||
id="layer1"
|
||||
transform="translate(-60.216167,-17.656702)">
|
||||
<g
|
||||
id="g61145"
|
||||
transform="translate(4.4240417,2.0728321)">
|
||||
<path
|
||||
style="fill:#2541b2;fill-opacity:1;stroke:none;stroke-width:11.1625;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path59396"
|
||||
d="m 125.2925,171.6479 a 37.245136,37.245136 0 0 1 -50.75757,13.70178 37.245136,37.245136 0 0 1 -13.890695,-50.70619 37.245136,37.245136 0 0 1 50.654115,-14.07941 37.245136,37.245136 0 0 1 14.26793,50.60134" />
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:9.15155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path58590-9-1"
|
||||
d="m 74.471821,169.86167 a 6.1949,6.1949 0 0 1 -8.442392,2.27899 6.1949,6.1949 0 0 1 -2.310408,-8.43385 6.1949,6.1949 0 0 1 8.425186,-2.3418 6.1949,6.1949 0 0 1 2.373153,8.41641" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff6e00;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 110.77281,166.76422 H 75.301665"
|
||||
id="path58820" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff6e00;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 89.646977,134.87837 -17.185324,26.678"
|
||||
id="path58822" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff6e00;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 96.36351,134.87382 17.24234,26.68714"
|
||||
id="path58824" />
|
||||
<path
|
||||
style="fill:#2541b2;fill-opacity:1;stroke:none;stroke-width:11.1625;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path59396-7"
|
||||
d="m 227.36989,171.60697 a 37.245136,37.245136 0 0 1 -50.75757,13.70179 37.245136,37.245136 0 0 1 -13.89069,-50.70619 37.245136,37.245136 0 0 1 50.65412,-14.07941 37.245136,37.245136 0 0 1 14.26793,50.60134" />
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:9.15155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path58590-9-6"
|
||||
d="m 224.40997,169.82076 a 6.1949,6.1949 0 0 1 -8.44239,2.27899 6.1949,6.1949 0 0 1 -2.31041,-8.43385 6.1949,6.1949 0 0 1 8.42519,-2.34179 6.1949,6.1949 0 0 1 2.37315,8.4164" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff6e00;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 212.85019,166.72331 H 177.37905"
|
||||
id="path58820-6" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff6e00;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 191.72437,134.83745 -17.18533,26.67801"
|
||||
id="path58822-2" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff6e00;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 198.4409,134.8329 17.24234,26.68715"
|
||||
id="path58824-6" />
|
||||
<path
|
||||
style="opacity:1;fill:#2541b2;fill-opacity:1;stroke:none;stroke-width:11.1625;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path59396-8"
|
||||
d="m 176.33119,71.451574 a 37.245136,37.245136 0 0 1 -50.75756,13.701787 37.245136,37.245136 0 0 1 -13.8907,-50.706194 37.245136,37.245136 0 0 1 50.65412,-14.07941 37.245136,37.245136 0 0 1 14.26793,50.601339" />
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:9.15155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path58590-92"
|
||||
d="m 149.40536,32.571689 a 6.1949,6.1949 0 0 1 -8.44239,2.278988 6.1949,6.1949 0 0 1 -2.31041,-8.433848 6.1949,6.1949 0 0 1 8.42519,-2.341797 6.1949,6.1949 0 0 1 2.37315,8.416408" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff6e00;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 161.81149,66.567909 H 126.34036"
|
||||
id="path58820-3" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff6e00;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="M 140.68567,34.682051 123.50035,61.360058"
|
||||
id="path58822-7" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#ff6e00;stroke-width:0.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.5, 3;stroke-dashoffset:0;stroke-opacity:1"
|
||||
d="m 147.40221,34.677502 17.24233,26.68714"
|
||||
id="path58824-5" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 95.44958,123.97991 117.69772,72.258569"
|
||||
id="path60835" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 97.742036,125.68246 163.26602,70.556018"
|
||||
id="path60837" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 95.813494,124.15065 141.22861,34.994238"
|
||||
id="path60839" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 192.6353,123.93715 170.45011,72.260302"
|
||||
id="path60841" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 192.26643,124.11019 146.85314,34.993764"
|
||||
id="path60843" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 190.33932,125.64078 124.88529,70.556708"
|
||||
id="path60845" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 71.91865,161.24431 117.33376,72.087907"
|
||||
id="path60847" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 72.074779,161.32656 141.07256,34.911822"
|
||||
id="path60849" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 73.458652,162.35539 163.65455,70.976761"
|
||||
id="path60851" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 117.16403,160.57253 2.78516,-87.812885"
|
||||
id="path60853" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 119.77941,161.24431 165.19452,72.087907"
|
||||
id="path60855" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 118.16616,160.68639 142.84193,35.551984"
|
||||
id="path60857" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 170.9878,160.53164 -2.785,-87.771971"
|
||||
id="path60859" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 168.37158,161.20387 122.9583,72.087434"
|
||||
id="path60861" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 169.98239,160.64619 145.24229,35.55132"
|
||||
id="path60863" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 216.23235,161.20387 170.81905,72.087434"
|
||||
id="path60865" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 214.69238,162.31539 124.49828,70.975886"
|
||||
id="path60867" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 216.07432,161.28728 147.01113,34.910269"
|
||||
id="path60869" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 99.196511,129.66808 89.687779,-0.036"
|
||||
id="path60871" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 98.599665,132.32357 66.986565,31.74669"
|
||||
id="path60873" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 98.945067,131.41772 213.10168,164.97616"
|
||||
id="path60875" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 123.16243,166.75955 41.82702,-0.0316"
|
||||
id="path60877" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 122.56241,164.10444 189.48438,132.2894"
|
||||
id="path60879" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 123.16243,166.76174 89.68777,-0.0359"
|
||||
id="path60881" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 75.301667,166.76174 89.687773,-0.0359"
|
||||
id="path60883" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 75.301666,166.76253 212.8502,166.725"
|
||||
id="path60885" />
|
||||
<path
|
||||
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 75.048966,165.01259 189.13713,131.38124"
|
||||
id="path60887" />
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:9.15155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path58590-9-0"
|
||||
d="m 173.37127,69.665359 a 6.1949,6.1949 0 0 1 -8.44239,2.278988 6.1949,6.1949 0 0 1 -2.31041,-8.433848 6.1949,6.1949 0 0 1 8.42519,-2.341797 6.1949,6.1949 0 0 1 2.37315,8.416408" />
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:9.15155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path58590-9-1-2"
|
||||
d="m 125.51052,69.665359 a 6.1949,6.1949 0 0 1 -8.44239,2.278988 6.1949,6.1949 0 0 1 -2.31041,-8.433848 6.1949,6.1949 0 0 1 8.42518,-2.341797 6.1949,6.1949 0 0 1 2.37316,8.416408" />
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:9.15155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path58590-93"
|
||||
d="m 200.44406,132.72709 a 6.1949,6.1949 0 0 1 -8.44239,2.27899 6.1949,6.1949 0 0 1 -2.31041,-8.43385 6.1949,6.1949 0 0 1 8.42518,-2.3418 6.1949,6.1949 0 0 1 2.37316,8.41641" />
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:9.15155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path58590-9-1-0"
|
||||
d="m 176.54921,169.82076 a 6.1949,6.1949 0 0 1 -8.4424,2.27899 6.1949,6.1949 0 0 1 -2.3104,-8.43385 6.1949,6.1949 0 0 1 8.42518,-2.34179 6.1949,6.1949 0 0 1 2.37315,8.4164" />
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:9.15155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path58590-9"
|
||||
d="m 122.33258,169.86167 a 6.1949,6.1949 0 0 1 -8.44239,2.27899 6.1949,6.1949 0 0 1 -2.31041,-8.43385 6.1949,6.1949 0 0 1 8.42519,-2.3418 6.1949,6.1949 0 0 1 2.37315,8.41641" />
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke:none;stroke-width:9.15155;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stop-color:#000000"
|
||||
id="path58590"
|
||||
d="m 98.366665,132.76801 a 6.1949,6.1949 0 0 1 -8.442392,2.27899 6.1949,6.1949 0 0 1 -2.310408,-8.43385 6.1949,6.1949 0 0 1 8.425186,-2.34179 6.1949,6.1949 0 0 1 2.373153,8.4164" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.82083px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="141.18677"
|
||||
y="31.569738"
|
||||
id="text75117"><tspan
|
||||
id="tspan75115"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:5.82083px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="141.18677"
|
||||
y="31.569738">A1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.82083px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="117.2439"
|
||||
y="68.663406"
|
||||
id="text75117-9"><tspan
|
||||
id="tspan75115-2"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:5.82083px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="117.2439"
|
||||
y="68.663406">B1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.82083px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="164.91402"
|
||||
y="68.663406"
|
||||
id="text75117-2"><tspan
|
||||
id="tspan75115-8"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:5.82083px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="164.91402"
|
||||
y="68.663406">C1</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.82083px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="215.34152"
|
||||
y="168.81882"
|
||||
id="text75117-2-3"><tspan
|
||||
id="tspan75115-8-1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:5.82083px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="215.34152"
|
||||
y="168.81882">C3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.82083px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="89.464119"
|
||||
y="131.80972"
|
||||
id="text75117-97"><tspan
|
||||
id="tspan75115-3"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:5.82083px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="89.464119"
|
||||
y="131.80972">A2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.82083px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="65.521255"
|
||||
y="168.90338"
|
||||
id="text75117-9-6"><tspan
|
||||
id="tspan75115-2-1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:5.82083px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="65.521255"
|
||||
y="168.90338">B2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.82083px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="113.19138"
|
||||
y="168.85973"
|
||||
id="text75117-2-2"><tspan
|
||||
id="tspan75115-8-9"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:5.82083px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="113.19138"
|
||||
y="168.85973">C2</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.82083px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="167.6714"
|
||||
y="168.77953"
|
||||
id="text75117-9-7"><tspan
|
||||
id="tspan75115-2-8"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:5.82083px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="167.6714"
|
||||
y="168.77953">B3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:5.82083px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="191.61427"
|
||||
y="131.68585"
|
||||
id="text75117-4"><tspan
|
||||
id="tspan75115-5"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:5.82083px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="191.61427"
|
||||
y="131.68585">A3</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="129.53557"
|
||||
y="21.968952"
|
||||
id="text151203"><tspan
|
||||
id="tspan151201"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:4.23333px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#efedef;fill-opacity:1;stroke-width:0.264583"
|
||||
x="129.53557"
|
||||
y="21.968952">My Fediversity</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="179.18785"
|
||||
y="185.09686"
|
||||
id="text151203-0"><tspan
|
||||
id="tspan151201-3"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:4.23333px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#efedef;fill-opacity:1;stroke-width:0.264583"
|
||||
x="179.18785"
|
||||
y="185.09686">Your Fediversity</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:4.23333px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="76.365395"
|
||||
y="185.09686"
|
||||
id="text151203-0-6"><tspan
|
||||
id="tspan151201-3-1"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-size:4.23333px;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#efedef;fill-opacity:1;stroke-width:0.264583"
|
||||
x="76.365395"
|
||||
y="185.09686">Their Fediversity</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:10.5833px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="240.13141"
|
||||
y="47.2188"
|
||||
id="text171688"><tspan
|
||||
id="tspan171686"
|
||||
style="stroke-width:0.264583"
|
||||
x="240.13141"
|
||||
y="47.2188" /></text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 27 KiB |
BIN
MarCom/Presentations/assets/link-to-nlnet-grants.png
Normal file
After Width: | Height: | Size: 9.4 KiB |
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 9.1 KiB |
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 9.4 KiB |
BIN
MarCom/Presentations/assets/mailto-apply-as-tester.png
Normal file
After Width: | Height: | Size: 12 KiB |
212
MarCom/Presentations/assets/target-audiences.svg
Normal file
|
@ -0,0 +1,212 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
width="310.41714mm"
|
||||
height="181.78426mm"
|
||||
viewBox="0 0 310.41714 181.78426"
|
||||
version="1.1"
|
||||
id="svg5"
|
||||
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
|
||||
sodipodi:docname="target-audiences.svg"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview7"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:document-units="mm"
|
||||
showgrid="false"
|
||||
inkscape:zoom="1.087256"
|
||||
inkscape:cx="746.83421"
|
||||
inkscape:cy="541.73072"
|
||||
inkscape:window-width="2556"
|
||||
inkscape:window-height="1391"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer1" />
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lstart"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lstart"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(0.8,0,0,0.8,10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path50199" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="marker50471"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path50469" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path50202" />
|
||||
</marker>
|
||||
</defs>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(39.534213,-39.833809)">
|
||||
<g
|
||||
id="g1060">
|
||||
<path
|
||||
style="fill:#2541b2;fill-opacity:1;stroke-width:3.77953;stop-color:#000000"
|
||||
id="path846"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="105.30602"
|
||||
sodipodi:cy="130.72594"
|
||||
sodipodi:rx="90.892128"
|
||||
sodipodi:ry="90.892128"
|
||||
sodipodi:start="0.52359878"
|
||||
sodipodi:end="0.50870414"
|
||||
sodipodi:open="true"
|
||||
sodipodi:arc-type="arc"
|
||||
d="M 184.02091,176.172 A 90.892128,90.892128 0 0 1 60.15338,209.60951 90.892128,90.892128 0 0 1 26.254866,85.867342 90.892128,90.892128 0 0 1 149.86995,51.50829 90.892128,90.892128 0 0 1 184.68906,174.99457" />
|
||||
<path
|
||||
style="fill:#ff6e00;fill-opacity:1;stroke-width:4.84651;stop-color:#000000"
|
||||
id="path846-6"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="105.30602"
|
||||
sodipodi:cy="130.72594"
|
||||
sodipodi:rx="70.881783"
|
||||
sodipodi:ry="70.881783"
|
||||
sodipodi:start="0.52359878"
|
||||
sodipodi:end="0.50870414"
|
||||
sodipodi:open="true"
|
||||
sodipodi:arc-type="arc"
|
||||
d="M 166.69145,166.16683 A 70.881783,70.881783 0 0 1 70.093955,192.24291 70.881783,70.881783 0 0 1 43.658364,95.743181 70.881783,70.881783 0 0 1 140.05898,68.948442 70.881783,70.881783 0 0 1 167.2125,165.24862" />
|
||||
<path
|
||||
style="fill:#efedef;fill-opacity:1;stroke-width:6.53412;stop-color:#000000"
|
||||
id="path846-6-7"
|
||||
sodipodi:type="arc"
|
||||
sodipodi:cx="105.30602"
|
||||
sodipodi:cy="130.72594"
|
||||
sodipodi:rx="52.574703"
|
||||
sodipodi:ry="52.574703"
|
||||
sodipodi:start="0.52359878"
|
||||
sodipodi:end="0.50870414"
|
||||
sodipodi:open="true"
|
||||
sodipodi:arc-type="arc"
|
||||
d="M 150.83705,157.01329 A 52.574703,52.574703 0 0 1 79.188395,176.35453 52.574703,52.574703 0 0 1 59.580488,104.7784 52.574703,52.574703 0 0 1 131.08312,84.9041 a 52.574703,52.574703 0 0 1 20.14041,71.42813" />
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#222222;fill-opacity:1;stroke:none;stroke-width:0.264583"
|
||||
x="77.416451"
|
||||
y="130.43488"
|
||||
id="text3315"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan3313"
|
||||
style="font-style:normal;font-variant:normal;font-weight:600;font-stretch:normal;font-family:Manrope;-inkscape-font-specification:'Manrope Semi-Bold';fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="77.416451"
|
||||
y="130.43488"
|
||||
transform="translate(-1.140243)">Fediversity</tspan></text>
|
||||
<g
|
||||
id="path9760-3">
|
||||
<path
|
||||
style="color:#000000;fill:#ff6e00;-inkscape-stroke:none"
|
||||
d="M -39.534213,135.33222 H 33.311962"
|
||||
id="path65072" />
|
||||
<path
|
||||
style="color:#000000;fill:#ff6e00;-inkscape-stroke:none"
|
||||
d="m -39.535156,134.83203 v 1 H 33.3125 v -1 z"
|
||||
id="path65074" />
|
||||
<g
|
||||
id="g65062">
|
||||
<g
|
||||
id="path65064">
|
||||
<path
|
||||
style="color:#000000;fill:#ff6e00;fill-rule:evenodd;stroke-width:0.8pt;-inkscape-stroke:none"
|
||||
d="m 23.311962,135.33222 -4,4 14,-4 -14,-4 z"
|
||||
id="path65068" />
|
||||
<path
|
||||
style="color:#000000;fill:#ff6e00;fill-rule:evenodd;-inkscape-stroke:none"
|
||||
d="m 17.478516,130.25391 5.080078,5.07812 -5.080078,5.07813 17.77539,-5.07813 z m 3.667968,2.1582 10.22461,2.91992 -10.228516,2.92383 2.923828,-2.92383 -0.376953,-0.37695 z"
|
||||
id="path65070" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<g
|
||||
id="path9760-3-5">
|
||||
<path
|
||||
style="color:#000000;fill:#2541b2;-inkscape-stroke:none"
|
||||
d="m 197.23252,135.25414 h 73.6504"
|
||||
id="path65088" />
|
||||
<path
|
||||
style="color:#000000;fill:#2541b2;-inkscape-stroke:none"
|
||||
d="m 197.23242,134.75391 v 1 h 73.65039 v -1 z"
|
||||
id="path65090" />
|
||||
<g
|
||||
id="g65078">
|
||||
<g
|
||||
id="path65080">
|
||||
<path
|
||||
style="color:#000000;fill:#2541b2;fill-rule:evenodd;stroke-width:0.8pt;-inkscape-stroke:none"
|
||||
d="m 207.23252,135.25414 4,-4 -14,4 14,4 z"
|
||||
id="path65084" />
|
||||
<path
|
||||
style="color:#000000;fill:#2541b2;fill-rule:evenodd;-inkscape-stroke:none"
|
||||
d="m 213.06445,130.17578 -17.77343,5.07813 17.77343,5.07812 -5.07812,-5.07812 z m -3.66601,2.1582 -2.91992,2.91993 0.37695,0.37695 2.54687,2.54687 -10.22851,-2.92382 z"
|
||||
id="path65086" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:10.5833px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="-40.275043"
|
||||
y="130.43488"
|
||||
id="text43515"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan43513"
|
||||
style="fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="-40.275043"
|
||||
y="130.43488">Providers</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:10.5833px;line-height:1.25;font-family:Manrope;-inkscape-font-specification:Manrope;stroke-width:0.264583"
|
||||
x="242.98009"
|
||||
y="130.38196"
|
||||
id="text46525"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan46523"
|
||||
style="fill:#222222;fill-opacity:1;stroke-width:0.264583"
|
||||
x="242.98009"
|
||||
y="130.38196">Users</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 7.8 KiB |
3
architecture-docs/.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
*.err
|
||||
*.odt
|
||||
.~lock*
|
BIN
architecture-docs/2024-01-25-proxmox-architecture.pdf
Normal file
Before Width: | Height: | Size: 3.7 MiB After Width: | Height: | Size: 3.7 MiB |
76
architecture-docs/2025-03-05 design meeting.md
Normal file
|
@ -0,0 +1,76 @@
|
|||
# fediversity design meeting 2025-03-12
|
||||
|
||||
present: slik (thijs, tiemon) + procolix (lois, kevin, kiara)
|
||||
|
||||
- thijs: what is the project called and who does what?
|
||||
- thijs: how do you see front-end dev for this?
|
||||
- kiara: we don't need you to do an implementation using some front-end framework - just the design will do.
|
||||
- thijs: what will be the concrete deliverable then for the demo?
|
||||
- kiara: if for fediforum we do not have the design implemented yet that is acceptable.
|
||||
- thijs: maybe we will make it in time.
|
||||
- tiemon: sounds ambitious.
|
||||
- thijs: should we deliver code or would an interactive design do?
|
||||
- kiara: an interactive design will do.
|
||||
- kiara: could this handle animations too?
|
||||
- tiemon: yes.
|
||||
- thijs: could you explain some terminology here like fediverse, protagio, providers, panel?
|
||||
- kevin: *explains*
|
||||
- thijs: which applications will you do, and how do these get added?
|
||||
- kiara: mastodon, pixelfed and peertube at least.
|
||||
- kevin: *explains about fediversity sub-grants*
|
||||
- thijs: who will select what applications get added then?
|
||||
- kiara: formally the Open Internet Discourse Foundation.
|
||||
- thijs: are there set criteria for this? are these political decisions?
|
||||
- kiara: fediversity is open-source, tho as maintainers we will eventually need to make decisions take into account our capacity given the maintenance work involved.
|
||||
- thijs: how might hosts, users, workspaces and accounts relate?
|
||||
- kiara: we will offer SSO across applications.
|
||||
- thijs: what if people say use this from both professional as well as other roles? can they then have workspaces representing their accounts at different hosts?
|
||||
- kiara: i envision the web client as agnostic to orchestration capabilities, so a client application logged in to accounts at different hosts thru e.g. workspaces could technically be possible, tho i would not see this as significantly affecting our design currently.
|
||||
- thijs: how about a host admin panel to e.g. restrict offered applications? or for hosts' accountants?
|
||||
- kiara: hosts consist of sysadmins, so a config file may currently suffice for them as a user interface.
|
||||
- kevin: hosts also already have their own client-facing front-ends.
|
||||
- thijs: cli for now, so for the design focus on the operator panel? ok.
|
||||
- thijs: *asking about terminology*
|
||||
- *kevin + kiara explain*
|
||||
- thijs: do you want to offer a federated UX?
|
||||
- kevin: the deployed applications federate already.
|
||||
- thijs: applications tend to offer support buttons. who is in charge of offering this support, operators, hosts or you?
|
||||
- kiara: the operator, afaik.
|
||||
- kevin: we might direct users to the application manuals.
|
||||
- thijs: will fedipanel come with a knowledge base aimed at the operators?
|
||||
- kiara: we could link to a static one deployed from our end.
|
||||
- kevin: probably better to include this in the panel deployment.
|
||||
- thijs: sure, let me know.
|
||||
- thijs: we can show what we had so far in design program figma.
|
||||
- tiemon: you can navigate and interact with the designs, and they can generate html as well.
|
||||
- thijs: we like to work with job stories, so not just user stories like 'as a ...' but also including 'so that ...'.
|
||||
- kiara: great, so do we.
|
||||
- thijs: we can show some UIs we like for reference.
|
||||
- thijs: you won't offer file management from the panel, right?
|
||||
- kevin: correct.
|
||||
- kiara: fyi our deployment is somewhat big-bang still, rather than say configure mastodon -> deploy -> configure pixelfed -> deploy - we can not yet enqueue such syncs.
|
||||
- thijs: where can we find your application?
|
||||
- kevin: the code is at <https://git.fediversity.eu>, but we also have a recent demo video.
|
||||
- tiemon: we saw that one, yeah.
|
||||
- thijs: here is a wireframe so we can align on the chrome (= UI parts that are always there).
|
||||
- kiara: we do not yet have workspaces, but multiple deployments per user could become an option.
|
||||
- thijs: how about an admin interface to manage users?
|
||||
- kiara: we will have to go thru hosts' SSO because of billing.
|
||||
- kevin: yes this will go thru LDAP.
|
||||
- thijs: how about showing stats about e.g. numbers of mastodon users?
|
||||
- kiara: applications should already handle stuff specific to them, so we don't plan to do this.
|
||||
- thijs: how about application settings (generic vs application-specific)?
|
||||
- kiara: generic ones will apply to say configure VM resources or sub-domains, tho otherwise most should be application-specific.
|
||||
- thijs: no auto-scaling?
|
||||
- kiara: not for now.
|
||||
- thijs: how about a billing interface?
|
||||
- kevin: hosts would use their existing ones.
|
||||
- tiemon: how is pricing determined then?
|
||||
- kiara: hosts may set this based on the usage info we will provide.
|
||||
- thijs:
|
||||
- font: manrope?
|
||||
- kiara: looks pretty.
|
||||
- icon sets, selected by open-source / pretty / ...:
|
||||
- [iconoir](https://iconoir.com/)?
|
||||
- [phosphor](https://phosphoricons.com/)?
|
||||
- kevin+lois+kiara: this one looks prettier.
|
76
architecture-docs/2025-03-31-ssh-strategy.md
Normal file
|
@ -0,0 +1,76 @@
|
|||
# ssh access strategy
|
||||
|
||||
some notes on our current status, challenges and ways to address these
|
||||
|
||||
## questions
|
||||
|
||||
- [x] which keys do we accept on which users on which machines (infra/test)?
|
||||
- [x] when deploying (by nixops/tf, machines infra/test, separate/local/deployed), which user and key do we pass?
|
||||
|
||||
## background
|
||||
|
||||
<!-- - manual setup kevin -->
|
||||
<!-- - `nixos-24.05-minimal-x86_64.iso` -->
|
||||
<!-- - `users.users.procolix.openssh.authorizedKeys.keys` (procolix SSH jump nodes) -->
|
||||
- manual setup @niols
|
||||
- sync machines' `/etc/ssh/ssh_host_ed25519_key.pub` to:
|
||||
- `infra/test-machines/testxx/ssh_host_ed25519_key` (test machines)
|
||||
- `keys/systems/fedixxx.pub` (infra)
|
||||
|
||||
## challenges
|
||||
|
||||
- TF messing up non-root SSH access (`/etc/ssh/authorized_keys.d` absent)
|
||||
- TF not having a clear SSH strategy for production
|
||||
- machine key? how to select the right user/key? how does nixops handle this?
|
||||
- testing the panel locally not having a clear SSH strategy with password-protected SSH keys
|
||||
|
||||
## strategy
|
||||
|
||||
### which keys to accept on which users on which machines
|
||||
|
||||
- fedixxx/test0x
|
||||
<!-- - procolix -->
|
||||
<!-- - procolix jump nodes -->
|
||||
- root
|
||||
- fediversity team's individual keys
|
||||
- personal
|
||||
- personal (protected)
|
||||
- test0x: a passwordless wheel account (personal accounts? root too?) should allow also an unprotected ssh key (personal?)
|
||||
|
||||
### how to use SSH on deployment
|
||||
|
||||
#### user
|
||||
|
||||
(note that `desired` columns are focused on the scope of #76, so keeping e.g. security considerations out of scope.)
|
||||
|
||||
| context | current | desired |
|
||||
|-|-|-|
|
||||
| nixops infra | root | root |
|
||||
| nixops local | root | root |
|
||||
| protected? nixops panel local | root | root |
|
||||
| nixops panel deployed | root | root |
|
||||
| tf local | personal (hard-coded) | root |
|
||||
| protected? tf panel local | personal (hard-coded) | root |
|
||||
| tf panel deployed | personal (hard-coded) | root |
|
||||
| tf infra | root | root |
|
||||
|
||||
#### key
|
||||
|
||||
| context | current | desired |
|
||||
|-|-|-|
|
||||
| nixops infra | personal (thru ssh agent) | (protected) personal key |
|
||||
| nixops local | personal (thru ssh agent) | personal |
|
||||
| nixops panel local | personal (thru ssh agent, failed to handle password protection) | (unprotected) personal key |
|
||||
| nixops panel deployed | machine key (thru ssh agent) | machine key |
|
||||
| tf local | personal (thru ssh agent, password can be passed explicitly) | personal (unprotected, or if protected by passing it explicitly) |
|
||||
| tf panel local | personal (thru ssh agent, password can be passed explicitly) | personal (unprotected, or if protected by passing it explicitly) |
|
||||
| tf panel deployed | machine key (thru ssh agent) | machine key |
|
||||
| tf infra | n/a | (protected) personal key (with password propagated, somehow) |
|
||||
|
||||
## outcomes
|
||||
|
||||
added sub-tasks to:
|
||||
|
||||
- #272
|
||||
- #76
|
||||
- #274
|
49
architecture-docs/2025-04-08-high-level-spec.md
Normal file
|
@ -0,0 +1,49 @@
|
|||
# fediversity product specification
|
||||
|
||||
## stack
|
||||
|
||||
### user-facing
|
||||
|
||||
- [fediverse](https://www.figma.com/proto/AZbFAac2Xjxs3q1H3orXzO/Fedi-Design-system?page-id=97%3A1682&node-id=97-2257)
|
||||
- ...
|
||||
- prioritize efforts taking in mind
|
||||
- added value to operator autonomy
|
||||
- strategic relevance to counter-balance big tech
|
||||
- demand
|
||||
- nix package/service maturity
|
||||
- may involve relation with application devs to:
|
||||
- [upstream](https://git.fediversity.eu/Fediversity/Fediversity/issues/127#issuecomment-5669) nix package
|
||||
- ensure architecture takes immutable build/storage in mind
|
||||
|
||||
### under the hood
|
||||
|
||||
- nixos
|
||||
- [opentofu](https://opentofu.org/)
|
||||
- passes relevant info on to nixos config wrapper
|
||||
- VM hypervisor: [proxmox](https://proxmox.com/)
|
||||
- storage: [garage](https://garagehq.deuxfleurs.fr/)
|
||||
- backups / data portability: [borgmatic](https://github.com/borgmatic-collective/borgmatic)?
|
||||
- data interoperability: [json-schema](https://json-schema.org/)
|
||||
|
||||
## component architecture
|
||||
|
||||
- orchestration module
|
||||
- application service modules (nixos): templates providing sane defaults and [unified interface](https://nlnet.nl/project/SelfHostBlocks/)
|
||||
- deployment module (opentofu)
|
||||
- deployment UIs
|
||||
- [reference imlementation](https://git.fediversity.eu/Fediversity/Fediversity)
|
||||
- hosting panel: [fediversity integration](https://www.figma.com/proto/AZbFAac2Xjxs3q1H3orXzO/Fedi-Design-system?page-id=97%3A1682&node-id=97-2284) TODO
|
||||
- [front](https://git.fediversity.eu/Fediversity/protagio.nl-frontend)
|
||||
- back
|
||||
- [existing](https://git.fediversity.eu/Fediversity/myprotagio-api)
|
||||
- rewrite?
|
||||
- allow for alternate setups
|
||||
- e.g. client doing orchestration
|
||||
- [infra](https://git.fediversity.eu/Fediversity/meta/media/branch/main/architecture-docs/architecture.png)
|
||||
|
||||
### feature-specific architectural notes
|
||||
|
||||
- [decouple version](https://git.fediversity.eu/Fediversity/Fediversity/issues/304)
|
||||
- [validate component input](https://git.fediversity.eu/Fediversity/Fediversity/issues/195)
|
||||
- [migrate to different host](https://git.fediversity.eu/Fediversity/Fediversity/issues/100) (+ sub-tickets)
|
||||
- [breaking changes](https://git.fediversity.eu/Fediversity/Fediversity/issues/214)
|
|
@ -0,0 +1,34 @@
|
|||
// usage: nix-shell -p graphviz --command 'dot -T png -o architecture.png architecture.dot'
|
||||
|
||||
digraph FediversityArchitecture {
|
||||
graph[fontname="Liberation Sans"];
|
||||
node[shape=box, style="rounded", fontname="Liberation Sans"];
|
||||
|
||||
subgraph cluster_frontends {
|
||||
label="front-ends";
|
||||
|
||||
nix[label="NixOS module"];
|
||||
tofu[label="OpenTofu CLI"];
|
||||
panel[label="FediPanel"];
|
||||
protagio[label="NixPanel"];
|
||||
}
|
||||
|
||||
nix -> core;
|
||||
tofu -> core;
|
||||
panel -> core;
|
||||
protagio -> core;
|
||||
|
||||
core[label="fediversity-core"];
|
||||
|
||||
subgraph cluster_hypervisor {
|
||||
label="proxmox";
|
||||
|
||||
nextcloud;
|
||||
vaultwarden;
|
||||
dots[label="..."];
|
||||
}
|
||||
|
||||
core -> nextcloud;
|
||||
core -> vaultwarden;
|
||||
core -> dots;
|
||||
}
|
BIN
architecture-docs/2025-05-architecture-replaced-by-mermaid.png
Normal file
After Width: | Height: | Size: 27 KiB |
177
architecture-docs/architecture.md
Normal file
|
@ -0,0 +1,177 @@
|
|||
# Fediversity Implementation and planning
|
||||
|
||||
## Actors
|
||||
|
||||
- Maintainers
|
||||
|
||||
The group developing and maintaining this project.
|
||||
We are creating the deployment workflows and service configurations, and curate changes proposed by contributors.
|
||||
|
||||
- Developers
|
||||
|
||||
People with the technical background to engage with our work, and may contribute back, build on top of, remix, or feel inspired by our work to create something better.
|
||||
|
||||
- Hosting provider
|
||||
|
||||
They provide and maintain the physical infrastructure, and run the software in this repository, through which operators interact with their deployments.
|
||||
Hosting providers are technical administrators for these deployments, ensuring availability and appropriate performance.
|
||||
|
||||
We target small- to medium-scale hosting providers with 20+ physical machines.
|
||||
|
||||
- Operator
|
||||
|
||||
They select the applications they want to run.
|
||||
They don't need to own hardware or deal with operations.
|
||||
Operators administer their applications in a non-technical fashion, e.g. as moderators.
|
||||
They pay the hosting provider for registering a domain name, maintaining physical resources, and monitoring deployments.
|
||||
|
||||
- User
|
||||
|
||||
They are individuals using applications run by the operators, and e.g. post content.
|
||||
|
||||
## Glossary
|
||||
|
||||
- [Fediverse](https://en.wikipedia.org/wiki/Fediverse)
|
||||
|
||||
A collection of social networking applications that can communicate with each other using a common protocol.
|
||||
|
||||
- Application
|
||||
|
||||
User-facing software (e.g. from Fediverse) configured by operators and used by users.
|
||||
|
||||
- Configuration
|
||||
|
||||
A collection of settings for a piece of software.
|
||||
|
||||
> Example: Configurations are deployed to VMs.
|
||||
|
||||
- Provision
|
||||
|
||||
Make a resource, such as a virtual machine, available for use.
|
||||
|
||||
- Deploy
|
||||
|
||||
Put software onto computers.
|
||||
The software includes technical configuration that links software components.
|
||||
|
||||
- Migrate
|
||||
|
||||
Move service configurations and deployments (including user data) from one hosting provider to another.
|
||||
|
||||
- Run-time backend
|
||||
|
||||
A type of digital environment one can run operating systems such as NixOS on, e.g. bare-metal, a hypervisor, or a container run-time.
|
||||
|
||||
- Provider
|
||||
|
||||
An interface against which we deploy to a run-time backend.
|
||||
|
||||
- Provider configuration
|
||||
|
||||
A configuration that specifies resources made available to deploy to and how to access these.
|
||||
|
||||
- Resource
|
||||
|
||||
A resource is any external entity that we need for our set-up
|
||||
This may include e.g. hypervisors, file systems, DNS entries, VMs or object storage instances.
|
||||
|
||||
## Technologies used
|
||||
|
||||
This is an incomplete and evolving list of core components planned to be used in this project.
|
||||
It will grow to support more advanced use cases as the framework matures.
|
||||
|
||||
### Nix and [NixOS](https://nixos.org/)
|
||||
|
||||
NixOS is a Linux distribution with a [vibrant](https://repology.org/repositories/graphs), [reproducible](https://reproducible.nixos.org/) and [security-conscious](https://tracker.security.nixos.org/) ecosystem.
|
||||
As such, we see NixOS as the only viable way to reliably create a reproducible outcome for all the work we create.
|
||||
|
||||
Considered alternatives include:
|
||||
|
||||
- containers: do not by themselves offer the needed reproducibility
|
||||
|
||||
### [Proxmox](https://proxmox.com/)
|
||||
|
||||
Proxmox is a hypervisor, allowing us to create VMs for our applications while adhering to our goal of preventing lock-in.
|
||||
In addition, it has been [packaged for Nix](https://github.com/SaumonNet/proxmox-nixos) as well, simplifying our requirements to users setting up our software.
|
||||
|
||||
Considered alternatives include:
|
||||
|
||||
- OpenNebula: seemed less mature
|
||||
|
||||
### [Garage](https://garagehq.deuxfleurs.fr/)
|
||||
|
||||
Garage is a distributed object storage service.
|
||||
For compatibility with existing clients, it reuses the protocol of Amazon S3.
|
||||
|
||||
Considered alternatives include:
|
||||
|
||||
- file storage: less centralized for backups
|
||||
|
||||
## Architecture
|
||||
|
||||
At the core of Fediversity lies a NixOS configuration module for a set of selected applications.
|
||||
|
||||
- We will enable using it with **different run-time environments**, such as a single NixOS machine or a ProxmoX hypervisor.
|
||||
- Depending on the targeted run-time environment, deployment may involve [NixOps4](https://nixops.dev) or [OpenTofu](https://opentofu.org/) as an **orchestrator**.
|
||||
- We further provide demo front-end for **configuring applications** and configuring **run-time backends**.
|
||||
|
||||
To ensure reproducibility, all software will be packaged with Nix.
|
||||
|
||||
To reach our goals, we aim to implement the following interactions.
|
||||
|
||||
The used legend is as follows:
|
||||
|
||||
- Circle: [actor](#actors)
|
||||
- Angled box: type
|
||||
- Rectangle: value
|
||||
- Rounded box: function
|
||||
- Diamond: state
|
||||
- Arrow: points towards dependant
|
||||
|
||||
For further info on components see the [glossary](#glossary).
|
||||
|
||||
<!--  -->
|
||||
{ width=100% }
|
||||
|
||||
### Configuration data flow
|
||||
|
||||
This data flow diagram refines how a deployment is obtained from an operator's application configuration and a hosting provider's runtime setup.
|
||||
|
||||
An **application module** specifies operator-facing **application options**, and a **configuration mapping** which determines the application's underlying implementation. Application modules can be supplied by external developers, which would curate application modules against that interface.
|
||||
|
||||
For its runtime setup, a hosting provider has to supply a **resource mapping** that would take their self-declared **provider configuration** (which determines the *available* resources) and the output of an application's resource mapping (which determine resource *requirements*) and produce a **configuration**. This configuration ships with a mechanism to be *deployed* to the infrastructure (which is described by the environment, and features the required resources), where it will accumulate **application state**.
|
||||
|
||||
Applications and runtime environments thus interface through **resources**, the properties of which are curated by Fediversity maintainers.
|
||||
|
||||
<!--  -->
|
||||
{ width=100% }
|
||||
|
||||
|
||||
### Service portability
|
||||
|
||||
The process of migrating one's applications to a different host encompasses:
|
||||
|
||||
1. Domain registration: involves a (manual) update of DNS records at the registrar
|
||||
1. Deploy applications: using the reproducible configuration module
|
||||
1. Copy application data:
|
||||
- Run back-up/restore scripts
|
||||
- Run application-specific migration scripts, to e.g. reconfigure connections/URLs
|
||||
|
||||
### Data model
|
||||
|
||||
Whereas the bulk of our configuration logic is covered in the configuration schema, [implemented here](https://git.fediversity.eu/Fediversity/Fediversity/src/branch/main/deployment/data-model.nix) and [tested here](https://git.fediversity.eu/Fediversity/Fediversity/src/branch/main/deployment/data-model-test.nix), our reference front-end applications will store data.
|
||||
The data model design for the configuration front-end needed support the desired functionality is as follows, using the crow's foot notation to denote cardinality:
|
||||
|
||||
<!--  -->
|
||||
{ height=100% }
|
||||
|
||||
### Host architecture
|
||||
|
||||
Whereas the core abstraction in Fediversity is a NixOS configuration module, a more full-fledged example architecture of the web host use-case we aim to support as part of our exploitation would be as follows, where virtual machines in question run Fediversity to offer our selected applications:
|
||||
|
||||
{ width=100% }
|
||||
|
||||
### CI / CD
|
||||
|
||||
In our simplest set-up, continuous integration and continuous deployment pipelines are handled using Forgejo's [built-in runner](https://code.forgejo.org/forgejo/runner), with relevant secrets handled using [Forgejo secrets](https://forgejo.org/docs/latest/developer/secrets/). Jobs we handle using CI include linting, formatting, testing, and a periodic life-cycle management job to keep our dependencies up-to-date.
|
||||
In a future iteration, we may make use of [Gerrit](https://gerrit.googlesource.com/) to better manage our review process for incoming merge requests.
|
Before Width: | Height: | Size: 74 KiB |
74
architecture-docs/configuration-to-deployment-dataflow.md
Normal file
|
@ -0,0 +1,74 @@
|
|||
# 2025-06-24 Fediversity configuration data flow
|
||||
|
||||
This data flow diagram refines the [global architecture diagram](./interactions-migration.mmd) with respect to how a deployment is obtained from an operator's application configuration and a hosting provider's runtime setup.
|
||||
|
||||
## Legend
|
||||
|
||||
- Circle: actor
|
||||
- Angled box: type
|
||||
- Rectangle: value
|
||||
- Rounded box: function
|
||||
- Diamond: state
|
||||
- Arrow: points towards dependant
|
||||
|
||||
## Description
|
||||
|
||||
An **application module** specifies operator-facing **application options**, and a **resource mapping** which determines the application's underlying implementation in terms of which resources it requires to be deployed. Application modules can be supplied by external **contributors**, which would package applications against that interface.
|
||||
|
||||
For its **runtime environment**, a **hosting provider** has to supply a **policy mapping** that would take their self-declared **resource configuration** (which determines *available* resources, i.e. a description of the infrastructure on which to run the applications) and the output of an application's resource mapping (which determines resource *requirements*) and produce the description of a **deployment**.
|
||||
|
||||
An **operator** can supply an **application configuration** and request the hosting provider to let the resulting deployment take effect, such that it will accumulate **application state**, which can later be migrated to other hosting providers.
|
||||
|
||||
Applications and runtime environments thus interface through **resources**, the properties of which are curated by Fediversity **maintainers**.
|
||||
|
||||
|
||||
```mermaid
|
||||
flowchart
|
||||
|
||||
subgraph configuration
|
||||
application-config
|
||||
end
|
||||
subgraph resource[resource module]
|
||||
resource-options
|
||||
provider-options
|
||||
end
|
||||
subgraph application[application module]
|
||||
application-options{{application-options}} --> application-config
|
||||
application-config --> config-mapping
|
||||
resource-options{{consumer-options}} --> config-mapping
|
||||
config-mapping(resource-mapping)
|
||||
end
|
||||
subgraph fediversity[runtime-environment]
|
||||
config-mapping -->|required resources| resource-mapping(policy-mapping)
|
||||
|
||||
provider-options{{resource-options}} --> resource-config --> |available resources| resource-mapping -->|configured resources| deployment[deployment]
|
||||
deployment --> |deploy| state{application state}
|
||||
|
||||
end
|
||||
|
||||
maintainer((maintainer)) -->|curates| resource
|
||||
|
||||
|
||||
contributor((contributor)) -->|packages| application
|
||||
operator((operator)) -->|enters| configuration
|
||||
|
||||
|
||||
hosting-provider((hosting provider)) -->|maintains| fediversity
|
||||
|
||||
```
|
||||
|
||||
## Discussion
|
||||
|
||||
Decoupling of operator-facing application configuration and resource use allows for portability at the infrastructure level: hosting providers determine how applications are deployed to available resources through policies which are agnostic to applications. Additionally it allows hosting providers to isolate applications from each other depending on their deployment model, leveraging the entire toolkit provided by the Nix ecosystem. This puts single-machine and cluster deployments on equal footing, since policies are simply Nix language functions.
|
||||
|
||||
At first glance this is an increase in complexity as opposed to configuring NixOS directly, since it adds a layer of indirection. It also requries Fediversity maintainers to declare resource types for use by application packagers and hosting providers. But the layering drastically simplifies application composition over what NixOS can currently offer, frees the hosting provider to choose how to implement required services, and enables security-conscious deployments at very fine granularity.
|
||||
|
||||
## Next steps
|
||||
|
||||
- Versioning: Each of the components can change; model all supported interactions such that deployments will always be correct.
|
||||
|
||||
Primarily, both applications and runtime environments depend on the resource API, and need to be versioned against it. Application packages can be updated on top of that, and will need to provide facilities to migrate between both application versions and resource API versions, both in terms of configurations and application state.
|
||||
|
||||
- Provider migrations: Prototype an application-agnostic migration workflow.
|
||||
|
||||
Since state migration is application-specific, application packages will need to ship with instructions for how to move their data between hosting providers, also taking version migrations into account. This will likely require extending the resource API with ways to express where state is located, and give hosting providers the tools to expose interfaces though which migrations will take place.
|
26
architecture-docs/data-model-requirements.md
Normal file
|
@ -0,0 +1,26 @@
|
|||
# migration data model requirements
|
||||
|
||||
Given:
|
||||
|
||||
- no change in control of domains;
|
||||
- two Fediversity set-ups (to be provided by ProcoliX) with a run-time environment such as ProxmoX, for an initial test using the same version;
|
||||
- a Fediversity configuration of at least a single application (to start)
|
||||
|
||||
Our data model must describe a migration:
|
||||
|
||||
- specifying [entity relations](https://mermaid.js.org/syntax/entityRelationshipDiagram.html#relationship-syntax) e.g. many-to-many;
|
||||
- migrating both deployed and staged configurations;
|
||||
- deploying of applications using the same versions;
|
||||
- retaining relevant application state;
|
||||
- handling of application-specific migration logic, such as to rewrite URLs as needed;
|
||||
|
||||
Tests:
|
||||
|
||||
1.
|
||||
A Fediversity user may wish to migrate their Fediversity set-up between monolithic and distributed configurations.
|
||||
In an admin screen they can get their configuration and data for transfer.
|
||||
Using this they may migrate to the desired configuration.
|
||||
1.
|
||||
At any time a Fediversity user may wish to migrate their Fediversity set-up.
|
||||
They can go to an admin screen where they can get their configuration and data for transfer.
|
||||
This data can be provided to a new service provider where they will be up-and-running again, with minimal downtime.
|
25
architecture-docs/entity-relations.mmd
Normal file
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
title: Fediversity migration entity relations
|
||||
---
|
||||
erDiagram
|
||||
setup["Fediversity setup"]
|
||||
env["run-time environment"]
|
||||
deployed["deployed configuration"]
|
||||
staged["staged configuration"]
|
||||
token["deployment token"]
|
||||
script["migration script"]
|
||||
|
||||
setup }o--o{ env : offers
|
||||
setup ||--o{ operator : serves
|
||||
operator ||--o{ domain : owns
|
||||
deployment }|--|| domain : uses
|
||||
operator ||--o{ deployment : has
|
||||
deployment ||--|{ token : generates
|
||||
deployment ||--o| deployed : has
|
||||
deployment ||--|| staged : has
|
||||
deployed |o--|| staged : compares
|
||||
deployed ||--|{ application : describes
|
||||
application ||--o{ version : follows
|
||||
application ||--o{ script : runs
|
||||
deployed }|--o{ version : follows
|
||||
script }o--|| token : uses
|
BIN
architecture-docs/entity-relations.png
Normal file
After Width: | Height: | Size: 164 KiB |
1
architecture-docs/entity-relations.svg
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
architecture-docs/host-architecture.png
Normal file
After Width: | Height: | Size: 73 KiB |
|
@ -1,4 +1,5 @@
|
|||
@startuml
|
||||
skinparam backgroundcolor transparent
|
||||
|
||||
package Management {
|
||||
object "Nix-Panel" as A {
|
||||
|
@ -12,7 +13,7 @@ package Management {
|
|||
Secrets
|
||||
}
|
||||
object "**Orchestrator**" as Orch {
|
||||
NixOps
|
||||
Terraform
|
||||
}
|
||||
object "**Identity Management**" as AAA {
|
||||
Authentication
|
||||
|
@ -49,12 +50,10 @@ package Virtualization {
|
|||
Application C
|
||||
}
|
||||
map "**Application options**" as App {
|
||||
Edumeet => Matrix
|
||||
Vaultwarden => Matrix
|
||||
NextCloud => Pixelfed
|
||||
Webmail => Peertube
|
||||
Hedgehoc => Mastodon
|
||||
Project planning => Owncast
|
||||
Office => Castopod
|
||||
Forgejo => Mastodon
|
||||
}
|
||||
}
|
||||
|
30
architecture-docs/interactions-fediversity.mmd
Normal file
|
@ -0,0 +1,30 @@
|
|||
flowchart
|
||||
|
||||
subgraph configuration
|
||||
application-config
|
||||
end
|
||||
subgraph resource[resource module]
|
||||
resource-options
|
||||
provider-options
|
||||
end
|
||||
subgraph application[application module]
|
||||
application-options{{application-options}} --> application-config
|
||||
application-config --> config-mapping
|
||||
resource-options{{resource-options}} --> config-mapping
|
||||
config-mapping(config-mapping)
|
||||
end
|
||||
subgraph fediversity[fediversity setup]
|
||||
config-mapping -->|required resources| resource-mapping(resource-mapping)
|
||||
|
||||
provider-options{{provider-options}} --> provider-config --> |available resources| resource-mapping -->|configuration| deployment{deployment}
|
||||
|
||||
end
|
||||
|
||||
maintainer((maintainer)) -->|curates| resource
|
||||
|
||||
|
||||
contributor((developer)) -->|curates| application
|
||||
operator((operator)) -->|enters| configuration
|
||||
|
||||
|
||||
hosting-provider((hosting provider)) -->|maintains| fediversity
|
BIN
architecture-docs/interactions-fediversity.png
Normal file
After Width: | Height: | Size: 50 KiB |
1
architecture-docs/interactions-fediversity.svg
Normal file
After Width: | Height: | Size: 22 KiB |
47
architecture-docs/interactions-migration.mmd
Normal file
|
@ -0,0 +1,47 @@
|
|||
flowchart
|
||||
|
||||
user((user)) --> |use| deployment
|
||||
|
||||
configuration1 -->|deploy| deployed1
|
||||
maintainers --> |maintain| fediversity
|
||||
|
||||
fediversity --> |update| provider1
|
||||
subgraph provider1["fediversity setup A"]
|
||||
subgraph configurations1[configurations]
|
||||
configuration1[staged configuration]
|
||||
configuration1 --> |update| configuration1
|
||||
deployed1[deployed configuration]
|
||||
end
|
||||
deployed1 --> |describe| deployment
|
||||
provider-config[runtime config] --> |describe| host
|
||||
provider-config --> |implement runtime interfaces| configurations1
|
||||
subgraph host[runtime environment]
|
||||
deployment[applications]
|
||||
state{state}
|
||||
end
|
||||
end
|
||||
|
||||
deployment --> |store| state
|
||||
|
||||
operator((operator)) --> |change| configuration1
|
||||
|
||||
subgraph provider2["fediversity setup B"]
|
||||
subgraph configurations2[configurations]
|
||||
configuration2[staged configuration]
|
||||
deployed2[deployed configuration]
|
||||
end
|
||||
subgraph host2[runtime environment]
|
||||
deployment2[applications]
|
||||
state2{state}
|
||||
end
|
||||
end
|
||||
|
||||
operator --> |trigger| migration(migration)
|
||||
configurations1 & state --> migration
|
||||
migration --> configurations2 & state2
|
||||
provider((hosting provider)) --> |maintain| provider1
|
||||
subgraph fediversity[fediversity source code]
|
||||
applications[application modules]
|
||||
backends[runtime backends]
|
||||
config{{runtime options}}
|
||||
end
|
BIN
architecture-docs/interactions-migration.png
Normal file
After Width: | Height: | Size: 68 KiB |
1
architecture-docs/interactions-migration.svg
Normal file
After Width: | Height: | Size: 33 KiB |
|
@ -22,23 +22,24 @@ Parts of our project that touch upon flakes:
|
|||
- development shell
|
||||
- configuration for nixos / nixops
|
||||
|
||||
Flakes aim to address various topics at once - as per their [introduction](https://www.tweag.io/blog/2020-05-25-flakes/#what-problems-do-flakes-solve) including composability, reproducibility, offering a consistent UI, and discoverability. [Technical issues](https://discourse.nixos.org/t/nix-flakes-is-an-experiment-that-did-too-much-at-once/32707/3) aside, they have drawn criticism including:
|
||||
While its RFC was [drafted](https://github.com/NixOS/rfcs/pull/49) and implemented by Nix creator Eelco Dolstra thru Tweag (which is now divided on flakes) on behalf of Target (which we no longer have indication still uses nix), its aim to address various topics at once - as per their [introduction](https://www.tweag.io/blog/2020-05-25-flakes/#what-problems-do-flakes-solve) including composability, reproducibility, offering a consistent UI, and discoverability - appears to have yielded mixed results, flying in the face of the Unix philosophy, and drawing criticism from various prominent community members, including:
|
||||
|
||||
- [trying too many things at once](https://samuel.dionne-riel.com/blog/2023/09/06/flakes-is-an-experiment-that-did-too-much-at-once.html) (Unix philosophy)
|
||||
- [dependency explosion, no support to pass arguments, eagerly copying flake directories to the store, bad UX](https://discourse.nixos.org/t/experimental-does-not-mean-unstable-detsyss-perspective-on-nix-flakes/32703/2)
|
||||
- [locking dependencies of subprojects](https://jade.fyi/blog/flakes-arent-real/)
|
||||
<!-- - [inability to patch flakes](https://github.com/NixOS/rfcs/pull/49#pullrequestreview-262606855) -->
|
||||
<!-- - [complexity](https://news.ycombinator.com/item?id=40060403) -->
|
||||
<!-- - [no parameterization, defying Unix philosophy](https://nix.dev/concepts/flakes#why-are-flakes-controversial) -->
|
||||
<!-- - [not awaiting RFC process](https://discourse.nixos.org/t/why-are-flakes-still-experimental/29317/12) -->
|
||||
<!-- - [integration into Nix core](https://discourse.nixos.org/t/introducing-flakehub/32044/52) -->
|
||||
<!-- - [making semantic versioning part of commercial project Flakehub rather than of Nix itself](https://discourse.nixos.org/t/introducing-flakehub/32044/31) -->
|
||||
<!-- - [commercial interests](https://discourse.nixos.org/t/introducing-flakehub/32044/24) -->
|
||||
- [samueldr](https://samuel.dionne-riel.com/blog/2023/09/06/flakes-is-an-experiment-that-did-too-much-at-once.html) (author of NixOS Mobile): trying too many things at once (Unix philosophy)
|
||||
- [jade](https://jade.fyi/blog/flakes-arent-real/) (Lix core member): locking dependencies of subprojects
|
||||
<!-- - [fricklerhandwerk](https://nix.dev/concepts/flakes#why-are-flakes-controversial) (Tweag, head of documentation): no parameterization, defying Unix philosophy -->
|
||||
- [raitobezarius](https://discourse.nixos.org/t/nix-flakes-is-an-experiment-that-did-too-much-at-once/32707/3) (board observer, Lix core member): technical issues
|
||||
- [infinisil](https://discourse.nixos.org/t/experimental-does-not-mean-unstable-detsyss-perspective-on-nix-flakes/32703/2) (constitutional assembly): dependency explosion, no support to pass arguments, eagerly copying flake directories to the store, bad UX
|
||||
- [sandro](https://discourse.nixos.org/t/introducing-flakehub/32044/31) (one of the biggest contributors to nixpkgs): making semantic versioning part of commercial project Flakehub rather than of Nix itself
|
||||
- [alyssais](https://github.com/NixOS/rfcs/pull/49#pullrequestreview-262606855) (authored Spectrum OS): inability to patch flakes
|
||||
- [tazjin](https://news.ycombinator.com/item?id=40060403) (thru TVL co-authored Tvix): complexity
|
||||
- [jtojnar](https://discourse.nixos.org/t/why-are-flakes-still-experimental/29317/12): not awaiting RFC process
|
||||
- [piegames](https://discourse.nixos.org/t/introducing-flakehub/32044/52) (formerly member of the moderation team, further [contributed 25 commits to dependency management alternative `npins`](https://github.com/andir/npins/commits?author=piegamesde)): integration into Nix core
|
||||
- [solene](https://discourse.nixos.org/t/introducing-flakehub/32044/24): commercial interests
|
||||
<!-- - [open letter](https://save-nix-together.org/): undermining community processes by declaring flakes stable -->
|
||||
|
||||
Alternatives:
|
||||
|
||||
- dependency management: after a [bug](https://github.com/andir/npins/issues/57) fix maybe better done using `npins`, which makes this more explicit, while flakes' caching may help for say Nixpkgs
|
||||
- dependency management: potentially better done using `npins`, which makes this more explicit, whereas flakes offer performance improvements when interacting with a large Nix package repository like Nixpkgs
|
||||
- how we interface with dependencies: mostly can be done without flakes, which may in fact help prevent pulling in recursive dependencies we do not use
|
||||
- how we (might) expose packages at upstream repositories, to facilitate e.g. `nix run`: no good alternatives for `nix run` exist [currently](https://github.com/NixOS/nix/pull/4702#issuecomment-2233787312), aside from it seeming preferable to defer deviating from the norm here to community RFCs
|
||||
- the interface we expose: flakes ignore unstaged files, cache at the cost of eagerly copying flake directories to the store, don't support passing arguments, make it harder to evaluate just part of a project
|
||||
|
|
24
architecture-docs/panel-data-model.mmd
Normal file
|
@ -0,0 +1,24 @@
|
|||
---
|
||||
title: Data model of sample web application
|
||||
---
|
||||
erDiagram
|
||||
operator {
|
||||
string username
|
||||
string password_hash
|
||||
}
|
||||
deployment {
|
||||
json deployed_configuration
|
||||
option[string] staged_configuration
|
||||
option[string] version
|
||||
}
|
||||
backup["back-up"] {
|
||||
string bucket
|
||||
string endpoint
|
||||
}
|
||||
keypair {
|
||||
string access_key
|
||||
string secret_key
|
||||
}
|
||||
operator ||--o{ deployment : has
|
||||
deployment ||--o{ backup : has
|
||||
backup ||--|{ keypair : authorises
|
BIN
architecture-docs/panel-data-model.png
Normal file
After Width: | Height: | Size: 54 KiB |
1
architecture-docs/panel-data-model.svg
Normal file
After Width: | Height: | Size: 12 KiB |
14
default.nix
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
pkgs ? import <nixpkgs> { },
|
||||
}:
|
||||
{
|
||||
shell = pkgs.mkShellNoCC {
|
||||
packages = with pkgs; [
|
||||
pandoc
|
||||
texliveMedium
|
||||
librsvg
|
||||
mermaid-cli
|
||||
plantuml
|
||||
];
|
||||
};
|
||||
}
|
171
investment_analysis/README.md
Normal file
|
@ -0,0 +1,171 @@
|
|||
<!--
|
||||
> Get insight in the total global investments of the Fediverse (OID)
|
||||
> To get an overview of the total investment of capital, human resources and other valuables, we will research the usage of these in the (visible) Fediverse globally. A report of this will be released.
|
||||
|
||||
> Release a report on the estimated collective current investment on fediverse technology:
|
||||
> Look at qualifiers like:
|
||||
>- Used system resources (CPU, storage, networking)
|
||||
>- Amount of software developers actively working on Fediverse software products
|
||||
>- Amount of system administration engineers actively working on Fediverse software products
|
||||
>- Amount of moderation and governance people
|
||||
-->
|
||||
|
||||
# An estimate of investments in the Fediverse
|
||||
|
||||
## Introduction
|
||||
|
||||
To provide an estimate of the investments made into the Fediverse, defined[^1] as a decentralized interoperable network of social media sites, apps, and services built on the ActivityPub protocol, is a daunting task, owing due to:
|
||||
|
||||
1. a lack of research (in our experience) on this topic thus far;
|
||||
1. the vast number of services part of the Fediverse[^2];
|
||||
1. the Fediverse's decentralised nature;
|
||||
1. involvement of voluntary contributions;
|
||||
1. the third-party nature of some of the integrations.
|
||||
|
||||
Nonetheless, we have taken upon ourselves the task to provide a first glimpse on this subject. Given the Fediverse's interoperability empowers users, a better overview on the resources in this technology helps clarify its momentum for key decision-makers interested in adopting, investing in and interfacing with this technology. We further hope our work will contribute and ignite more serious research into this topic.
|
||||
|
||||
In this document we describe our assessment of the investments made in the Fediverse. We start with describing our methodology for gathering data on the Fediverse and share information on the services, platforms and software applications we have deemed relevant to include.
|
||||
|
||||
## Methodology
|
||||
|
||||
In order to better scope our research, we will address the mentioned challenges by:
|
||||
|
||||
1. given the lack of research on this topic so far, gathering missing data by contacting representatives of the respective projects;
|
||||
1. to account for the vast number of services part of the Fediverse, focusing on the major services[^3] part of the Fediverse, in this case the software with at least 10,000 active monthly users as per Fediverse Observer[^2], in total accounting for over 95% of the active users across Fediverse services, i.e.:
|
||||
* Threads
|
||||
* Mastodon
|
||||
* Pixelfed
|
||||
* NodeBB
|
||||
* Lemmy
|
||||
* Peertube
|
||||
* Loops
|
||||
* Wordpress
|
||||
* WriteFreely
|
||||
1. to account for the Fediverse's decentralised nature, extrapolating for each service to their overall number of (visible[^4]) instances from their flagship instances;
|
||||
1. to account for the involvement of voluntary contributions, separately citing internal versus overall contributors active on the projects, and extrapolating from the former to estimate the latter;
|
||||
1. to account for the third-party nature of some of the integrations, explicitly distinguishing these in our overview.
|
||||
|
||||
### NodeInfo
|
||||
|
||||
Fediversity instances tend to expose data using the NodeInfo protocol (<https://nodeinfo.diaspora.software/>). Data exposed this way is gathered in <https://fediverse.observer/>, which we use as our source for metrics:
|
||||
|
||||
* estimated number of installations
|
||||
* estimated number of users
|
||||
* estimated number of monthly active users
|
||||
|
||||
<!-- TODO: distinguish active user data by whether instances enable user sign-up -->
|
||||
|
||||
### Human resources
|
||||
|
||||
#### Developers
|
||||
|
||||
The amount of active developers we estimate as users:
|
||||
|
||||
* as identified by unique emails
|
||||
* who are not bots, as measured by whether their name contains 'bot',
|
||||
* who contributed at least **5** commits to the default Git branch at the main forge/fork
|
||||
* over the past year.
|
||||
|
||||
We obtain this metric by running a Nushell query[^6] on the project's respective Git repositories.
|
||||
|
||||
Based on project estimations on internal engineers involved measured in FTE, we further estimate the total amount of development involved by extrapolating from these FTE figures to include external contributors based on their relative number of commits --- thereby for the purpose of this estimate presuming similar time and effort required for external versus internal commits.
|
||||
|
||||
### Questionnaire
|
||||
|
||||
In order to gather statistics for applications' official/flagship instances to extrapolate from, we have set up a questionnaire based on relevant metrics, set up using a LimeSurvey instance hosted by ProcoliX.
|
||||
|
||||
Note that this also includes questions on users with moderation privileges, as ActivityPub unfortunately exposes no structured data yet, although this is an outstanding feature request[^5].
|
||||
|
||||
### Questions
|
||||
|
||||
### Project questions
|
||||
|
||||
Questions for this section were as follows:
|
||||
|
||||
1. Which Fediverse application are you currently maintaining?
|
||||
1. Do you run any (official) instance(s) of your application?
|
||||
1. How many people are actively working on the project in the development of the software?
|
||||
1. How many people are actively involved in the governance of the software project?
|
||||
1. How much financial investment has been committed to the project so far? For example through donations, self-funding, grants (e.g., NLnet), or premium plans.
|
||||
1. How much financial investment has the project received so far? For example through donations, self-funding, grants (e.g., NLnet), or premium plans?
|
||||
1. How much financial investment is currently committed to the project periodically? For example through donations, self-funded, grants (e.g. NLNet), premium plans.
|
||||
|
||||
### Official instance(s)
|
||||
|
||||
Note that this set of questions will show only in case the earlier question 'Do you run any (official) instance(s) of your application?' is answered positively.
|
||||
|
||||
This section was accordingly accompanied with the following comment:
|
||||
|
||||
> (In case you manage multiple official instances, ideally structure your responses by instance.)
|
||||
|
||||
Questions for this section were as follows:
|
||||
|
||||
1. What (official) instance(s) do you manage?
|
||||
1. How many people are actively working on the project in **governance and moderation** (if applicable) of the official instance(s)?
|
||||
1. How many people are actively working on the project in system administration of the official instance(s)?
|
||||
1. What network resources are used by the official instance(s), measured in terms of minimum, maximum, and average MiB/s in/out?
|
||||
1. What is the RAM usage of the official instance(s), e.g., minimum, maximum, and average in GB?
|
||||
1. What costs are incurred in running the flagship instance(s), and how are these split between hosting costs and human resources?
|
||||
1. What resources does the official instance(s) use in terms of CPU? For instance: Minimum/average/peak percentage of (the number of) CPU cores used? CPU model used
|
||||
1. How much storage does the official instance(s) use, measured in terms of minimum, maximum, or average GB?
|
||||
|
||||
## Accompanying introduction
|
||||
|
||||
> Hi there,
|
||||
|
||||
> On behalf of Fediversity, I'm gathering info on [investments in the Fediverse ecosystem](https://git.fediversity.eu/Fediversity/meta/src/branch/main/investment_analysis), a report on which we will publish on our website <fediversity.eu>. As the structured information available on this topic for instances in the wild is fairly limited, for part of the questions on this I am hoping to make estimations by extrapolating from info on the flagship instances.
|
||||
|
||||
> We hope a better overview on the resources in the Fediverse may help clarify its momentum for key decision-makers interested in adopting, investing in and interfacing with this technology.
|
||||
|
||||
> Would you maybe have info for me for your application? Questions touch on:
|
||||
|
||||
> 1. people active on the project
|
||||
> 1. resources used for the official instance(s)
|
||||
> 1. financial investments in the project
|
||||
|
||||
> Thanks in advance for helping out - as well as for making the Fediverse great!
|
||||
|
||||
## A closer look at the Fediverse platforms
|
||||
|
||||
| Project | Installations | monthly active users |
|
||||
|-|-|-|
|
||||
| mastodon | 8033 | 736878 |
|
||||
| pixelfed | 501 | 126065 |
|
||||
| nodebb | 43 | 52399 |
|
||||
| lemmy | 407 | 41341 |
|
||||
| peertube | 962 | 25804 |
|
||||
| loops | 1 | 26548 |
|
||||
| wordpress | 2863 | 11510 |
|
||||
| writefreely | 492 | 11188 |
|
||||
|
||||
## Estimating investments in the Fediverse
|
||||
|
||||
We will add results here as we collect and process them.
|
||||
|
||||
## Time spent
|
||||
|
||||
TODO
|
||||
|
||||
## Notes
|
||||
[^1]: Kissane, E., & Kazemi, D. (2024, September 4). Findings Report: Governance on Fediverse Microblogging Servers. https://fediverse-governance.github.io/#brief-glossary
|
||||
[^2]: https://fediverse.observer/allsoftwares
|
||||
[^3]: Note that this focus would exclude work on protocols such as W3C's work on the ActivityPub protocol, as well as on non-core repositories, and ancilliary software whose development is run by others than by the lead developers of the mentioned services, such as bridges, cross-posters, third-party clients, browser extensions, instance indices, etc.
|
||||
[^4]: Visibility, for our purposes meaning exposing metadata using the NodeInfo protocol, for Mastodon, the Fediverse service with the highest amount of active users, notably excludes an instance with more active users than its biggest visible instance <https://mastodon.social/>, namely Donald Trump's Truth Social.
|
||||
[^5]: This feature requested may be tracked at: https://github.com/swicg/activitypub-trust-and-safety/issues/25
|
||||
[^6]: The used query here is: `git log --pretty=%h»¦«%s»¦«%aN»¦«%aE»¦«%aD | lines | split column "»¦«" commit subject name email date | upsert date {|d| $d.date | into datetime} | where ($it.date > ((date now) - 365day)) | where not ($it.name has 'bot') | group-by name | transpose | upsert column1 {|c| $c.column1 | length} | sort-by column1 | rename name commits | where ($it.commits >= 5) | reverse | length`
|
||||
|
||||
## References
|
||||
|
||||
* https://en.wikipedia.org/wiki/Fediverse
|
||||
* https://fedidb.org/
|
||||
* https://mastodon-analytics.com/
|
||||
* https://www.thinkimpact.com/mastodon-statistics/
|
||||
* https://fediverse.observer/
|
||||
* https://the-federation.info/
|
||||
* https://fediverse.party
|
||||
* https://socialhub.activitypub.rocks/t/fep-f1d5-nodeinfo-in-fediverse-software/1190
|
||||
* https://codeberg.org/fediverse
|
||||
* https://hachyderm.io/@esk/113793277371908181
|
||||
|
||||
## Changes
|
||||
Older versions of this directory lived here: https://git.fediversity.eu/Fediversity/meta/src/commit/0006758ab7d12c2914f915813815bea89208fc6d/Fediverse-investments-an-estimation.md
|
58
meeting-notes/2024-04-14-dev-meet.md
Normal file
|
@ -0,0 +1,58 @@
|
|||
# 2025-04-14 Sync Kiara/Valentin
|
||||
|
||||
- @fricklerhandwerk asked for a walk through https://git.fediversity.eu/Fediversity/Fediversity/pulls/307
|
||||
- @kiara:
|
||||
- TF seemed like easier to work with
|
||||
- A lot of details, but got it to run with the deployed infra
|
||||
- Tried TF with nixos-anywhere, but that [seemed not to pick up on our config](https://git.fediversity.eu/kiara/Fediversity/pulls/1)
|
||||
- Also tried [terraform-nixos](https://github.com/nix-community/terraform-nixos/), but that is deserted
|
||||
- @fricklerhandwerk: probably need to take a few steps back since the project is doing a backflip, and re-assess what we want morally and then re-align on the technical strategy
|
||||
- @kiara desired work order
|
||||
- website
|
||||
- remove the unused code
|
||||
- panel
|
||||
- should be a reference implementation to demo the ideas
|
||||
- let front-end people productise independently, using our APIs
|
||||
- infra
|
||||
- want to replace NixOps4 with Terraform
|
||||
- we have private keys lying around in the repo
|
||||
- @fricklerhandwerk: can just move them to agenix?
|
||||
- @kiara: yes, need to nuke everything and start over
|
||||
- pins
|
||||
- need to consolidate the different ways of doing things
|
||||
- VMs
|
||||
- eventually want to remove the hard-coded stuff
|
||||
- @fricklerhandwerk: what about integration tests? our basics is not tested, we need the proxmox workflow under control before doing other stuff
|
||||
- @kiara: agreed. would like to get to a system that others can pick up by reading through the tests
|
||||
- @fricklerhandwerk: possibly we need to take even more steps back, such as nailing down our development workflows
|
||||
- e.g. we can't even make suggestions in code reviews on Forgejo
|
||||
- @kiara: we could spin up Gerrit, but where does it stop?
|
||||
- @fricklerhandwerk: outline:
|
||||
- open up an infra repo (or eat the existing one from within)
|
||||
- set up SSO, some Git server, issue tracker, and a deployment workflow for that
|
||||
- start over with the application code, begin with Nix first, integration tests first, no PR accepted without tests and reviews
|
||||
- spiral up from there; we already know a lot of the rest of the owl
|
||||
- it may end up amounting to bootstrapping the whole infra idea...
|
||||
- @kiara: agreed, the basics aren't testable because everything is hard coded
|
||||
- most importantly, everyone on the team should be able (i.e. capable and allowed to) change anything about the system, and for that we really need to agree on how it works and how to approach things
|
||||
- which is also why we'd need a proper architecture decision record (ADR) system, by which I simply mean being disciplined about writing things down
|
||||
- @kiara: I consider the application services and the deployment code around it the core of our work
|
||||
- the (currently Django) shell invoking that I consider an example implementation of the product on top
|
||||
- we already know there will be other such implementations because Procolix wants to productise it in their existing setup
|
||||
- getting the boundaries between those clear before new people (e.g. external contributors, future team members) come in
|
||||
- therefore the most important thing would be building an interface for spinning up the Nix environment and invoking the deployment from wherever
|
||||
- currently it's only documented as embodied in our implementation
|
||||
- @fricklerhandwerk: agreed; and we should reduce our scope for what we work on to the absolute minimum, and focus on user stories for integrators
|
||||
- although they should still be expressed through something you can click on, based on automatic testing of course
|
||||
- @fricklerhandwerk: it seems we agree that we need to do a spring cleaninig
|
||||
- @kiara: yes (service modules seem not to be the problem though)
|
||||
- @fricklerhandwerk: would terraform not make things harder?
|
||||
- @fricklerhandwerk: agree it's not as mature still tho
|
||||
- (some back and forth on Terraform vs NixOps4)
|
||||
- @fricklerhandwerk: although the decision to stick with NixOps4 was made a long time ago, the rationale seems not to have been written down
|
||||
- trade-offs:
|
||||
- NixOps4 is not mature and can't do some crucial things yet; may risk the timeline
|
||||
- Terraform done from json/nix could use Nix language wrappers
|
||||
- TF references are stringly typed, it's slightly brittle
|
||||
- next steps:
|
||||
- start pairing tomorrow on the spring clean, and shovel code
|
43
meeting-notes/2025-02-10 standup notes.md
Normal file
|
@ -0,0 +1,43 @@
|
|||
**Date and Time:** 2025-02-10 09:30
|
||||
|
||||
**Attendees**
|
||||
**Present:** Björn, Hans, Kevin, Kiara, Koen, Richard, Ronny, Gheorghe
|
||||
**Absent:** Valentin (known), Robert(known), Lois (known)
|
||||
|
||||
Roadmap
|
||||
https://wiki.fediversity.eu/wiki/Roadmap
|
||||
|
||||
Question: Demo deliverable 1?
|
||||
https://git.fediversity.eu/Fediversity/Fediversity/milestone/42
|
||||
|
||||
Question: Deliverable 2
|
||||
Deadline: Friday 21 Feb
|
||||
Demo: Monday 24 Feb
|
||||
|
||||
* Kiara
|
||||
* Had a meeting with Eric on the data model
|
||||
* Writing an article on flakes
|
||||
* Limesurvery testing
|
||||
* Richard
|
||||
* No blockers
|
||||
* Open for new tasks
|
||||
* Hans
|
||||
* No blockers
|
||||
* Matrix playbook is almost ready
|
||||
* Kevin
|
||||
* Will mostly work on Procolix stuff
|
||||
* Not available today
|
||||
* Ronny
|
||||
* Would like to work on the MVP with Björn
|
||||
* Gheorghe
|
||||
* No blockers
|
||||
* Will work on internal artefacts
|
||||
* Will share a new approach in a day or 3 towards this project
|
||||
* Koen
|
||||
* Worked on PeerTube server
|
||||
* No blockers
|
||||
* Will work on other project today
|
||||
* Tomorrow is the presentation by students working on a project 'how to promote' loops. Will take Lois & Daphne to participate
|
||||
* We're missing people this morning at the latest moment, which is a bit worrying giving the schedule.
|
||||
* Bjorn:
|
||||
* Team, please pair with Valentin to align on how to realize our MVP in time.
|
51
meeting-notes/2025-02-11 standup notes.md
Normal file
|
@ -0,0 +1,51 @@
|
|||
**Present:** Eric, Hans, Kevin, Lois, Koen, Ronny, Kiara, Valentin, Nicolas, Gheorghe, Bjorn
|
||||
|
||||
* Eric
|
||||
* reviewed data model requirements with Kiara and Gheorghe
|
||||
* current emphasis on what is needed for MVP, with an eye to what is needed transfer between hosting providers
|
||||
* living doc, must evolve with code releases
|
||||
* idealy extracted from code
|
||||
* not a checkbox exercise
|
||||
* Hans
|
||||
* No updates
|
||||
* Hit some roadblocks with the Matrix setup
|
||||
* Will deliver a full Matrix server today
|
||||
* Need to work on the documentation
|
||||
* Kevin
|
||||
* no updates
|
||||
* heared from Niols he broke the forgejo-ci again will see if can fix it today from home
|
||||
* Lois
|
||||
* No updates yet
|
||||
* Will work with Valentin; available till lunch than other obligations
|
||||
* Koen
|
||||
* no blockers
|
||||
* meeting with Hogeschool Rotterdam this afternoon
|
||||
* discussed stand-up attendance with Richard
|
||||
* Ronny
|
||||
* Discussion with Georghe and Bjorn about the MVP, PM and reporting. Reporting will be lighter than Georghe expected.
|
||||
* Kiara
|
||||
* yesterday read up on priorities/decisions
|
||||
* today
|
||||
* will try to get a sense of user stories needed for demo in April
|
||||
* may also meet with Bjorn/Valentin on this
|
||||
* no blockers
|
||||
* Valentin
|
||||
* Checked in with Kiara yesterday
|
||||
* Reveiwed new documentation written by Nicolas
|
||||
* Planned to continue pairing with Lois today
|
||||
* Available for questions/discussion/reviews
|
||||
* Nicolas
|
||||
* no blockers
|
||||
* updated to latest NixOps4 (with the change from 1 repo 2 branches to 2 repos)
|
||||
* broke the CI machine as promised, unclear what caused this, will investigate with Kevin
|
||||
* wrote some documentation
|
||||
* Gheorghe
|
||||
* Yesterday meet Bjorn & Ronny in a fantastic meeting. Start helping on WP5.
|
||||
* Today I'll have an internal very important meeting. COntinue to help WP5.
|
||||
* No Blockers.
|
||||
* Bjorn
|
||||
* Worked on the Fediversity presentation
|
||||
* Had a chat with Gheorghe, Ronny & Koen on the planning / roadmap
|
||||
* Will work on the presentation a bit, but I also have other obligations today
|
||||
* Will not be available on Thursday
|
||||
* No blockers
|
50
meeting-notes/2025-02-12 standup notes.md
Normal file
|
@ -0,0 +1,50 @@
|
|||
**Standup 2025-02-12 @09:30**
|
||||
|
||||
**Present:** Björn, Koen, Eric, Valentin, Gheorghe, Kevin, Lois, Nicholas, Ronny, Hans, Kiara
|
||||
|
||||
* Valentin
|
||||
* Paired with Kiara and Lois to break down issues from user stories -- very fruitful, increased clarity a lot
|
||||
* Reviewed the issues created by Kiara
|
||||
* Internal meetings
|
||||
* Took a look at Robert's exit code PR
|
||||
* Today: Continue pairing with Lois on the Django setup
|
||||
* Need to discuss timining/resource planning, should meet with Bjorn and whoever else has to be involved
|
||||
* Eric
|
||||
* brainstorm for MVP scope ideas
|
||||
* Kevin
|
||||
* rebooted the forgejo-ci into the previous nix config so nicolas could access it again after he broke it
|
||||
* Koen
|
||||
* attended presentation of HogeSchool Rotterdam team (recorded, needs montage)
|
||||
* Remy sent ajusted processing document to EDPS.
|
||||
* Lois
|
||||
* Worked with Kiara and Valentin on creating usersstories
|
||||
* Visited de Hogeschool
|
||||
* Nicolas
|
||||
* Would like to know which issue to pickup
|
||||
* No blockers
|
||||
* CI/CD: every change makes it break. Need Kevin
|
||||
* Ronny
|
||||
* Had a meeting with Eric in which we described a propasal for the MVP and at least two presentable user stories.
|
||||
* Talked with Bjorn about the divergence in what the MVP is and that we need to point all the noses in the same direction.
|
||||
* Gheorghe
|
||||
* No blocker
|
||||
* Yesterday: Internal meetings and exchanged some documents with Eric
|
||||
* Today: Continue with internal meetings and continue helping WP5
|
||||
* Hans
|
||||
* No updates, every thing solved reveals new things to be solved.
|
||||
* Matrix server for fediversity.eu should be ready today.
|
||||
* Kiara
|
||||
* Yesterday worked on fleshing out stories
|
||||
* Today will work on:
|
||||
* catch up w/ @robert for orchestrator stories
|
||||
* get clarity on ownership boundaries with hosts together with @koen
|
||||
* BLOCKER?: capacity planning
|
||||
* Robert
|
||||
* Added exit code handling
|
||||
* Solved wiki access with Niols earlier
|
||||
* Apologies for MIA yesterday, will enter availability
|
||||
* Bjorn
|
||||
* Did not work on Fediversity presentation
|
||||
* Had a chat with Kiara
|
||||
* Had a chat with Ronny
|
||||
* Today available till 14:00
|
91
meeting-notes/2025-02-12-mvp-dev-meeting.md
Normal file
|
@ -0,0 +1,91 @@
|
|||
**MVP Dev Meeting 2025-02-12 @10:00**
|
||||
**Present:** Björn, Eric, Valentin, Gheorghe, Kevin, Lois, Ronny, Kiara
|
||||
|
||||
## TODO
|
||||
* @Bjorn/@RonnyAsk Robert & Nicolas about current state of affairs of the components below on and below NixOPS4 since there might be more available than we think
|
||||
* DNS is unclear. **Update** Spoke with Koen about this. There is a redundant DNS available for development. More info soon.
|
||||
* @Bjorn: Need to create a List of definitions / glossary
|
||||
* @Bjorn/@Ronny: Adjust names (Nix => Fediversity)
|
||||
|
||||
## User stories discussion
|
||||
|
||||
Operator: the person who is managing the system / users. Need to define more clearly.
|
||||
|
||||
* **Panel incl. API / Central database**
|
||||
* Team working on this: Lois, Kevin, Kiara (tech lead)
|
||||
* Python app (Django)
|
||||
* Independent from NixOS for now (will package this later)
|
||||
* Note from Valentin: This will be extremely brittle, and we will aquire notable tech debt that needs to be resolved in order to make it reusable by different providers
|
||||
* First prove the idea, than make it better. We have to be aware of the risk, but we also need to accept some risks.
|
||||
|
||||
* **NixOps4 <--> Central Database**
|
||||
* Team working on this: Kiara (glue code) (Robert NixOps4)
|
||||
* Glue code talking JSON with NixOps and whatever we specify as an API with NixPanel
|
||||
* Can be written in any language
|
||||
|
||||
* **NixOps4**
|
||||
* Robert is responsible for this part
|
||||
|
||||
* **Identity Management**
|
||||
* Out of scope for the MVP
|
||||
* Use the Django included options for now
|
||||
|
||||
* **Central services (Help needed from Procolix)**
|
||||
* **DNS (Hans?)**
|
||||
* Blocker: DNS is a great unknown
|
||||
* Need an API to create DNS entries
|
||||
* Kevin: Currently using PowerDNS, which has an API
|
||||
* Bjorn: Can we use that for the MVP or will that mess with production?
|
||||
* Kevin: Hans would be the person to ask
|
||||
* Ronny: Koen said it might be easy to spin up another instance for PowerDNS. Development DNS setup is a requirement.
|
||||
* **Email (Hans?)**
|
||||
* Need to have a development setup
|
||||
* Storage
|
||||
* is it working? (Niols?)
|
||||
* can it talk to the orchestrator? (Robert)
|
||||
* Garage is working (not supposed to be deployed automatically; is a given just like DNS/Email/Hardware/Virtualisation Provider (Proxmox))
|
||||
* **Virtualisation**
|
||||
* Creating VM's in Proxmox is out of scope for the MVP.
|
||||
* Assumption: VM's with NixOS (+ their root SSH keys) are existing already for the Hello World
|
||||
* Need to have enough VM's available (help from ProcoliX) & these need to be provisioned manually
|
||||
* NixOps just sends the config and let's NixOS do its thing
|
||||
* Package a Fediverse service (Mastodon/PeerTube/Pixelfed) this is what Nicolas has been working on.
|
||||
|
||||
## Next meeting
|
||||
### Thursday 13-02-2025 @10:00 (directly after standup )
|
||||
**Goal:** Refinement of the issues already in Forgejo based on this meeting we had today.
|
||||
* Ronny will lead this (Bjorn is unavailable Thursday 13th )
|
||||
* Participation from Robert & Nicolas is mandatory. Without them we need to reschedule.
|
||||
|
||||
## Important dates
|
||||
* We will have a demo (~30min) & refinement session (~1.5hrs) of these issues every 2 wks to guide us towards the completion of the MVP after our regular standup so around 10:00.
|
||||
|
||||
* Deliverable 2
|
||||
* Deadline: 2025-02-21
|
||||
* Demo deliverable: 2025-02-24
|
||||
* Refinement for deliverable 3: 2024-02-24
|
||||
|
||||
* Deliverable 3
|
||||
* Deadline: 2025-03-07
|
||||
* Demo deliverable: 2025-03-10
|
||||
* Refinement for deliverable 4: 2024-03-10
|
||||
|
||||
* Deliverable 4
|
||||
* Deadline: 2025-03-21
|
||||
* Demo deliverable: 2025-03-24
|
||||
* Refinement for deliverable 4.5: 2024-03-24
|
||||
|
||||
* Deliverable 4.5 smaller focussed on _"Crossing the t's & dotting the i's"_
|
||||
* Deadline: 2025-03-28
|
||||
* Demo deliverable: 2025-03-31
|
||||
|
||||
* MPV Presentation & demo 1-2 April @FediForum.
|
||||
* Exact time TBD.
|
||||
* Presenter TBD.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
36
meeting-notes/2025-02-13 standup notes.md
Normal file
|
@ -0,0 +1,36 @@
|
|||
**Standup 2025-02-13 @09:30**
|
||||
|
||||
**Present:** Eric, Valentin, Gheorghe, Kevin, Lois, Nicholas, Ronny, Hans, Kiara
|
||||
Absent: Koen (known), Bjorn (known)
|
||||
|
||||
* Ronny
|
||||
* Good meeting yesterday about the MVP
|
||||
* Valentin
|
||||
* Participated in MVP planning yesterday
|
||||
* Added a glossary, Nicolas reviewed
|
||||
* Pushed a Django on NixOS setup (800 LOC as promised) so we can start with reproducibility quickly
|
||||
* Georghe
|
||||
* No blockers
|
||||
* Yesterday: At Tweag, a Modus Create company, I performed specific internal project management activities.
|
||||
* Today At Tweag, a Modus Create company, I performed specific internal project management activities.
|
||||
* Eric
|
||||
* No blockers
|
||||
* MVP meeting yesterday and todaygit
|
||||
* no other fediversity work planned for today
|
||||
* Kiara
|
||||
* Yesterday talked to @roberth about todo, worked on the data model
|
||||
* Today will continue on data model, talk to @niols about todo
|
||||
* Kevin
|
||||
* No blockers
|
||||
* helped nicolas with troubleshooting the ci machine its working now may needs some tweaking to make it faster
|
||||
* so probaly be working tuning the ci machine
|
||||
* Lois
|
||||
* No blockers
|
||||
* Had a meeting about the upcoming MVP
|
||||
* Nicolas
|
||||
* No blockers
|
||||
* Got a configuration working for the test CI machine - successfully ran a CI run, about twice faster as with the previous CI machine (a tweaked VM)
|
||||
* Documentation of services - will open a PR today.
|
||||
* Robert
|
||||
* Discussed NixOps related work with Kiara
|
||||
|
7
meeting-notes/2025-02-13-mvp-dev-meeting.md
Normal file
|
@ -0,0 +1,7 @@
|
|||
**MVP dev meeting 2025-02-13 @10:00**
|
||||
|
||||
**Present:** Eric, Valentin, Gheorghe, Kevin, Lois, Nicholas, Ronny, Hans, Kiara
|
||||
|
||||
|
||||

|
||||

|
After Width: | Height: | Size: 276 KiB |
After Width: | Height: | Size: 258 KiB |
21
meeting-notes/2025-02-14 standup notes.md
Normal file
|
@ -0,0 +1,21 @@
|
|||
**Standup** 2025-02-14 @09:30
|
||||
**Present:** Björn, Ronny, Robert, Gheorghe
|
||||
|
||||
Happy Valentin's day!
|
||||
Thank your free software developers & maintainers https://fsfe.org/news/nl/nl-202502.en.html#ilovefs
|
||||
|
||||
* Ronny
|
||||
* Meeting was excellent
|
||||
* Notes are now uploaded
|
||||
* Spoke with Bjorn & Koen in the afternoon
|
||||
* Bjorn
|
||||
* Yesterday had other obligations, but spoke with Ronny & Koen in the afternoon
|
||||
* Today will look at the notes from yesterday
|
||||
* Maybe finish up the presentation
|
||||
* Gheorghe
|
||||
* No blockers
|
||||
* Yesterday: Excelent meeting with all colleagues
|
||||
* Today: Start to identify the epics and create the user stories with the collagues. Gherkin will be used for testing
|
||||
* Robert
|
||||
* Made small PRs to nixops4-nixos for ssh.user, sudo.enable, SSH options
|
||||
* No blockers
|
35
meeting-notes/2025-02-17 standup notes.md
Normal file
|
@ -0,0 +1,35 @@
|
|||
**Standup 2025-02-17 @09:30**
|
||||
|
||||
**Present:** Björn, Kevin, Kiara, Gheorghe, Koen, Ronny, Robert, Valentin, Nicolas
|
||||
|
||||
* Bjorn
|
||||
* Almost done with Fediversity presentation. Worked on this yesterday. Hope to finish this today.
|
||||
* Would like to discuss the presentation later this week
|
||||
* Will be less available today & Tuesday
|
||||
* Kevin
|
||||
* No blockers
|
||||
* nothing to report since friday.
|
||||
* will probaly be looking on getting a good grasp on django today
|
||||
* Gheorghe
|
||||
* No blockers.
|
||||
* Friday and Saturday worked with the Tweag, a a Modus Create company, team members, to create the Epics for the first MVPrototype.
|
||||
* Today I updated the document with the User Stories and the Gherkin tests for it.
|
||||
* Kiara
|
||||
* Thursday worked on getting devs up to speed, creating/estimating issues
|
||||
* today will work on panel, meeting Nicolas, maybe data model
|
||||
* Koen
|
||||
* attended HackerHotel (good place to show our product in 2026)
|
||||
* subgrants may help in the 'uniforming' area (differences between apache/nginx/caddy)
|
||||
* Ronny
|
||||
* No blockers, nothing to report since Friday.
|
||||
* Robert
|
||||
* No updates
|
||||
* Will not work on Fediversity today
|
||||
* Valentin
|
||||
* Uploaded Django scaffold code last Thursday
|
||||
* Will be available for answering questions, reviewing issues and code, and pair programming
|
||||
* Will be less available today, but fully available tomorrow.
|
||||
* Nicolas
|
||||
* No blockers
|
||||
* Worked for the Epics with Gheorghe; Multimachines working to;
|
||||
* Today we'll work for the User Stories details. Meeting with Kiara maybe today.
|
39
meeting-notes/2025-02-18 standup notes.md
Normal file
|
@ -0,0 +1,39 @@
|
|||
**Standup** 2025-02-18 @09:30
|
||||
**Present:** Björn, Kiara, Eric, Lois, Kevin, Hans, Gheorghe, Robert, Valentin, Ronny
|
||||
|
||||
* Kiara
|
||||
* yesterday worked on panel auth/form
|
||||
* today will work on deploying the panel
|
||||
* Eric
|
||||
* no blockers
|
||||
* available
|
||||
* Gheorghe
|
||||
* No blockers
|
||||
* Worked on episc and US; internal meetings; internal PM activities
|
||||
* Will work on the epics, user stories, and internal project managemet activities.
|
||||
* Bjorn
|
||||
* Did not work on Fediversity
|
||||
* Met Arnout yesterday (Netxtcloud packager)
|
||||
* Today: will finish presentation
|
||||
* Q: Monday next week a demo & refinement session is planned. Is everybody aware of this & knows what to work on?
|
||||
* Kevin
|
||||
* Had a small discussion with niols about the how services are separated for the pixelfed.com instance. Will have to see i can write some documantion for that so he van nixify it.
|
||||
* Will meet up with Valentin, Loïs en Kiara to work on django and the fedi panel
|
||||
* Loïs
|
||||
* Did not work on Fediversity
|
||||
* Wil meet-up with Valentin, Kevin and Kiara after stand-up to discuss the FediPanel.
|
||||
* Hans
|
||||
* No updates, still working on making the playbook production-ready
|
||||
* starting on the DNS-infra this week
|
||||
* Valentin
|
||||
* Reviewed some front-end code, user stories, and task breakdowns yesterday; discussed procedure with Kiara
|
||||
* Available for pair programming and reviews today
|
||||
* Nicolas:
|
||||
* No blockers
|
||||
* Worked on episc and US; internal meetings; internal activities
|
||||
* Will work on the epics, user stories activities.
|
||||
* Robert
|
||||
* No updates
|
||||
* Available today
|
||||
* Ronny
|
||||
* No updates. no blockers
|
44
meeting-notes/2025-02-19 standup notes.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
**Standup:** 2025-02-19 @09:30
|
||||
|
||||
**Present:** Bjorn, Kiara, Koen, Eric, Kevin, Gheorghe, Lois, Ronny, Nicolas, Valentin, Robert
|
||||
**Absent:** Hans (known)
|
||||
|
||||
**Updates:**
|
||||
* Kiara
|
||||
* Yesterday: paired on panel, worked on panel deployment
|
||||
* Today: will continue on panel deployment
|
||||
* Gheorghe
|
||||
* No blockers;
|
||||
* Yesterday: Epics, User Stories, internal specific PM activities;
|
||||
* Today: Epics, User Stories, internal specific PM activities;
|
||||
* Eric
|
||||
* no blockers
|
||||
* no fediversity work planned today
|
||||
* available
|
||||
* Koen
|
||||
* planning: presentation meeting
|
||||
* Bjorn
|
||||
* Yesterday: finished presentation
|
||||
* Today: discuss the presentation with Koen & Ronny
|
||||
* Planned: reading docs & issues
|
||||
* Kevin
|
||||
* Worked with Loïs, Kiara and Valentin on the django fedipanel for the first mvp
|
||||
* this morning I have some other stuff today i believe we're gonna continue working on the django this afternoon
|
||||
* Lois
|
||||
* Paired with Kevin, Valentin and Kiara to work on the first user story.
|
||||
* Planned to meet in the afternoon to continue working on the fedipanel.
|
||||
* Valentin
|
||||
* Pair-programming on 1st user-story
|
||||
* User story is done, closing ticket is blocked on deployment of the app
|
||||
* Will add a test; to show how tests are written
|
||||
* Will continue reviewing the backend user stories for Nicolas after that
|
||||
* Ronny
|
||||
* Had a chat with Eric about progress
|
||||
* No blockers
|
||||
* Robert
|
||||
* No updates
|
||||
* Will be working on NixOps4
|
||||
* Nicholas
|
||||
* No blockers
|
||||
* Bit confused about the VM's in Proxmox.
|
||||
* Would like to know which VM's & IP addresses can be used freely without destroying other people's work
|
40
meeting-notes/2025-02-20 standup notes.md
Normal file
|
@ -0,0 +1,40 @@
|
|||
**Standup** 2025-02-20 @09:30
|
||||
**Present:** Gheorghe, Valentin, Björn, Ronny, Kiara, Nicholas, Eric, Koen, Lois
|
||||
**Absent:** Robert (excused)
|
||||
|
||||
**Status:**
|
||||
|
||||
* Gheorghe:
|
||||
* No blockers;
|
||||
* Yesterday: Worked on the Epics, User Stories, Tasks and Sub-Tasks, estimations for the first MVP (Prototype), Internal project management tasks
|
||||
* Today: Will work on the Epics, User Stories, Tasks and Sub-Tasks, estimations for the first MVP (Prototype), Internal project management tasks
|
||||
* Eric:
|
||||
* no blockers
|
||||
* available
|
||||
* Kiara
|
||||
* no blockers
|
||||
* Yesterday: paired on panel data persistence with Kevin/Lois + discussed deployment with Nicolas
|
||||
* Today: will continue on both
|
||||
* Valentin:
|
||||
* Finished the test for the first user story
|
||||
* Refined Tweag's user stories for the MVP with Nicolas
|
||||
* Side channel architectural discussions with Kiara
|
||||
* Reviewed new code by Lois and Kevin
|
||||
* Will continue refining user stories with Nicolas after the standup
|
||||
* Bjorn
|
||||
* Yesterday: no fediversity
|
||||
* Today: discuss presentation with Koen & Ronny
|
||||
* Next week: availability limited (added to wiki): only Monday.
|
||||
* Kevin
|
||||
* worked with Loïs and kiara on the first user story
|
||||
* Koen
|
||||
* no updates, will talk about Fediversity at the AngryNerds podcast this evening.
|
||||
* Lois
|
||||
* Worked with Kevin and Kiara on the first user story
|
||||
* Ronny
|
||||
* The best ice-breaker for the meeting! Thank you, Ronny!
|
||||
* Nicholas
|
||||
* Block-ish: would like to send out an email for testing.
|
||||
* Kevin will help out with an email address
|
||||
* Will meet with Kiara & Valentin again
|
||||
* Need to clean out WIP branches a bit
|
30
meeting-notes/2025-02-21 standup notes.md
Normal file
|
@ -0,0 +1,30 @@
|
|||
**Standup:** 2025-02-21 @09:30
|
||||
**Present:** Bjorn, Gheorghe, Hans, Ronny, Bjorn, Robert, Kevin
|
||||
**Absent:** Valentin (known), Nicolas (excused), Kiara (known), Lois(know), Koen(known), Eric (known)
|
||||
|
||||
**Status:**
|
||||
* Gheorghe
|
||||
* No blockers
|
||||
* Yesterday: MVP Tweag, a Modus Create company, initial project plan + internal specific project management activities
|
||||
* Today: MVP Tweag, a Modus Create company, initial project plan + internal specific project management activities
|
||||
* Bjorn
|
||||
* Had a discussion with Koen & Ronny: Presentation v1 is done
|
||||
* Contacted the partners
|
||||
* Looking forward to the demo Monday
|
||||
* Not working on Fediversity today
|
||||
* Ronny
|
||||
* Discussed the presentation with Bjorn and Koen
|
||||
* Discussed planning with Eric
|
||||
* Niols (via Matrix)
|
||||
* Will skip the stand-up today. No blockers. Kevin got me email access, I need to try. Met with Valentin and Kiara to refine our April MVP user stories
|
||||
* Hans
|
||||
* Didn't work on Fedi yesterday
|
||||
* Making progress in automatically installing Matrix servers.
|
||||
* Robert
|
||||
* Entered availability
|
||||
* No blockers
|
||||
* Kevin
|
||||
* worked on the first user story with kiara and loïs. its finished as far as we believe the pr needs a review. Will add @Valentin and @Nicholas to notify them
|
||||
* got a request from internaly to document the proxmox so im continuing that
|
||||
|
||||
|
44
meeting-notes/2025-02-24 standup notes.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
**Standup 2025-02-24 @09:30**
|
||||
|
||||
**Attendees**
|
||||
**Present:** Björn, Gheorghe, Valentin, Ronny, Robert, Valentin, Kiara, Eric, Kevin, Nicolas
|
||||
**Absent:** Hans (known), Lois (known), Koen (known)
|
||||
|
||||
Agenda for this morning
|
||||
- Standup
|
||||
- Short break
|
||||
- Demo
|
||||
- Short break
|
||||
- Upcoming sprint planning
|
||||
|
||||
Standup details
|
||||
|
||||
* Gheorghe
|
||||
* No blockers.
|
||||
* Last week: Finished the document for the MVP in April 2025, and added the initial project plan and its Gannt in the document.
|
||||
* Tommorow: Specific project DSU's activities and internal PM activities.
|
||||
* Valentin
|
||||
* Paired with Nicolas on refining and estimating user stories for the MVP
|
||||
* Eric
|
||||
* low availability today
|
||||
* wish to participate in discussions involving data model needs
|
||||
* Björn
|
||||
* Friday: only fediveristy meeting; do we want to keep standups on Friday?
|
||||
* Today: In the morning Fediversity, afternoon other obligations
|
||||
* Rest of the week holidays
|
||||
* Looking forward to the demo :)
|
||||
* Kiara
|
||||
* last day worked on stories w/ tweag, getting devs unblocked
|
||||
* today will work on user stories, maybe data model
|
||||
* Ronny
|
||||
* Friday we had a very light standup.
|
||||
* No blockers, no updates.
|
||||
* Looking forward to the demo.
|
||||
* Kevin
|
||||
* worked on writing some documantation off the proxmox setup
|
||||
* Robert
|
||||
* No updates
|
||||
* Nicolas
|
||||
* No blockers
|
||||
* Worked with Valentin for the MVP tasks and estimations. Meet with Kiara.
|
||||
* Participate to all meetings today and work following the initial pp.
|
39
meeting-notes/2025-02-25 standup notes.md
Normal file
|
@ -0,0 +1,39 @@
|
|||
**Date**: 25.02.2025
|
||||
**Time**: 10.25 EET
|
||||
|
||||
**Absents:** Bjorn(excused)
|
||||
|
||||
**Presents:** Gheorghe, Ronny, Eric, Kiara, Lois, Nicolas, Robert, Koen, Kevin, Valentin
|
||||
|
||||
**Project status:**
|
||||
|
||||
• Gheorghe:
|
||||
o No blockers;
|
||||
o Yesterday: Internal PM activities;
|
||||
o Today: Moderate the DSU and internal PM activities;
|
||||
• Eric
|
||||
o No blockers
|
||||
o No updates
|
||||
• Kiara
|
||||
o Yesterday, I worked on stories, panel deployment
|
||||
o Today, continuing on panel deployment
|
||||
• Ronny
|
||||
o Discussion with Bjorn about Kanban board usage
|
||||
o No blockers
|
||||
• Kevin
|
||||
o I didn´t do much for the FeDiversity yesterday besides the demo and sprint planning meeting
|
||||
o will continue working on the panel today with Loïs and Kiara
|
||||
• Koen
|
||||
o No blockers
|
||||
o Aiming to have Slik ready to start work on design and UX this week (for the MVP)
|
||||
• Lois
|
||||
o No updates
|
||||
o will continue working on the panel today with Kevin and Kiara today
|
||||
• Nicolas
|
||||
o finalized consolidating `deployment/` into `infra/` directory, with machine definitions now containing their hardware part as well (ready to migrate to a NixOps4 Proxmox provider when there is one)
|
||||
o will work today on creating a full deployment from a simple one-or-two-field JSON file
|
||||
o if I have more time, I will work on e-mail support. was unblocked by Kevin, but I haven't made use of that yet
|
||||
• Robert
|
||||
o No updates
|
||||
• Valentin
|
||||
o No updates
|
30
meeting-notes/2025-02-26 standup notes.md
Normal file
|
@ -0,0 +1,30 @@
|
|||
**Present:** Hans, kiara, Gheorghe
|
||||
|
||||
**Absent:** Koen, Bjorn, Robert (all excused)
|
||||
|
||||
**Project status updates:**
|
||||
|
||||
* **Kiara**
|
||||
* yesterday, I worked on panel deployment, discussed breaking changes with Valentin
|
||||
* today, we will continue on these
|
||||
* **Hans**
|
||||
* Been ill
|
||||
* Working on a one-shot installation
|
||||
* **Eric**
|
||||
* no blockers
|
||||
* available
|
||||
* **Loïs**
|
||||
* No blockers
|
||||
* Working on Fedipanel
|
||||
* Continue working on Fedipanel with Kevin today
|
||||
* **Gheorghe**
|
||||
* No blockers
|
||||
* Yesterday: DSU and Internal PM activities
|
||||
* Today: DSU and internal PM activities
|
||||
* **Valentin**
|
||||
* Discussion with Kiara raised some architectural questions I would like to elaborate on with Robert and Nicolas as well
|
||||
* Essentially, it revolves around where to place code so we don't have to tear everything apart in a couple of weeks
|
||||
* I also had some internal meetings
|
||||
* **Niols**
|
||||
* Finalized moving hardware information into machine descriptions and discontinuing the old `deployment/` directory.
|
||||
* (Working) A proof of concept piece of work is needed to consume a small JSON file and produce a NixOps4 deployment.
|
13
meeting-notes/2025-02-26 version drift.md
Normal file
|
@ -0,0 +1,13 @@
|
|||
Managing version drift
|
||||
|
||||
Attendees: Nicolas, Kiara, Valentin
|
||||
|
||||
Problem: if we want to allow users control over when to update, would this not mean we may not tightly couple our Django data model with the underlying versions of module options (the "type" equivalent, where actual configurations are "values")?
|
||||
|
||||
- decouple the types in the deployed Fediversity code from past versions using json-schema?
|
||||
- would we need to store the json-schema? yes
|
||||
- would we need to store a way to display each json schema even if already have a way to visualize forms from json schema? if we want to explain schema changes requiring user decisions (if not also just communicating option addition/removal) then yes
|
||||
- is diffing json good enough for presentation? likely not. have we not lost too much structure? yes. we'd need to be able annotate the difference between schemas, which are essentially another form of migrations, except not at the ORM schema level
|
||||
- most of the time we'll only need to diff subsequent versions, but if we're good we'll make those mappings transitive
|
||||
- what about users wanting to update applications at different times?
|
||||
- for now let's keep this out of scope
|
13
meeting-notes/2025-02-26-architecture-discussion.md
Normal file
|
@ -0,0 +1,13 @@
|
|||
# Architecture discussion 2025-02-26
|
||||
|
||||
Attendees: Nicolas, Kiara, Valentin
|
||||
|
||||
Problem: if we want to allow users control over when to update, would this not mean we may not tightly couple our django with the underlying versions of module options (the "type" equivalent, where actual configurations are "values")?
|
||||
|
||||
- decouple using json-schema?
|
||||
- would we need to store the json-schema? yes
|
||||
- would we need to store a way to display each json schema even if already have a way to visualize forms from json schema? if we want to explain schema changes requiring user decisions (if not also just communicating option addition/removal) then yes
|
||||
- is diffing json good enough for presentation? have we not lost too much structure? likely not; we'd need to be able annotate the difference between schemas, which are essentially fancy migrations
|
||||
- most of the time we'll only need to diff subsequent versions, but if we're good we'll make those mappings transitive
|
||||
- what about users wanting to update applications at different times?
|
||||
- for now let's keep this out of scope
|
44
meeting-notes/2025-02-27 meeting notes.md
Normal file
|
@ -0,0 +1,44 @@
|
|||
**Standup meeting**
|
||||
|
||||
**Date:** 2025-02-27
|
||||
|
||||
**Present:** **Ronny**, **Gheorghe**, **Kiara**, **Eric**, **Valentin**, **Robert**, **Lois**, **Koen**
|
||||
|
||||
**Absent:** **Nicolas** (excused)
|
||||
|
||||
**Status update:**:
|
||||
|
||||
**Gheorghe**
|
||||
- No blocker
|
||||
- Yesterday: DSU and internal PM activities
|
||||
- Today: DSU and internal PM activities
|
||||
|
||||
**Eric**
|
||||
- No blockers
|
||||
|
||||
**Ronny**
|
||||
- No blockers
|
||||
- Yesterday: no Fediversity
|
||||
|
||||
**Kiara**
|
||||
- No blockers
|
||||
- Yesterday: deployed fedipanel, discussed decoupling deployment structure from fedipanel w/ @niols/@fricklerhandwerk
|
||||
- Today: work on triggering orchestration from fedipanel, guide slik on design
|
||||
|
||||
**Valentin**
|
||||
- Resolved the immediate blocker about version drift thanks to Kiara and Nicolas
|
||||
- Didn't get to writing any code
|
||||
|
||||
**Lois**
|
||||
- Worked on Fedipanel: separation of configuration form with Kevin
|
||||
- No blockers
|
||||
- Today: continue working on Fedipanel
|
||||
|
||||
**Robert**
|
||||
- Yesterday: no Fedi/NixOps
|
||||
- Today: state support in NixOps
|
||||
- No blockers
|
||||
|
||||
**Koen**
|
||||
- Have UX / UI designers for 200h in March (Timo and Thijs)
|
||||
- No blockers
|
29
meeting-notes/2025-03-03 standup notes.md
Normal file
|
@ -0,0 +1,29 @@
|
|||
**Standup:** 2025-03-03 @09:30
|
||||
**Present:** Bjorn, Kiara, Gheorghe, Kevin, Robert, Valentin, Ronny
|
||||
**Absent:** Nicholas (known), Hans (known)
|
||||
|
||||
* Bjorn
|
||||
* Today: Read up on the notes & issues. Other obligations
|
||||
* Tomorrow: Fediversity
|
||||
* Kiara
|
||||
* Past day: had an architectural discussion, worked on panel deployment, triggering nixops from the panel
|
||||
* Today: will continue on triggering nixops from the panel
|
||||
* Koen
|
||||
* No blockers
|
||||
* No updates
|
||||
* State of Hans
|
||||
* Kevin
|
||||
* No updates. Will see what I Missed last weeks since thursday.
|
||||
* Gheorghe
|
||||
* No blocker
|
||||
* Last week: Updated the project plan for the MVP in April+internal PM activities
|
||||
* Today: internal PM activities
|
||||
* Robert
|
||||
* No updates
|
||||
* Ronny
|
||||
* No blockers
|
||||
* No updates
|
||||
* Valentin
|
||||
* Did code reviews and caught up with discussion on Forgejo
|
||||
* Available to help finishing the two open user stories
|
||||
* Need to discuss with Robert the next integration points with NixOps4
|
47
meeting-notes/2025-03-03-progress-indicator-meeting.md
Normal file
|
@ -0,0 +1,47 @@
|
|||
# Sync with Robert on NixOps4 dependencies for the MVP
|
||||
|
||||
The current idea is to control Terraform from NixOps4 at the resource provider level and handle data flow in NixOps4
|
||||
|
||||
While we could interface with Terraform as a whole and let it handle its own dataflow, we'd be programming three components, and the idea was to reduce the number of components we need to take care of
|
||||
|
||||
Another option would be integrating terranix, but that's an entire different user story
|
||||
|
||||
Arguably we can implement all the variability for an otherwise fixed set of resources (such as secrets, DNS, ...) with what we have already
|
||||
|
||||
Nested deployments are only required if we have CLI-first use cases that operate directly on expressions
|
||||
|
||||
For demo purposes until further notice, our parameters are a constant as far as NixOps4 is concerned, and its internal data dependencies can be resolved e.g. in the front end's data model
|
||||
|
||||
More important for now is having TF provider wrappers for common use cases, because that is where the application value lives
|
||||
|
||||
- kiara: i'm not sure i see TF wrapping as as important as nested deployment, fallback way if we need a TF step seems embed/use TF itself
|
||||
|
||||
On progress indication: NixOps4 is using the tracing library underneath, which offers separate events and spans (with start and end)
|
||||
|
||||
Adding JSON output is a quick fix
|
||||
|
||||
The CLI progress indicator already uses this infrastructure
|
||||
|
||||
There's no interface for providers yet, because so far the assumption is that they're short-lived
|
||||
|
||||
Having that would be nice, but note that it would require substantial changes to NixOS build/activation logging
|
||||
|
||||
Most of the value can already be provided by the NixOps4 core, given it knows which resource providers need to be run and which are done
|
||||
|
||||
Could be follow OpenTelemetry in a creative way so NixOps4 doesn't have to own the schema
|
||||
|
||||
Long term providers could talk via API servers using some IDL such as capnproto
|
||||
|
||||
Conclusion: We will drop JSON into the nixops invocation for the MVP and use the basic JSON logging infrastructure for progress indication
|
||||
|
||||
Mid term we'll want Terraform provider wrappers to do the resource provisioning
|
||||
|
||||
We can continue discussing long-term architecture decisions (such as protocols, concurrency, scheduling) independent of near-term milestones
|
||||
|
||||
|
||||
Expression demonstrating the infinite recursion that would be resolved using [nested deployments](https://git.fediversity.eu/Fediversity/Fediversity/issues/170):
|
||||
|
||||
```nix
|
||||
resources = { config = { ... }; }
|
||||
// optionalAttrs (f resources.config) { vm = g resources; }
|
||||
```
|
35
meeting-notes/2025-03-04 standup notes.md
Normal file
|
@ -0,0 +1,35 @@
|
|||
**Standup:** 2025-03-04 @09:30
|
||||
**Present:** Bjorn, George, Ronny, Kevin, Lois, Valentin, Kiara, Robert
|
||||
**Absent:** Nicholas (known), Hans (known), Koen (known)
|
||||
|
||||
* Bjorn
|
||||
* Yesterday: no Fediversity.
|
||||
* Today: Catch up
|
||||
* Ronny
|
||||
* Yesterday no Fediversity
|
||||
* no blockers no updates
|
||||
* Gheorghe
|
||||
* No blockers
|
||||
* Yesterday: Internal specific PM activities
|
||||
* Today: Internal specific PM activities
|
||||
* Eric
|
||||
* No blockers
|
||||
* No updates
|
||||
* Kiara
|
||||
* Yesterday: Form PR. Unblock front & backend so triggering with NixOps will work.
|
||||
* Today: continue with this
|
||||
* Loïs
|
||||
* No blockers
|
||||
* No updates
|
||||
* will continue work with Kevin and Kiara on the django
|
||||
* Kevin
|
||||
* No updates
|
||||
* will continue work with lois and kiara on the django
|
||||
* Valentin
|
||||
* Clarified things we need from NixOps4 for the MVP and mid/long term with Robert and Kiara
|
||||
* Summary: a bit of JSON logging for now, but eventually we'll serve OpenTelemetry in the Panel for capturing fine-grained progress indication
|
||||
* Hacked out a sketch for managing versioned configuration schemas
|
||||
* Code reviews
|
||||
* Robert
|
||||
* Worked on OpenTelemetry logging
|
||||
* No blockers
|
29
meeting-notes/2025-03-05 standup notes.md
Normal file
|
@ -0,0 +1,29 @@
|
|||
**Standup:** 2025-03-05 @09:30
|
||||
**Present:** Bjorn, Eric, Gheorghe, Koen, Lois, Valentin, Kevin
|
||||
**Absent:** Nicholas (known), Hans (known), Ronny (known), Kiara (Nix gathering)
|
||||
|
||||
* Bjorn
|
||||
* Yesterday: other obligations :(
|
||||
* Today:
|
||||
* Q: How is the work on deliverable 3 going? Demo on Monday 10th...
|
||||
* Eric
|
||||
* No blockers, no updates
|
||||
* Gheorghe
|
||||
* No blockers
|
||||
* Testerday: Internal PM activities
|
||||
* Today: Internal PM activities
|
||||
* Loïs
|
||||
* Looked at Kiara's feedback for fedipanel
|
||||
* No blockers
|
||||
* Koen
|
||||
* Spoke with Thijs and Timo and Kiara
|
||||
* I would like a general 'how to check an application' before sending it to NixPkgs discussion (not now).
|
||||
* Remy (EU thing)
|
||||
* Valentin
|
||||
* Pingponged code with Kiara yesterday, should merge basic handling versioned configurations today
|
||||
* Available for consultation and code review
|
||||
* Kevin
|
||||
* worked on the django yesterday resolving some comments from valentin in our pr
|
||||
* schedule for today is pretty full so probaly wont get much done for fediverse
|
||||
* Robert
|
||||
* No updates
|
37
meeting-notes/2025-03-06 standup notes.md
Normal file
|
@ -0,0 +1,37 @@
|
|||
**Standup:** 2025-03-06 @09:30
|
||||
**Present:** Bjorn, Eric, Gheorghe, Koen, Lois, Ronny, Valentin
|
||||
**Absent:** Nicholas (known), Hans (known), Kiara (known)
|
||||
|
||||
* Gheorghe
|
||||
* No blockers
|
||||
* Yesterday: Internal PM activities + starting the central document for the Tweag back-end Nix creation.
|
||||
* Today: Internal PM activities + continuing the central document for the Tweag back-end Nix creation.
|
||||
* Koen
|
||||
* no blockers
|
||||
* no updates
|
||||
* Valentin
|
||||
* Discussed steps for demo preparation with Bjorn, Kevin, Lois
|
||||
* Continued tying up the data models in the backend
|
||||
* Reviewed the deliverables document Gheorghe prepared
|
||||
* Reviewed Robert's "modular services" PR
|
||||
* https://github.com/NixOS/nixpkgs/pull/372170/
|
||||
* Bjorn
|
||||
* Yesterday: spoke with Ronny, Valentin & with Kevin & Lois about the demo
|
||||
* Today: will speak with Koen.
|
||||
* TODO: will remove the old board
|
||||
* Loïs
|
||||
* Blockers: Needing a review on pr 141
|
||||
* Worked on MVP 2 preperation
|
||||
* Worked with Valentin and Kevin on versioned configurations
|
||||
* Today: Prepare further for demo 2
|
||||
* Eric
|
||||
* no blockers
|
||||
* available
|
||||
* Kevin
|
||||
* blocked on needing a review on the pr 141
|
||||
* Yesterday, met with loïs and Valentin to look at versioned configurations
|
||||
* also had a meeting with loïs, valentin and Bjorn for the mvp 2 next tuesday
|
||||
* This morning had a discusion with Loïs to prepare for the next demo
|
||||
* Ronny
|
||||
* Had a chat with Bjorn about structure
|
||||
* Preparing the partnermeeting on Friday
|
15
meeting-notes/2025-03-07 standup notes.md
Normal file
|
@ -0,0 +1,15 @@
|
|||
**Standup:** 2025-03-07 @09:30
|
||||
**Present:** Bjorn, Gheorghe
|
||||
|
||||
|
||||
* Gheorghe
|
||||
* No blockers.
|
||||
* Yesterday: Internal project meetings and actions. Meet Erik and discussed more details about the documentation.
|
||||
* Today: Internal project meetings and actions.
|
||||
* Bjorn
|
||||
* Yesterday:
|
||||
* chat with Koen
|
||||
* cleanup Meta repo
|
||||
* Today:
|
||||
* partner status meetup
|
||||
* add daily standup notes to repo
|
26
meeting-notes/2025-03-10 standup notes.md
Normal file
|
@ -0,0 +1,26 @@
|
|||
**Standup:** 2025-03-10 @09:30
|
||||
**Present:** Björn, Hans, Gheorghe, Ronny, Robert
|
||||
**Absent:** Koen (known), Kevin (known) Lois (known), Valetin (known), Nicolas (known)
|
||||
|
||||
* Björn
|
||||
* Friday:
|
||||
* Partners meeting
|
||||
* Standup (no more on Friday)
|
||||
* Today
|
||||
* Chat with Kiara?
|
||||
* Mail partners
|
||||
* Gheorghe
|
||||
* No blockers
|
||||
* Friday: Internal PM activities
|
||||
* Today: Internal PM activities
|
||||
* Hans (welcome back!)
|
||||
* planning to work on other projects than Fediversity
|
||||
* Robert
|
||||
* Did some prep work for improving flakes integration
|
||||
* Will not attend most standups until 27th (see wiki)
|
||||
* Will be available at Matrix for questions
|
||||
* Ronny
|
||||
* No blockers
|
||||
* No updates
|
||||
* Need to reschedule partnermeeting
|
||||
* Looking forward to demo tomorrow
|
32
meeting-notes/2025-03-11 standup notes.md
Normal file
|
@ -0,0 +1,32 @@
|
|||
**Standup:** 2025-03-11 @09:30
|
||||
**Present:** Bjorn, Kevin, Koen, Kiara, Gheorghe, Lois, Eric, Ronny
|
||||
**Absent:** Hans (known), Valentin(known), Nicolas(known)
|
||||
|
||||
* Bjorn
|
||||
* Yesterday: partners mail
|
||||
* Today:
|
||||
* Demo
|
||||
* Going through planning
|
||||
* Chat with Kiara
|
||||
* Koen
|
||||
* fighting windmills (nix and debian). Start with learning the app on the OS it supports, than look at things like Nix.
|
||||
* Kevin
|
||||
* no updates:
|
||||
* today: doing the demo with lois en kiara
|
||||
* Kiara
|
||||
* Past days: Planet Nix
|
||||
* Today: continue triggering orchestration from panel, get back up to speed, maybe discuss roadmap
|
||||
* Gheorghe
|
||||
* No blockers
|
||||
* Yesterday: Internal PM activities
|
||||
* Today: Internal PM activities
|
||||
* Loïs
|
||||
* Today: Demo 2, discuss whats next
|
||||
* Past days: prepared for demo 2
|
||||
* Eric
|
||||
* No blockers, available
|
||||
* Ronny
|
||||
* No blockers
|
||||
* Looking forward to demo
|
||||
* Robert
|
||||
* no updates and now traveling listening in but noisy environment
|
19
meeting-notes/2025-03-12 standup notes.md
Normal file
|
@ -0,0 +1,19 @@
|
|||
Standup: 2025-03-12 @09:30
|
||||
Present: Björn, Kiara, Eric, Kevin, Lois
|
||||
Absent: Koen (known), Gheorghe(known), Nicolas(known), Robert(known), Valentin(known), Ronny(known)
|
||||
|
||||
Updates:
|
||||
* Kiara:
|
||||
* Yesterday: paired on nixops from django with Lois
|
||||
* Today: ^
|
||||
* Bjorn
|
||||
* Yesterday: Demo & meetings
|
||||
* Today: going through work packages / deliverables & other obligations
|
||||
* Eric
|
||||
* available
|
||||
* Loïs
|
||||
* Yesterday: Demo 2, made a connection between panel and Nixops
|
||||
* Continue working on the panel today
|
||||
* Kevin
|
||||
* Yesterday: Demo 2 & after discussion
|
||||
* small talk a with koen about my availability
|
25
meeting-notes/2025-03-13 standup notes.md
Normal file
|
@ -0,0 +1,25 @@
|
|||
**Standup:** 2025-03-13 @09:30
|
||||
**Present:** Bjorn, Lois, Kevin, Eric, Valentin, Kiara, Ronny
|
||||
**Absent:** Hans (known), Nicolas(known), Koen(known)
|
||||
|
||||
* Loïs
|
||||
* Yesterday: worked on deploying something with the fedipanel with Kiara, but we are having some nix issues.
|
||||
* Meeting with Thijs and Tiemon about the fedipanel design
|
||||
* Updated Kanban bord
|
||||
* Today: meet with Kiara, Kevin and Valentin?
|
||||
* Bjorn
|
||||
* Yesterday: Other obligations
|
||||
* Today: Other obligations
|
||||
* Eric
|
||||
* no updates, available
|
||||
* Kevin
|
||||
* Yesterday had a meeting with kiara, loïs and thijs and tiemon from slik about the design of the fedi panel
|
||||
* followed along a small bit with what kiara and loïs where doing
|
||||
* today: will work with loïs and kiara on de the panel
|
||||
* around 12:00 i will leave with koen to leiden again
|
||||
* Kiara
|
||||
* Yesterday: design meet, trigger nixops from django (#246) w/ lois
|
||||
* Today: continue on trigger nixops from django
|
||||
* Valentin
|
||||
* No updates
|
||||
* Has some time to pair with the devs today
|
20
meeting-notes/2025-03-17 standup notes.md
Normal file
|
@ -0,0 +1,20 @@
|
|||
_Notes re-created as I was not fast enough to download them before the session was ended_
|
||||
|
||||
**Standup:** 2025-03-17 @09:30
|
||||
|
||||
* Kevin
|
||||
* Thursday: troubleshooted the forgejo with eric after an reboot the notifications work again
|
||||
* Friday: no updates
|
||||
* Today: give valentin dns access. moslty will do procolix stuff but try to do some small fedi stuff inbetween
|
||||
* Valentin
|
||||
* At ocean sprint this week
|
||||
* Thursday: Discussed code review items with Kiara, studied deployment code to clarify next steps, went through new issues Kiara opened
|
||||
* Kiara
|
||||
* Past day: work on triggering orchestration from the panel w/ @lois
|
||||
* Today: continue on this
|
||||
* Björn
|
||||
* Friday: partners meeting, talk with Koen.
|
||||
* Today: other obligations
|
||||
* Ronny
|
||||
* Partners meeting
|
||||
* Today: other stuff
|
26
meeting-notes/2025-03-18 standup notes.md
Normal file
|
@ -0,0 +1,26 @@
|
|||
**Standup:** 2025-03-18 @09:30
|
||||
**Present:** Bjorn, Eric, Lois, Kevin, Ronny, Valentin, Kiara
|
||||
**Absent:** Koen(known), Robert(known), Gheorghe(known), Nicolas(known), Hans(known)
|
||||
|
||||
_Note: please do *not* press 'end meeting for all'_ 😉
|
||||
|
||||
* Björn
|
||||
* Yesterday: only standup
|
||||
* Today: worksession with Ronny updating the deliverables
|
||||
* Loïs
|
||||
* Thursday: worked with Kiara on deploying Fedipanel
|
||||
* Today: continue working on the fedi panel with Kevin
|
||||
* Valentin
|
||||
* Talked with Robert about the SSH issues encountered while trying to deploy, pushed half of a workaround
|
||||
* Kiara
|
||||
* Yesterday: locally orchestrate from panel
|
||||
* Today: deploy panel able to orchestrate
|
||||
* Kevin
|
||||
* Yesterday spend a few hours going through all the work i have for procolix and planning them so I have more time now this week to fully work on fediverse from today to thursday
|
||||
* So today i will be working on the on the panel with Loïs again
|
||||
* Eric
|
||||
* helped kevin to get forgejo notifications working again
|
||||
* available
|
||||
* Ronny
|
||||
* Yesterday: standup
|
||||
* Today: worksession with Bjorn updating deliverables
|
31
meeting-notes/2025-03-19 standup notes.md
Normal file
|
@ -0,0 +1,31 @@
|
|||
**Standup:** 2025-03-19 @09:30
|
||||
**Present:** Eric, Lois, Kevin, Ronny, Koen, Kiara
|
||||
**Absent:** Gheorghe (known), Nicholas(known)
|
||||
|
||||
**Updates**
|
||||
* Eric
|
||||
* available
|
||||
* Lois
|
||||
* Yesterday: worked on the progess indicatorwith kevin
|
||||
* Today: Continue working on the progress indicator
|
||||
* Kevin
|
||||
* Yesterday: worked with loïs on the progress indicator
|
||||
* Today
|
||||
* morning bit busy with other stuff have to take my cat to the vet for vacination
|
||||
* the rest of the day will continue with kiara en lois on the indicator and the panel
|
||||
* Ronny
|
||||
* Worked with Bjorn on the deliverables.
|
||||
* Had a conversation with Eric about outreach
|
||||
* Had an internal NLnet converation about the project
|
||||
* Koen
|
||||
* No blockers
|
||||
* today: level with Kiara and Lois and Kevin (afternoon)
|
||||
* Valentin
|
||||
* Fixed panel deployment code, now accessible under https://demo.fediversity.eu
|
||||
* Reviewed Kiara's code
|
||||
* Kiara
|
||||
* Yesterday: distilled pr for local deploy button, continue on getting it to work in production
|
||||
* Today: continue on deploy button in production
|
||||
* Björn
|
||||
* Yesterday: worked on deliverables with Ronny & spoke with Koen. Tried to get some work done on the communication strategy
|
||||
* Today: other obligations
|