109 Commits

Author SHA1 Message Date
285de75de7 Merge pull request 'ADD-event-20250816-01-01-daca4ba5466369ff' (#5151) from ADD-event-20250816-01-01-daca4ba5466369ff into master
Some checks reported errors
continuous-integration/drone/push Build was killed
Reviewed-on: #5151
2025-07-15 08:25:46 +00:00
5e1ce18722 Merge pull request 'ADD-event-20250723-01-01-112660bb101cbbee' (#5149) from ADD-event-20250723-01-01-112660bb101cbbee into master
Some checks reported errors
continuous-integration/drone/push Build was killed
Reviewed-on: #5149
2025-07-15 08:25:09 +00:00
53d5318c87 Commit generated by fsfe-website/cgi-bin/registerevent, to add event fsfe.org/events/2025/event-20250816-01.en.xml
All checks were successful
continuous-integration/drone/pr Build is passing
Signed-off-by: fsfe-website/cgi-bin/registerevent.php <syshackers@fsfe.org>
2025-07-15 08:19:23 +00:00
5fed15d0f1 Fix street name
All checks were successful
continuous-integration/drone/pr Build is passing
2025-07-15 07:23:27 +00:00
3ac00a5a66 Fix street name
All checks were successful
continuous-integration/drone/pr Build is passing
2025-07-15 07:22:48 +00:00
478f2df836 Update donor list
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-15 07:47:43 +02:00
26a5c0d303 Commit generated by fsfe-website/cgi-bin/registerevent, to add event fsfe.org/events/2025/event-20250723-01.de.xml
All checks were successful
continuous-integration/drone/pr Build is passing
Signed-off-by: fsfe-website/cgi-bin/registerevent.php <syshackers@fsfe.org>
2025-07-14 19:25:11 +00:00
048a9c932d Commit generated by fsfe-website/cgi-bin/registerevent, to add event fsfe.org/events/2025/event-20250723-01.en.xml
All checks were successful
continuous-integration/drone/pr Build is passing
Signed-off-by: fsfe-website/cgi-bin/registerevent.php <syshackers@fsfe.org>
2025-07-14 19:24:02 +00:00
dc904cbf55 fixed typo
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-14 13:15:22 +02:00
79b353c793 try to fix title for bonnie
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-14 13:07:41 +02:00
3e7698dcb2 Merge pull request 'changing promo authorship and download info' (#5148) from promo-20250714 into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5148
2025-07-14 10:54:07 +00:00
c45ffe12c3 changing promo authorship and download info
All checks were successful
continuous-integration/drone/pr Build is passing
2025-07-14 12:51:37 +02:00
490cc0340a add bonnie's new title
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-14 11:32:15 +02:00
0f3846605d Added bank fees to list
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-11 14:52:41 +02:00
b9ddc19e84 YH4F update to YH4F 2026
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-11 08:02:16 +00:00
46a41fa803 Update donor list
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-11 09:38:46 +02:00
e1dc67c1da Merge pull request 'fixing typo' (#5143) from merch-20250710 into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5143
2025-07-10 08:28:16 +00:00
adbe863dd5 fixing typo
All checks were successful
continuous-integration/drone/pr Build is passing
2025-07-10 10:25:58 +02:00
fd796f77ec update status
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-10 09:52:33 +02:00
341527c85a Merge pull request 'Fix typo on nl-202507.en' (#5142) from fix_nl-202507 into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5142
2025-07-09 17:00:55 +00:00
cd9ac340e2 Fix typo on nl-202507.en
All checks were successful
continuous-integration/drone/pr Build is passing
2025-07-09 18:47:09 +02:00
fc512db29d Merge pull request 'Adding additional proofreading by Richard on July newsletter' (#5141) from fix_nl-202507 into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5141
2025-07-09 16:41:12 +00:00
0544d0c5cf improve formatting
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-09 10:40:20 +02:00
af877b1f68 add note about accommodation
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-09 10:34:30 +02:00
451a6df28d Update account list
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-08 23:29:41 +02:00
66858c7006 Added email tag to nl-202507
All checks were successful
continuous-integration/drone/pr Build is passing
2025-07-08 19:56:28 +02:00
2f394f2cf4 Latest Richard fixes on nl-202507.en 2025-07-08 19:54:39 +02:00
bf9ccdc1f1 remove extra header
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-08 13:41:31 +02:00
5c1665cbd2 small fix
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-08 13:36:15 +02:00
1e28342b0d Merge pull request '20250708-newsletter' (#5137) from 20250708-newsletter into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5137
2025-07-08 10:03:54 +00:00
9d23fb249a adding toot and highlights tag
All checks were successful
continuous-integration/drone/pr Build is passing
2025-07-08 12:00:45 +02:00
6a2e3d861e ter the commit message for your changes. Lines starting 2025-07-08 11:36:09 +02:00
82f33d1029 Merge pull request 'adding newsletter' (#5136) from 20250708-newsletter into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5136
2025-07-08 09:35:19 +00:00
bce2e2e130 adding newsletter
All checks were successful
continuous-integration/drone/pr Build is passing
2025-07-08 11:34:38 +02:00
fc7dade7b3 adding newsletter
Some checks failed
continuous-integration/drone/pr Build is failing
2025-07-08 11:30:36 +02:00
ab1a09573a adding newsletter
Some checks failed
continuous-integration/drone/pr Build is failing
2025-07-08 11:28:24 +02:00
f4026a1605 bump library version
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-08 10:50:01 +02:00
3f6b038386 Merge pull request 'ADD-event-20250710-01-01-19b43e15da414d3c' (#5134) from ADD-event-20250710-01-01-19b43e15da414d3c into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5134
2025-07-08 07:07:19 +00:00
f25773cdb9 Commit generated by fsfe-website/cgi-bin/registerevent, to add event fsfe.org/events/2025/event-20250710-01.en.xml
All checks were successful
continuous-integration/drone/pr Build is passing
Signed-off-by: fsfe-website/cgi-bin/registerevent.php <syshackers@fsfe.org>
2025-07-07 20:10:11 +00:00
a0c19b1833 PD form functionality
All checks were successful
continuous-integration/drone/push Build is passing
if a other rate was added in the PD form, check the radio button automatically to use the other rate.
2025-07-07 15:10:01 +02:00
db16847fe8 fix date
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-02 07:55:37 +02:00
d4b2a2e159 fix ampersants
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-02 07:37:05 +02:00
0a9053fa2f fix ampersants
Some checks failed
continuous-integration/drone/push Build is failing
2025-07-02 07:35:42 +02:00
52a27375cf fix ampersants
Some checks failed
continuous-integration/drone/push Build is failing
2025-07-02 07:34:05 +02:00
512649365b added Berlin group event
Some checks failed
continuous-integration/drone/push Build is failing
End of 10 - Linux install parties at c-base
2025-07-02 07:31:30 +02:00
bc0ed5c97b move office
All checks were successful
continuous-integration/drone/push Build is passing
2025-07-01 14:55:38 +02:00
f06d9ae598 WIP: YH4F update registration link
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-07-01 14:13:09 +02:00
e26ee41ba2 Merge pull request 'Add Sofía Aritz to jury' (#5132) from sofiaritz/fsfe-website:update-jury-page into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5132
2025-07-01 11:32:04 +00:00
d905ca1578 Clarity 2025-07-01 13:28:41 +02:00
d38e07fba7 Add Sofía Aritz to jury 2025-07-01 11:52:29 +02:00
67d7bd338f Merge pull request 'fix: use same for loop for both subdir stuff' (#5130) from fix/early-dirs into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5130
2025-07-01 08:06:18 +00:00
edd9d73f6f Merge pull request 'ADD-event-20251011-01-01-6baeee84ecbd94bc' (#5131) from ADD-event-20251011-01-01-6baeee84ecbd94bc into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5131
2025-06-30 10:09:27 +00:00
5a642dc67b Merge branch 'master' into ADD-event-20251011-01-01-6baeee84ecbd94bc
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-30 10:08:19 +00:00
c01669313f Update Tübix info after a talk was moved to a different room
All checks were successful
continuous-integration/drone/push Build is passing
2025-06-30 11:50:47 +02:00
867c027c48 Commit generated by fsfe-website/cgi-bin/registerevent, to add event fsfe.org/events/2025/event-20251011-01.en.xml
All checks were successful
continuous-integration/drone/pr Build is passing
Signed-off-by: fsfe-website/cgi-bin/registerevent.php <syshackers@fsfe.org>
2025-06-30 09:41:32 +00:00
869d384079 fix: use same for loop for both subdir stuff
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-28 09:46:52 +01:00
03f3139d63 Merge pull request 'updating hightlights tag' (#5129) from news-20250627-highlights into master
Some checks reported errors
continuous-integration/drone/push Build was killed
Reviewed-on: #5129
2025-06-27 09:16:32 +00:00
58b8b6e470 updating hightlights tag
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-27 11:19:08 +02:00
6c2f29f74c Merge pull request 'adding news tag' (#5128) from news-20250627-dma into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5128
2025-06-27 09:12:08 +00:00
021a0c6c80 adding news tag
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-27 11:15:00 +02:00
fbf1599c3e YH4F update Sponsor Logos
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
- [ ] increase space around Proxmox Logo
- [ ] ensure size of logo is appropriate
- [ ] add links to Sponsors webpage
2025-06-26 21:13:53 +02:00
4908593bf7 YH4F: exchange Proxmox logo for better quality
All checks were successful
continuous-integration/drone/pr Build is passing
continuous-integration/drone/push Build is passing
2025-06-26 19:05:34 +02:00
9c7843638f Merge pull request 'feat: use uv' (#5099) from feat/pyproject into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5099
Reviewed-by: tobiasd <tobiasd@fsfe.org>
2025-06-26 08:32:24 +00:00
13fa0cef98 Merge pull request 'feat: add renovate to the website' (#5125) from feat/renovate into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5125
2025-06-26 08:03:06 +00:00
ca3fa0e08b feat: add renovate to the website
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-25 19:16:36 +01:00
c79f5ef415 feat: use uv
All checks were successful
continuous-integration/drone/pr Build is passing
its faster, and has some nicer features
2025-06-25 18:58:17 +01:00
940813aad0 Merge pull request 'fix: more nonstandard date formats' (#5124) from fix/dates into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5124
2025-06-24 18:52:10 +00:00
0732465bce fix: more nonstandard date formats
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-24 19:49:47 +01:00
e87de63440 Merge pull request 'fix: nonstandard timestamp format in event' (#5123) from fix/date into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5123
2025-06-24 18:43:14 +00:00
b961b340fa fix: nonstandard timestamp format in event
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-24 19:41:03 +01:00
6162d9c692 added Danish AZ link for the peertube
All checks were successful
continuous-integration/drone/push Build is passing
2025-06-23 15:50:06 +02:00
72c2d69e00 Merge pull request 'ADD-event-20250530-01-01-6ae16dbf0e0edc00' (#5036) from ADD-event-20250530-01-01-6ae16dbf0e0edc00 into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5036
2025-06-23 12:47:23 +00:00
9a8e290e4b fix event
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-23 14:46:11 +02:00
e70d45b88a Merge pull request 'Add delay notice to merch and promo pages' (#5112) from sofiaritz/fsfe-website:order-delay-notice-25 into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5112
2025-06-20 09:13:44 +00:00
0c7abbc0ba Merge pull request 'changing ada activity to add the movie too' (#5113) from 20250619-activities into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5113
2025-06-19 14:34:26 +00:00
4952bd6af1 changing ada activity to add the movie too
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-19 16:35:51 +02:00
1b11c4c1ac add delay notice 2025-06-19 16:02:15 +02:00
14cff9b765 Merge pull request 'Update fsfe.org/activities/deviceneutrality/interop-survey.en.xhtml' (#5111) from dario-patch-5 into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5111
2025-06-18 13:37:42 +00:00
a891997aef Update fsfe.org/activities/deviceneutrality/interop-survey.en.xhtml
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-18 12:47:44 +00:00
a5ba8c4052 Merge pull request 'Update fsfe.org/news/2025/news-20250618-01.en.xhtml' (#5109) from dario-patch-5 into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5109
2025-06-18 11:40:23 +00:00
26132e6818 Merge pull request 'Update fsfe.org/activities/deviceneutrality/interop-survey.en.xhtml' (#5110) from dario-patch-6 into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5110
2025-06-18 11:17:35 +00:00
de8f0cd7f1 Update fsfe.org/activities/deviceneutrality/interop-survey.en.xhtml
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-18 11:16:28 +00:00
31669ae88e Update fsfe.org/news/2025/news-20250618-01.en.xhtml
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-18 11:14:46 +00:00
1decc9bf6f fixing news item
All checks were successful
continuous-integration/drone/push Build is passing
2025-06-18 13:01:36 +02:00
2d2b5103a9 Update fsfe.org/news/2025/news-20250618-01.en.xhtml
Some checks failed
continuous-integration/drone/pr Build is failing
2025-06-18 10:51:56 +00:00
847e124c84 Merge pull request 'Update fsfe.org/news/2025/news-20250618-01.en.xhtml' (#5107) from dario-patch-4 into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5107
2025-06-18 10:37:13 +00:00
5da9e7f788 Update fsfe.org/news/2025/news-20250618-01.en.xhtml
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-18 10:36:17 +00:00
754f531af8 Merge pull request 'Update fsfe.org/news/2025/news-20250618-01.en.xhtml' (#5106) from dario-patch-3 into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5106
2025-06-18 10:35:14 +00:00
a91acf6f9f Update fsfe.org/news/2025/news-20250618-01.en.xhtml
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-18 10:33:46 +00:00
c68bf22ad5 Merge pull request 'news-20250618-interop' (#5105) from news-20250618-interop into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5105
2025-06-18 10:19:54 +00:00
e33e223421 Update fsfe.org/news/2025/news-20250618-01.en.xhtml
All checks were successful
continuous-integration/drone/pr Build is passing
adding alt text
2025-06-18 10:18:30 +00:00
3dd38aa574 Update fsfe.org/news/2025/news-20250618-01.en.xhtml
fixing links
2025-06-18 10:14:08 +00:00
c4abce43f1 Merge pull request 'adding banner' (#5104) from fix-lp into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5104
2025-06-18 10:13:17 +00:00
e0ba16076d adding banner
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-18 12:12:07 +02:00
c76a58e325 Merge pull request 'preparing DN and DMA page for interop-survey publication' (#5100) from interop-survey-minor into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5100
2025-06-18 10:09:04 +00:00
dcfafbe274 Update fsfe.org/activities/deviceneutrality/index.en.xhtml
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-18 10:08:29 +00:00
5a9ff72e2b Merge pull request 'Update fsfe.org/news/2025/news-20250618-01.en.xhtml' (#5103) from news-20250618-interop into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5103
2025-06-18 09:59:38 +00:00
a24269f8a0 Update fsfe.org/news/2025/news-20250618-01.en.xhtml
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-18 09:58:08 +00:00
ca83e2b5c8 Merge pull request 'interop-20250618' (#5101) from interop-20250618 into master
Some checks reported errors
continuous-integration/drone/push Build was killed
Reviewed-on: #5101
2025-06-18 09:44:17 +00:00
9d37a55e74 Merge pull request 'news interop survey' (#5102) from news20250618 into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5102
2025-06-18 09:41:56 +00:00
3385fffd6c news interop survey
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-18 11:39:40 +02:00
3f79cdf2b6 changing file
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-18 11:20:28 +02:00
a673e3b84c adding interop survey page 2025-06-18 11:11:58 +02:00
3ef4f69d7d update sofia
All checks were successful
continuous-integration/drone/push Build is passing
2025-06-18 10:48:20 +02:00
ef4e2cee93 preparing DN and DMA page for interop-survey publication
Some checks failed
continuous-integration/drone/pr Build is failing
2025-06-18 10:46:24 +02:00
422024a396 Merge pull request 'feat: do not prepare unnecessary subdirectories' (#5098) from feat/lxml into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5098
2025-06-17 20:37:11 +00:00
ee778119f0 feat: do not prepare unnecessary subdirectories
All checks were successful
continuous-integration/drone/pr Build is passing
2025-06-15 22:36:04 +01:00
0e37c88daf updated pd form sources
All checks were successful
continuous-integration/drone/push Build is passing
2025-06-15 06:36:45 +02:00
f880a5ed0d Commit generated by fsfe-website/cgi-bin/registerevent, to add event fsfe.org/events/2025/event-20250530-01.it.xml
All checks were successful
continuous-integration/drone/pr Build is passing
Signed-off-by: fsfe-website/cgi-bin/registerevent.php <syshackers@fsfe.org>
2025-05-22 21:12:11 +00:00
132 changed files with 2517 additions and 697 deletions

1
.dockerignore Symbolic link
View File

@ -0,0 +1 @@
.gitignore

3
.gitignore vendored
View File

@ -5,9 +5,10 @@ global/data/topbanner/.topbanner.??.xml
.*.xmllist
# Local build stuff
output
# Python venv
# Python stuff
.venv
__pycache__
uv.lock
#Nltk
.nltk_data

View File

@ -1,33 +1,30 @@
FROM debian:latest
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
# Install deps
RUN apt update
RUN apt install --yes --no-install-recommends \
RUN apt-get update && apt-get install --yes --no-install-recommends \
rsync \
libxslt1.1 \
libxml2 \
golang \
python3 \
python3-venv \
python3-pip \
git \
node-less \
openssh-client \
ca-certificates \
expect
# Set uv project env, to persist stuff moving dirs
ENV UV_PROJECT_ENVIRONMENT=/root/.cache/uv/venv
# Set the workdir
WORKDIR /website-source
# Setup venv
ENV VIRTUAL_ENV=/opt/venv
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
# Copy the requirements
# Copy the pyproject and build deps
# Done in a seperate step for optimal docker caching
COPY ./requirements.txt /website-source/requirements.txt
RUN pip install -r /website-source/requirements.txt
COPY ./pyproject.toml .
RUN uv sync --no-install-package build
# Copy everything else
COPY . /website-source/
WORKDIR /website-source
COPY . .
ENTRYPOINT [ "bash", "./entrypoint.sh" ]

View File

@ -82,12 +82,12 @@ Alterations to build scripts or the files used site-wide will result in near ful
### Native
We can either install the required dependencies manually using our preferred package manager. If you are a nix use one can run `nix-shell` to enter a shell with the required build dependencies, with the python `virtualenv` already installed and activated.
We can either install the required dependencies manually using our preferred package manager. If you are a nix use one can run `nix-shell` to enter a shell with the required build dependencies.
If installing manually, the required binary names are
```
python3 pip
uv
```
Also needed are the libraries
@ -96,17 +96,9 @@ Also needed are the libraries
libxml2 libxslt
```
Then, we must activate a Python virtual env and install the python dependencies.
As we are using [UV](https://docs.astral.sh/uv/) we can just run the build process directly, and let it handle deps.
```
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
After getting the dependencies one way or another we can actually build and serve the pages.
The pages can be built and served by running `./build.py`. Try `--help` for more information. The simple web server used lacks the features of `apache` which used on the FSFE web servers. This is why no index is automatically selected for each directory and other behaviours.
The pages can be built and served by running `uv run build`. Try `--help` for more information. The simple web server used lacks the features of `apache` which used on the FSFE web servers. This is why no index is automatically selected for each directory and other behaviours.
### Docker
@ -129,7 +121,7 @@ KEY_PRIVATE=none KEY_PASSWORD=none GIT_TOKEN=none docker compose
Once your preferred method has been chosen, simply running `docker compose run --service-ports build --serve` should build the webpages and make them available over localhost.
Some more explanation: we are essentially just using docker as a way to provide dependencies and then running the build script. All flags after `build` are passed to `build.py`. The `service-ports` flag is required to open ports from the container for serving the output, not needed if not using the `--serve` flag of the build script.
Some more explanation: we are essentially just using docker as a way to provide dependencies and then running the build script. All flags after `build` are passed to the `build` cli. The `service-ports` flag is required to open ports from the container for serving the output, not needed if not using the `--serve` flag of the build script.
## Githooks

View File

@ -2,5 +2,6 @@
#
# SPDX-License-Identifier: GPL-3.0-or-later
# __init__.py is a special Python file that allows a directory to become
# a Python package so it can be accessed using the 'import' statement.
from .build import main
__all__ = ["main"]

View File

@ -7,21 +7,20 @@
import argparse
import logging
import multiprocessing
import os
import sys
from pathlib import Path
from build.lib.misc import lang_from_filename
from .lib.misc import lang_from_filename
from build.phase0.full import full
from build.phase0.global_symlinks import global_symlinks
from build.phase0.prepare_early_subdirectories import prepare_early_subdirectories
from .phase0.full import full
from .phase0.global_symlinks import global_symlinks
from .phase0.prepare_early_subdirectories import prepare_early_subdirectories
from build.phase1.run import phase1_run
from build.phase2.run import phase2_run
from .phase1.run import phase1_run
from .phase2.run import phase2_run
from build.phase3.serve_websites import serve_websites
from build.phase3.stage_to_target import stage_to_target
from .phase3.serve_websites import serve_websites
from .phase3.stage_to_target import stage_to_target
logger = logging.getLogger(__name__)
@ -84,7 +83,11 @@ def parse_arguments() -> argparse.Namespace:
return args
def main(args: argparse.Namespace):
def main():
"""
Main process of the website builder
"""
args = parse_arguments()
logging.basicConfig(
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
@ -118,13 +121,6 @@ def main(args: argparse.Namespace):
pool,
)
# Early subdirs
# for subdir actions that need to be performed very early in the build process. Do not get access to languages to be built in, and other benefits of being ran later.
prepare_early_subdirectories(
Path(),
args.processes,
)
stage_required = any(
[args.stage, "@" in args.target, ":" in args.target, "," in args.target]
)
@ -135,6 +131,12 @@ def main(args: argparse.Namespace):
if not site.exists():
logger.critical(f"Site {site} does not exist, exiting")
sys.exit(1)
# Early subdirs
# for subdir actions that need to be performed very early in the build process. Do not get access to languages to be built in, and other benefits of being ran later.
prepare_early_subdirectories(
site,
args.processes,
)
languages = (
args.languages
if args.languages
@ -157,13 +159,3 @@ def main(args: argparse.Namespace):
if args.serve:
serve_websites(working_target, 2000, 100)
if __name__ == "__main__":
"""
Main process of the website builder
"""
# Change to the dir the script is in.
os.chdir(os.path.dirname(__file__))
args = parse_arguments()
main(args)

View File

@ -13,7 +13,7 @@ def prepare_early_subdirectories(source_dir: Path, processes: int) -> None:
"""
Find any early subdir scripts in subdirectories and run them
"""
logger.info("Preparing Early Subdirectories")
logger.info(f"Preparing Early Subdirectories for site {source_dir}")
for subdir_path in map(
lambda path: path.parent, source_dir.glob("**/early_subdir.py")
):

View File

@ -1,21 +1,35 @@
# Contributing
## Build Process Code
### Tooling
We use [UV](https://docs.astral.sh/uv/) for managing python versions, and project dependencies.
Please install it in your prefered package manager, and then use
```
uv run build
```
To run the build process.
We check the validity of python code in the repo using [ruff](https://astral.sh/ruff). We use it for both checking and formatting, with `ruff check` enabled in CI.
To run it in the project using the project config, please use `uv run ruff`.
### Overview Stuff
We try to keep to some design patterns to keep things manageable.
Firstly, each phase as described in [the overview](./overview.md) should handle a meaningfully different kind of interaction. Each phase should be structured, to the greatest degree possible, as a sequence of steps. We consider that each phase should have a `run.py` file that exposes a `ipahse_*run` function that takes the arguments needed for its phase.
Each run function then calls a sequence of functions that are defined in the other files in the `phase*` folder. Each other file in the folder should expose one function, with the same name as the file, minus file extension. For example, `create_files.py` should expose the function `create_files`. It is a common pattern for the first expose function to generate a list of files or things to act on, and then multithread this using another function.
Each run function then calls a sequence of functions that are defined in the other files in the `phase*` folder. Each other file in the folder should expose one function, with the same name as the file, minus file extension. For example, `create_files.py` should expose the function `create_files`. It is a common pattern for the first expose function to generate a list of files or things to act on, and then multithread this using another function.
Each step function should use `logger.info` at the top of its function to declare what it is doing.
### Best Practices
This is a little bit of a mesys list of things we have found that are not perhaps entirely obvious.
This is a little bit of a messy list of things we have found that are not perhaps entirely obvious.
- When doing manipulation of stuff, have a look in the lib functions to see if it is already present. If you find a common pattern, perhaps functionise it.
- In phase 1, only update files using the `update_if_changed` function. This function will, as expected, take a file path and a string, and only update the file with the string if there is a difference. Not doing this means a file will always be updated, and hence anything depending on it will always be rebuild, even if the file has not actually changed.
@ -23,7 +37,5 @@ This is a little bit of a mesys list of things we have found that are not perhap
- All steps are largely considered to be synchronous, and must be finished before the next step can start. Therefore, async must unfortunately be avoided. There are some steps where performance benefits could be achieved by allowing the next step to run concurrently, but the design complications make this unattractive.
- We use a single process pool to multithread with. This gives a small performance benefit over making and deleting pools continuously.
- All paths are to be handled with `pathlib`, not as strings.
- XML code should be generated with LXML instead of string templating. This is to ensure that we generate valid XML every time, and prevents issues with escaping, etc.
- Where possibly, type hint stuff. We try and keep the codebase reasonably typed to make it comprehensible
- XML code should be generated with LXML instead of string templating. This is to ensure that we generate valid XML every time, and prevents issues with escaping, etc.
- Where possibly, type hint stuff. We try and keep the codebase reasonably typed to make it comprehensible

View File

@ -44,4 +44,4 @@ rsync -rlpgoDz --delete --checksum --filter=':- .gitignore' ./ /website-cached/s
cd /website-cached/source
# run build script expaning all args passed to this script
python3 ./build.py "$@"
uv run --reinstall-package build build "$@"

View File

@ -105,7 +105,7 @@ RewriteRule ^drm.info(/.*)? https://drm.info$1 [R=301,L]
# Youth Hacking 4 Freedom
# Redirect for registration
# TODO please update the link for new registration form
RewriteRule ^activities/yh4f/register https://share.fsfe.org/apps/forms/s/kQX233iKfwe3ZtgiHxwLZJNB [R=301,L]
RewriteRule ^activities/yh4f/register https://share.fsfe.org/apps/forms/s/iqeXngDaatNeDd2z9jyCa8se [R=307,L]
RewriteRule ^activities/yh4f/feedback https://share.fsfe.org/apps/forms/s/LBHwzSmaiyoX3Tmwo2qJgAki [R=301,L]
RewriteRule ^activities/yh4f/mediakit https://download.fsfe.org/YH4F/Youth_Hacking_4_Freedom_2025.pdf [R=301,L]

View File

@ -73,21 +73,21 @@
<div class="box first">
<img src="https://pics.fsfe.org/uploads/small/3ded562545ac77a12d2ade19bc97b83c.png" style="border: 1px solid black" alt="Karte der Umgebung des Büros der FSFE in Berlin" />
<img src="https://pics.fsfe.org/uploads/small/22/72/bc04a8a1e628da8922da7cb2a94c.png" style="border: 1px solid black" alt="Karte der Umgebung des Büros der FSFE in Berlin" />
</div>
<div class="box">
<p>Free Software Foundation Europe e.V.<br />
Schönhauser Allee 6/7<br />
Stairway 2, 5. floor<br />
10119 Berlin<br />
Revaler Straße 19<br />
5. Stock<br />
10245 Berlin<br />
Germany</p>
<p>Phone: +49-30-27595290</p>
<p><a href="http://www.openstreetmap.org/?mlat=52.52952&amp;mlon=13.41083&amp;node=2466676740#map=18/52.52952/13.41083">See on OpenStreetMap</a></p>
<p><a href="https://www.openstreetmap.org/node/2825035456#map=16/52.50623/13.45958">See on OpenStreetMap</a></p>
</div>

View File

@ -56,21 +56,21 @@
<div class="box first">
<img src="https://pics.fsfe.org/uploads/small/3ded562545ac77a12d2ade19bc97b83c.png" style="border: 1px solid black" alt="map of the vecinity of the FSFE office in Berlin" />
<img src="https://pics.fsfe.org/uploads/small/22/72/bc04a8a1e628da8922da7cb2a94c.png" style="border: 1px solid black" alt="map of the vecinity of the FSFE office in Berlin" />
</div>
<div class="box">
<p>Free Software Foundation Europe e.V.<br />
Schönhauser Allee 6/7<br />
Stairway 2, 5. floor<br />
10119 Berlin<br />
Revaler Straße 19<br />
5. floor<br />
10245 Berlin<br />
Germany</p>
<p>Phone: +49-30-27595290</p>
<p><a href="http://www.openstreetmap.org/?mlat=52.52952&amp;mlon=13.41083&amp;node=2466676740#map=18/52.52952/13.41083">See on OpenStreetMap</a></p>
<p><a href="https://www.openstreetmap.org/node/2825035456#map=16/52.50623/13.45958">See on OpenStreetMap</a></p>
</div>

View File

@ -49,21 +49,21 @@
<div class="box first">
<img src="https://pics.fsfe.org/uploads/small/3ded562545ac77a12d2ade19bc97b83c.png" style="border: 1px solid black" alt="Kaart van de omgeving van het FSFE-kantoor in Berlijn" />
<img src="https://pics.fsfe.org/uploads/small/22/72/bc04a8a1e628da8922da7cb2a94c.png" style="border: 1px solid black" alt="Kaart van de omgeving van het FSFE-kantoor in Berlijn" />
</div>
<div class="box">
<p>Free Software Foundation Europe e.V.<br />
Schönhauser Allee 6/7<br />
Stairway 2, 5. floor<br />
10119 Berlin<br />
Revaler Straße 19<br />
5. floor<br />
10245 Berlin<br />
Germany</p>
<p>Telefoon: +49-30-27595290</p>
<p><a href="http://www.openstreetmap.org/?mlat=52.52952&amp;mlon=13.41083&amp;node=2466676740#map=18/52.52952/13.41083">Bekijk op OpenStreetMap</a></p>
<p><a href="https://www.openstreetmap.org/node/2825035456#map=16/52.50623/13.45958">Bekijk op OpenStreetMap</a></p>
</div>

View File

@ -119,6 +119,8 @@
applicable statutory minimum wage for a full-time job (~1880 € gross as of
1 June 2024. Subject to change). The specific current amount is announced
when an opening is published.</li>
<li>Accommodation: We might be able to provide assistance with finding affordable accommodation
in Berlin for the time of the internship.</li>
<li>Requirement: The internship is open to EU citizens, and anyone else
holding a residence permit and a work permit for Germany.</li>
</ul>

View File

@ -15,7 +15,7 @@
<p> Free Software Foundation Europe e.V. (FSFE)<br />
Address: Schönhauser Allee 6/7, 10119 Berlin, Germany<br />
Address: Revaler Straße 19, 10245 Berlin, Germany<br />
Email: <email>contact@fsfe.org</email><br />
President: Matthias Kirschner<br />

View File

@ -14,7 +14,7 @@
<h1>Empreinte</h1>
<p> Free Software Foundation Europe e.V. (FSFE)<br />
Adresse: Schönhauser Allee 6/7, 10119 Berlin, Deutschland<br />
Adresse: Revaler Straße 19, 10245 Berlin, Deutschland<br />
Email: <email>contact@fsfe.org</email><br />
President: Matthias Kirschner<br />

View File

@ -15,7 +15,7 @@
<p> Free Software Foundation Europe e.V. (FSFE)<br />
Recapito: Schönhauser Allee 6/7, 10119 Berlino, Germania<br />
Recapito: Revaler Straße 19, 10245 Berlino, Germania<br />
Email: <email>contact@fsfe.org</email><br />
Presidente: Matthias Kirschner<br />

View File

@ -15,7 +15,7 @@
<p> Free Software Foundation Europe e.V. (FSFE)<br />
Adres: Schönhauser Allee 6/7, 10119 Berlijn, Duitsland<br />
Adres: Revaler Straße 19, 10245 Berlijn, Duitsland<br />
E-mail: <email>contact@fsfe.org</email><br />
Voorzitter: Matthias Kirschner<br />

View File

@ -28,8 +28,8 @@
<h2 id="contact">Kontakt</h2>
<address>
<strong>Free Software Foundation Europe (FSFE)</strong><br />
Schönhauser Allee 6/7<br />
10119 Berlin, Germany<br />
Revaler Straße 19<br />
10245 Berlin, Germany<br />
Telefon: <email>+49-30-27595290</email><br />
E-Mail: <email>mk@fsfe.org</email><br />
<a href="http://www.gnupg.org/">GnuPG</a>-Schlüssel: <a href="kirschner-public.asc">A0616A85CE41AD88</a><br />

View File

@ -23,8 +23,8 @@
<h2 id="contact">Τρόποι επικοινωνίας</h2>
<address>
<strong>Free Software Foundation Europe (FSFE)</strong><br/>
Schönhauser Allee 6/7<br/>
10119 Berlin, Germany<br/>
Revaler Straße 19<br />
10245 Berlin, Germany<br />
Τηλέφωνο: <email>+49-30-27595290</email><br/>
Ηλεκτρονικό ταχυδρομείο: <email>mk@fsfe.org</email><br/>
<a href="http://www.gnupg.org/">GnuPG</a>-Key: <a href="kirschner-public.asc">A0616A85CE41AD88</a><br />

View File

@ -26,8 +26,8 @@
<h2 id="contact">Contact</h2>
<address>
<strong>Free Software Foundation Europe (FSFE)</strong><br />
Schönhauser Allee 6/7<br />
10119 Berlin, Germany<br />
Revaler Straße 19<br />
10245 Berlin, Germany<br />
Phone: <email>+49-30-27595290</email><br />
Email: <email>mk@fsfe.org</email><br />
<a href="http://www.gnupg.org/">GnuPG</a>-Key: <a href="kirschner-public.asc">A0616A85CE41AD88</a><br />

View File

@ -35,8 +35,8 @@
<h2 id="contact">Contatti</h2>
<address>
<strong>Free Software Foundation Europe (FSFE)</strong><br />
Schönhauser Allee 6/7<br />
10119 Berlin, Germany<br />
Revaler Straße 19<br />
10245 Berlin, Germany<br />
Phone: <email>+49-30-27595290</email><br />
Email: <email>mk@fsfe.org</email><br />
Chiave <a href="http://www.gnupg.org/">GnuPG</a>: <a href="kirschner-public.asc">A0616A85CE41AD88</a><br />

View File

@ -26,8 +26,8 @@ privacy.</p>
<h2 id="contact">Contact</h2>
<address>
<strong>Free Software Foundation Europe (FSFE)</strong><br/>
Schönhauser Allee 6/7<br/>
10119 Berlijn, Duitsland<br/>
Revaler Straße 19<br />
10245 Berlijn, Duitsland<br/>
Telefoon: <email>+49-30-27595290</email><br/>
E-mail: <email>mk@fsfe.org</email><br/>
<a href="http://www.gnupg.org/">GnuPG</a>-sleutel: <a href="kirschner-public.asc">A0616A85CE41AD88</a><br />

View File

@ -28,8 +28,8 @@
<h2 id="contact">Контакт</h2>
<address>
<strong>Free Software Foundation Europe (FSFE)</strong><br />
Schönhauser Allee 6/7<br />
10119 Berlin, Germany<br />
Revaler Straße 19<br />
10245 Berlin, Germany<br />
Телефон: <email>+49-30-27595290</email><br />
Электронная почта: <email>mk@fsfe.org</email><br />
<a href="http://www.gnupg.org/">GnuPG</a>-Key: <a href="kirschner-public.asc">A0616A85CE41AD88</a><br />

View File

@ -653,6 +653,7 @@
<person id="mehring">
<name>Bonnie Mehring</name>
<function>senior-project-manager/f</function>
<function volunteers="translators">coordinator/f</function>
<team>core</team>
<team>care</team>
@ -660,8 +661,8 @@
<email>bonnie@fsfe.org</email>
<fingerprint>88A975E887CDD2BF863810490D10346737F041D9</fingerprint>
<keyhref>/about/people/mehring/mehring-public.asc</keyhref>
<avatar>mehring.jpg</avatar>
<employee>part/f</employee>
<avatar>mehring.jpg</avatar>
</person>
<person id="lequertier">

View File

@ -4,9 +4,9 @@
<version>1</version>
<activity id="childrensbook" date="2021-12-01" status="active">
<title>Book "Ada &amp; Zangemann"</title>
<title>"Ada &amp; Zangemann" book and movie</title>
<description>
The illustrated book "Ada &amp; Zangemann - a tale of software, skateboards, and raspberry ice cream" by the FSFE, tells the story of the famous inventor Zangemann and the girl Ada, a curious tinkerer. Ada begins to experiment with hardware and software, and in the process realises how crucial it is for her and others to control technology.
The illustrated book animated movie "Ada &amp; Zangemann - a tale of software, skateboards, and raspberry ice cream" by the FSFE, tells the story of the famous inventor Zangemann and the girl Ada, a curious tinkerer. Ada begins to experiment with hardware and software, and in the process realises how crucial it is for her and others to control technology.
</description>
<link href="/activities/ada-zangemann/" />
<image url="/graphics/logos/childrensbook.png" />

View File

@ -4,9 +4,9 @@
<version>1</version>
<activity id="childrensbook" date="2021-12-01" status="active">
<title>Libro "Ada &amp; Zangemann"</title>
<title>"Ada &amp; Zangemann", libro y película</title>
<description>
El libro ilustrado "Ada &amp; Zangemann - Un cuento sobre Software, Monopatines y Helado de Frambuesa" de la FSFE, cuenta la historia del famoso inventor Zangemann y la niña Ada, una curiosa juguetona. Ada empieza a experimentar con hardware y software, y en el proceso se da cuenta de lo crucial que es para ella y para los demás controlar la tecnología.
El libro ilustrado y película animada "Ada &amp; Zangemann - Un cuento sobre Software, Monopatines y Helado de Frambuesa" de la FSFE, cuenta la historia del famoso inventor Zangemann y la niña Ada, una curiosa juguetona. Ada empieza a experimentar con hardware y software, y en el proceso se da cuenta de lo crucial que es para ella y para los demás controlar la tecnología.
</description>
<link href="/activities/ada-zangemann/" />
<image url="/graphics/logos/childrensbook.png" />

View File

@ -48,6 +48,7 @@
<h2>Download Möglichkeiten</h2>
<ul>
<li>FSFE Peertube:
<a href="https://media.fsfe.org/w/7S9bNkf36e7vBnBrBhj7vS">Dänisch</a>,
<a href="https://media.fsfe.org/w/aw4EHJYVBSQGHPS22xXBG2">Deutsch</a>,
<a href="https://media.fsfe.org/w/j1c6LQVZ8qnCLLwpXMuw3M">English</a>,
<a href="https://media.fsfe.org/w/jPLeR3vpYE7zWaTYdsB9JU">Französisch</a>,

View File

@ -44,6 +44,7 @@
<h2>Download locations</h2>
<ul>
<li>FSFE Peertube:
<a href="https://media.fsfe.org/w/7S9bNkf36e7vBnBrBhj7vS">Dansk</a>,
<a href="https://media.fsfe.org/w/j1c6LQVZ8qnCLLwpXMuw3M">English</a>,
<a href="https://media.fsfe.org/w/jPLeR3vpYE7zWaTYdsB9JU">French</a>,
<a href="https://media.fsfe.org/w/aw4EHJYVBSQGHPS22xXBG2">German</a>,

View File

@ -37,7 +37,8 @@
<h2>Dónde descargar la película</h2>
<ul>
<li>FSFE Peertube:
<a href="https://media.fsfe.org/w/mPiL4nzoJ21gWiG4JHLATf">Español</a>,
<a href="https://media.fsfe.org/w/7S9bNkf36e7vBnBrBhj7vS">Danés</a>,
<a href="https://media.fsfe.org/w/mPiL4nzoJ21gWiG4JHLATf">Español</a>,
<a href="https://media.fsfe.org/w/j1c6LQVZ8qnCLLwpXMuw3M">Inglés</a>,
<a href="https://media.fsfe.org/w/jPLeR3vpYE7zWaTYdsB9JU">Fránces</a>,
<a href="https://media.fsfe.org/w/aw4EHJYVBSQGHPS22xXBG2">Alemán</a>

View File

@ -50,6 +50,7 @@
<h2>Sites de téléchargement</h2>
<ul>
<li>FSFE Peertube:
<a href="https://media.fsfe.org/w/7S9bNkf36e7vBnBrBhj7vS">Danois</a>,
<a href="https://media.fsfe.org/w/jPLeR3vpYE7zWaTYdsB9JU">French</a>,
<a href="https://media.fsfe.org/w/j1c6LQVZ8qnCLLwpXMuw3M">English</a>,
<a href="https://media.fsfe.org/w/aw4EHJYVBSQGHPS22xXBG2">German</a>,

View File

@ -47,6 +47,7 @@ href="/donate/donate.html">Fai una donazione</a> per contribuire allo sviluppo d
<h2>Dove scaricarlo</h2>
<ul>
<li>FSFE Peertube:
<a href="https://media.fsfe.org/w/7S9bNkf36e7vBnBrBhj7vS">Danese</a>,
<a href="https://media.fsfe.org/w/jPLeR3vpYE7zWaTYdsB9JU">Francese</a>,
<a href="https://media.fsfe.org/w/j1c6LQVZ8qnCLLwpXMuw3M">Inglese</a>,
<a href="https://media.fsfe.org/w/aw4EHJYVBSQGHPS22xXBG2">Tedesco</a>,

View File

@ -433,6 +433,24 @@
</p>
</div>
</li>
<li>
<img src="/graphics/logos/interop-survey.png" alt="illustration of a laptop and a mobile phone" />
<div>
<h3 id="id-red">DMA Interoperability Survey</h3>
<p>
The <a href= "/activities/deviceneutrality/interop-survey.html">FSFEs Interoperability Survey</a> collects experiences from Free Software developers requesting access to gatekeepers under the DMA Art. 6(7). It monitors gatekeeper compliance and supports advocacy to ensure fair and effective enforcement of interoperability rights.
</p>
</div>
</li>
<li>
<img src="/graphics/logos/refund4freedom.png" alt="Illustration of a hand removing what looks like a Windows logo sticker partially covering the word Freedom. All is white with a blue background" />
<div>
<h3 id="id-red">Refund4Freedom</h3>
<p>
When acquiring a new laptop you often end up dealing with an imposed pre-installed Microsoft Windows operating system. This is unfair. The <a href= "https://en.refund4freedom.org/">Refund4Freedom initiative</a> guides users in how to get their money back in these cases and demands the end of this practice that limits user freedom.
</p>
</div>
</li>
</ul>
</div>
@ -478,6 +496,8 @@
<ul>
<li><a href="/activities/dma/dma.html">Device Neutrality and the DMA</a>
</li>
<li><a href="/activities/deviceneutrality/interop-survey.html"> DMA Interoperability Survey</a>
</li>
</ul>
<h2>Free Software and Devices</h2>

View File

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="UTF-8" ?>
<html>
<version>3</version>
<head>
<title>DMA Interoperability Survey</title>
</head>
<body class="article">
<h1>DMA Interoperability Survey</h1>
<div id="introduction">
<p>
Are you a Free Software developer trying to access hardware or
software features under Article 6(7) of the Digital Markets Act
(DMA)? We want to hear from you! Share your experience about how
gatekeepers are handling your interoperability request.
</p>
</div>
<!-- @TRANSLATORS: the banner's source file you find here:
https://download.fsfe.org/device-neutrality/device-neutrality-logo-banner.odp -->
<figure class="max-width-100 no-border">
<img
src="https://pics.fsfe.org/uploads/medium/fd/a2/78ed39d4c12a02fad06ec086ba44.png"
alt="Device neutrality: safeguarding free software in devices" />
</figure>
<p>The <a
href="https://survey.fsfe.org/index.php/699938?lang=en">FSFEs
Interoperability Survey</a> aims to collect structured feedback from
Free Software developers, also known as “access seekers”, about their
experience requesting interoperability under Article 6(7) of the
Digital Markets Act (DMA). This article requires designated
“gatekeepers” to provide, free of charge, access to the software and
hardware features of their Core Platform Services (CPS). The goal is
to foster innovation and support alternative solutions developed by
the Free Software community.</p>
<div class="color-box background" data-color="android-lime">
<p> Take the interoperability survey and share your experience</p>
<a class="btn btn-default" href="https://survey.fsfe.org/index.php/699938?lang=en"> Start the survey</a>
</div>
<h2>The Digital Markets Act and Interoperability</h2>
<p>The <a href="http:///activities/dma/dma.html">Digital Markets Act (DMA)</a> is a
landmark European regulation aimed at curbing the power of large digital
platforms. Under the DMA, these companies must allow interoperability
with their software and hardware features, promoting competition,
innovation, and user choice.</p>
<p>Specifically, <strong><strong>Article 6(7)</strong></strong> empowers
developers to request access to technical functionalities that were
previously restricted. This creates new opportunities for Free Software
projects, and for users to benefit from greater choice and control. </p>
This provision opens the door for Free Software alternatives to services currently dominated by gatekeepers, such as payment systems, app stores, or messaging platforms. Free Software is contained in 90% of todays technology and its relevance is therefore crucial in a fair and just implementation of the DMA.
<h2>Why Your Input Matters</h2>
<p>
At the Free Software Foundation Europe (FSFE), we are committed to
making sure these rights are not just theoretical. We are gathering
first-hand experiences from developers who have submitted, or are
planning to submit, interoperability requests to gatekeepers such as
Apple, Google, Microsoft, and others. For a complete list of all
gatekeepers and their designated Core Platform Services visit this <a
href="https://digital-markets-act.ec.europa.eu/gatekeepers_en">page</a>.
</p>
<p>Your insights will help us:</p>
<ul class="incremental">
<li>Identify common obstacles for Free Software and patterns of non-compliance.</li>
<li>Report issues to the European Commission.</li>
<li>Advocate for enforcement that supports Free Software and small
developers.</li>
</ul>
<p>Whether your request was accepted, denied, delayed, or ignored - we
want to hear from you!</p>
<p>Gatekeepers compliance is not automatic. Many Free Software
developers still face vague procedures, delays, or rejections. Others
may not know how or where to start their request. By sharing your
experience, you help strengthen the case for clear, fair, and
developer-friendly implementation of the DMA. Together, we can ensure
that these new rights translate into real-world opportunities for Free
Software.</p>
<div class="color-box background" data-color="android-lime">
<p> Take the interoperability survey and share your experience</p>
<a class="btn btn-default" href="https://survey.fsfe.org/index.php/699938?lang=en"> Start the survey</a>
</div>
</body>
<sidebar promo="our-work">
<h2>More on Device Neutrality</h2>
<ul>
<li><a href="/activities/deviceneutrality/index.html">Device Neutrality</a>
</li>
<li><a href="/activities/dma/dma.html">Device Neutrality and the DMA</a>
</li>
</ul>
<h2>Free Software and Devices</h2>
<ul>
<li><a href="/activities/routers/">Router Freedom</a></li>
<li><a href="/activities/upcyclingandroid/">Upcycling Android</a></li>
</ul>
<h2>Take the survey now</h2>
<ul>
<li><a href="https://survey.fsfe.org/index.php/699938?lang=en">DMA Interoperability Survey</a></li>
</ul>
<h2>Support the FSFE</h2>
<p>
As a non-profit, non-governmental organisation, Free Software Foundation
Europe works to create general understanding and support for Free Software
and Open Standards in politics, business, law, and society at large.
By becoming a supporter of the FSFE you empower our work and help to
assure our financial independence.
</p>
<fsfe-cd-donate-link class="big-donate">Become a supporter</fsfe-cd-donate-link>
</sidebar>
<related-list tag="dma" />
</html>

View File

@ -276,6 +276,11 @@
in some aspects involving Open Standards, the pressure gatekeepers can exercise
over decision makers, and complex digital enviroments.
</p>
<blockquote>
<p><strong>DMA Interoperability Survey</strong></p>
<p> Are you a Free Software developer trying to access hardware or software features under Article 6(7) of the Digital Markets Act (DMA)? We want to hear from you! The <a href= "/activities/deviceneutrality/interop-survey.html">FSFEs Interoperability Survey</a> collects experiences from Free Software developers requesting access to gatekeepers under the DMA Art. 6(7). It monitors gatekeeper compliance and supports advocacy to ensure fair and effective enforcement of interoperability rights.</p>
</blockquote>
<figure class="no-border">
<img
@ -389,6 +394,7 @@
<h2>Related activities</h2>
<ul>
<li><a href="/activities/deviceneutrality/interop-survey.html">DMA Interoperability Survey</a></li>
<li><a href="/activities/routers/routers.html">Router Freedom</a></li>
<li><a href="/activities/upcyclingandroid/">Upcycling Android</a></li>
<li><a href="/activities/radiodirective/radiodirective.html">EU Radio Lockdown</a></li>

View File

@ -27,21 +27,29 @@
<p class="license">
Graphic by <a href="https://mullana.de/">Lisa Schmidt</a>, <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a> or later
</p>
<h3>Join Youth Hacking 4 Freedom 2025</h3>
<h3>Join Youth Hacking 4 Freedom 2026</h3>
<p>
Are you up for hacking on a software project of your choice? Do you want to meet like-minded people of your age from around Europe? What about getting the chance to receive one of our cash awards and to travel to Brussels to meet the other winners and great people from the Free Software movement? Then join the upcoming YH4F 2025 competition! The fourth round of YH4F will start on 1st of January 2025 and <strong><a href="/activities/yh4f/register">registration</a> is open</strong> till the end of the programming period, 30th ofJune. Be part of the next YH4F edition!
Are you up for hacking on a software project of your choice? Do you want to meet like-minded people of your age from around Europe?
What about getting the chance to receive one of our cash awards and to travel to Brussels to meet the other winners and great people
from the Free Software movement? Then join the upcoming YH4F 2026 competition! The fifth round of YH4F will start on 1st of January 2026
and <strong><a href="/activities/yh4f/register">registration</a> is open</strong> till the end of the programming period, 30th ofJune.
Every teenager living in Europe and who is between 14 to 18 years is welcome to join us in this competition. Be part of the next YH4F edition!
</p>
<p>
We have an international <a href="/activities/yh4f/jury.html">jury</a>, with luminaries from various software fields, accompanying you throughout the contest.</p>
We have an international <a href="/activities/yh4f/jury.html">jury</a>, with luminaries from different software fields, accompanying you throughout the contest.</p>
<p>
We are dedicated to offering an inclusive environment in the YH4F, and we would like to encourage teenagers of all genders to join! We will make sure everyone enjoys the process and leaves this competition with added knowledge and a smile.
<p>
We are dedicated to offering an inclusive environment in the YH4F, and we would like to encourage teenagers of all genders to join! We will make sure everyone
enjoys the process and leaves this competition with added knowledge and a smile.
</p>
<p>Youth Hacking 4 Freedom is possible thanks to our <a href="/donate/thankgnus-2024.html">sponsors and donors</a>! For more information see <a href="#thanks">below</a>. If you want to
support Youth Hacking 4 Freedom send us send us an email to <a href="mailto:yh4f@fsfe.org">yh4f@fsfe.org</a>.</p>
<div class="color-box background" data-color="dark-green">
<p>Register for Youth Hacking 4 Freedom 2025!</p>
<p>Register for Youth Hacking 4 Freedom 2026!</p>
<a href="/activities/yh4f/register" class="btn btn-default">Register</a>
</div>
@ -67,7 +75,11 @@ We have an international <a href="/activities/yh4f/jury.html">jury</a>, with lum
<p>
During the <a href="/activities/yh4f/faq.html#2-coding-phase">programming
period</a> you have the chance to develop your project idea and work on the code or hardware. Additionally, you will have the opportunity to meet other participants from across Europe in our monthly calls. You can <a href="/activities/yh4f/register">register</a> from 1st of July till 30th of June, for the upcoming YH4F programming competition. For YH4F 2025 you can now <a href="/activities/yh4f/register">register</a> and we will reach out to you before the competition starts on the 1st of January 2025. If you are not yet sure whether you want to take part, or if you have any questions about registration, you are welcome to contact us at <a href="mailto:yh4f@fsfe.org">yh4f@fsfe.org</a>.</p>
period</a> you have the chance to develop your project idea and work on the code or hardware.
Additionally, you will have the opportunity to meet other participants from across Europe in our monthly calls.
You can <a href="/activities/yh4f/register">register</a> from 1st of July till 30th of June, for the upcoming YH4F programming competition.
For YH4F 2026 you can now <a href="/activities/yh4f/register">register</a> and we will reach out to you before the competition starts on
the 1st of January 2026. If you are not yet sure whether you want to take part, or if you have any questions about registration, you are welcome to contact us at <a href="mailto:yh4f@fsfe.org">yh4f@fsfe.org</a>.</p>
<h3>Present your program to top experts</h3>
@ -161,7 +173,7 @@ You can find out more about the six inspiring projects <a href="/news/2024/news-
<p>If you are interested in supporting the Youth Hacking 4 Freedom contest financially, you can become one of our esteemed sponsors. For this please send us an email to <a href="mailto:yh4f@fsfe.org">yh4f@fsfe.org</a>. And of course we are always happy to receive <fsfe-cd-donate-link>donations</fsfe-cd-donate-link> ♥.</p>
<h2>Special thanks</h2>
<h2 id="thanks">Special thanks</h2>
<figure>
<video width="100%" crossorigin="crossorigin" poster="https://pics.fsfe.org/uploads/big/6adff21a0ca656985bacc3fa58f60367.png" controls="controls">
@ -185,8 +197,8 @@ You can find out more about the six inspiring projects <a href="/news/2024/news-
</div>
<div class="center">
<img src="https://pics.fsfe.org/uploads/original/66/1e/e0ae643171bd148f109e38995c04.jpg"/>
<img src="https://pics.fsfe.org/uploads/original/15/ce/d78f723ae4105ed27d875c36150f.png" />
<a href="https://www.proxmox.com"> <img src="https://pics.fsfe.org/uploads/original/24/53/32ae8d70d491553a73dd8d917adb.png"/> </a>
<a href="https://openssf.org/"> <img src="https://pics.fsfe.org/uploads/original/15/ce/d78f723ae4105ed27d875c36150f.png" /> </a>
</div>
<div class="color-box background" data-color="android-blue">
@ -207,7 +219,7 @@ You can find out more about the six inspiring projects <a href="/news/2024/news-
<ul>
<li><a href="/activities/yh4f/register">Register for Youth Hacking 4 freedom 2025</a></li>
<li><a href="/activities/yh4f/register">Register for Youth Hacking 4 freedom 2026</a></li>
<li><a href="https://download.fsfe.org/YH4F/Youth_Hacking_4_Freedom_2025.pdf">Youth Hacking 4 Freedom 2025 all relevant information</a></li>

View File

@ -231,6 +231,19 @@ technology and elsewhere.
</p>
</div>
</li>
<li>
<img src="https://pics.fsfe.org/uploads/original/02/c0/183d22eacad98540e516404c865e.png" class="img-circle" alt="Sofía Aritz" />
<div>
<h3>Sofía Aritz</h3>
<p>
Sofía Aritz has been advocating for software freedom ever since starting to tinker with computers. Seeing
technology as a tool for social transformation, she is working on Free Software projects such as Munin,
which aims to support dementia and palliative care. After becoming one of the winners of the third edition
of Youth Hacking 4 Freedom, she has been an active contributor to the FSFE's activities.
</p>
</div>
</li>
</ul>
</div>

View File

@ -1,4 +1,5 @@
<?php
/**
* PHPMailer Exception class.
* PHP Version 5.5.
@ -9,10 +10,10 @@
* @author Jim Jagielski (jimjag) <jimjag@gmail.com>
* @author Andy Prevost (codeworxtech) <codeworxtech@users.sourceforge.net>
* @author Brent R. Matzelle (original founder)
* @copyright 2012 - 2017 Marcus Bointon
* @copyright 2012 - 2020 Marcus Bointon
* @copyright 2010 - 2012 Jim Jagielski
* @copyright 2004 - 2009 Andy Prevost
* @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License
* @license https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html GNU Lesser General Public License
* @note This program is distributed in the hope that it will be useful - WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE.
@ -34,6 +35,6 @@ class Exception extends \Exception
*/
public function errorMessage()
{
return '<strong>' . htmlspecialchars($this->getMessage()) . "</strong><br />\n";
return '<strong>' . htmlspecialchars($this->getMessage(), ENT_COMPAT | ENT_HTML401) . "</strong><br />\n";
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -31,7 +31,7 @@ if ($function2 ne "") {
$function .= ", $function2";
}
if ($radioaddress eq "Berlin") { $address = "Schönhauser Allee 6/7, 10119 Berlin, Germany"; }
if ($radioaddress eq "Berlin") { $address = "Revaler Straße 19, 10245 Berlin, Germany"; }
if ($radioaddress eq "other") { $address = "$otheraddress"; }
if ($delivery eq "") {

View File

@ -14,10 +14,10 @@
<type>Sticker</type>
<size>74 x 74 mm</size>
<languages>
<a href="https://download.fsfe.org/advocacy/promomaterial/FSFE/100_Freedoms/FSFE_100_FREEDOMS_sticker_74_x_74_BLACK.pdf">English</a>
<a href="https://download.fsfe.org/advocacy/promomaterial/FSFE/100_Freedoms/FSFE_100_FREEDOMS_sticker_74_x_74_BLACK.pdf"> PDF (English)</a>
</languages>
<printed>
English
English
</printed>
<license><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a></license>
<author>Markus Meier</author>

View File

@ -14,10 +14,10 @@
<type>Sticker</type>
<size>74 x 74 mm</size>
<languages>
<a href="https://download.fsfe.org/advocacy/promomaterial/FSFE/100_Freedoms/FSFE_100_FREEDOMS_sticker_74_x_74_ORANGE_v2.pdf">English</a>
<a href="https://download.fsfe.org/advocacy/promomaterial/FSFE/100_Freedoms/FSFE_100_FREEDOMS_sticker_74_x_74_ORANGE_v2.pdf"> PDF (English)</a>
</languages>
<printed>
English
English
</printed>
<license><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a></license>
<author>Markus Meier</author>

View File

@ -14,7 +14,7 @@
<size>7 x 7 cm</size>
<context></context>
<languages>
<a href="https://download.fsfe.org/advocacy/promomaterial/Hacking-for-Freedom/FSFE_HFF_2019_sticker_blue_white_70x70.pdf">English</a>
<a href="https://download.fsfe.org/advocacy/promomaterial/Hacking-for-Freedom/FSFE_HFF_2019_sticker_blue_white_70x70.pdf">PDF (English)</a>
</languages>
<printed>
English

View File

@ -14,7 +14,7 @@
<size>5,5 x 5,5 cm</size>
<context></context>
<languages>
<a href="https://download.fsfe.org/advocacy/promomaterial/Hacking-for-Freedom/FSFE_HFF_2019_sticker_black_blue_55x55.pdf">English</a>
<a href="https://download.fsfe.org/advocacy/promomaterial/Hacking-for-Freedom/FSFE_HFF_2019_sticker_black_blue_55x55.pdf">PDF (English)</a>
</languages>
<printed>
English

View File

@ -14,7 +14,7 @@
<size>5 x 5 cm</size>
<context></context>
<languages>
<a href="https://download.fsfe.org/advocacy/promomaterial/Hacking-for-Freedom/FSFE_HFF_2019_sticker_black_green_50x50.pdf">English</a>
<a href="https://download.fsfe.org/advocacy/promomaterial/Hacking-for-Freedom/FSFE_HFF_2019_sticker_black_green_50x50.pdf">PDF English</a>
</languages>
<printed>
English

View File

@ -16,7 +16,7 @@
<size>40mm x 51mm</size>
<context><a href="/activities/ada-zangemann/">Ada &amp; Zangemann</a></context>
<languages>
<a href="https://download.fsfe.org/advocacy/promomaterial/ChildrensBook/childrensbook-sticker-ada-2022-PRINT.pdf">PDF</a>
<a href="https://download.fsfe.org/advocacy/promomaterial/ChildrensBook/childrensbook-sticker-ada-2022-PRINT.pdf">PDF (English)</a>
</languages>
<printed>
English

View File

@ -16,7 +16,7 @@
<size>48mm x 60mm</size>
<context><a href="/activities/ada-zangemann/">Ada &amp; Zangemann</a></context>
<languages>
<a href="https://download.fsfe.org/advocacy/promomaterial/ChildrensBook/childrensbook-sticker-ada-PRINT.pdf">PDF</a>
<a href="https://download.fsfe.org/advocacy/promomaterial/ChildrensBook/childrensbook-sticker-ada-PRINT.pdf">PDF (English)</a>
</languages>
<printed>
English

View File

@ -16,7 +16,7 @@
<size>40mm x 70mm</size>
<context><a href="/activities/ada-zangemann/">Ada &amp; Zangemann</a></context>
<languages>
<a href="https://download.fsfe.org/advocacy/promomaterial/ChildrensBook/childrensbook-sticker-zangemann-2022-PRINT.pdf">PDF</a>
<a href="https://download.fsfe.org/advocacy/promomaterial/ChildrensBook/childrensbook-sticker-zangemann-2022-PRINT.pdf">PDF (English)</a>
</languages>
<printed>
English

View File

@ -16,7 +16,7 @@
<size>60mm x 60mm</size>
<context><a href="/activities/ada-zangemann/">Ada &amp; Zangemann</a></context>
<languages>
<a href="https://download.fsfe.org/advocacy/promomaterial/ChildrensBook/childrensbook-sticker-zangemann-PRINT.pdf">PDF</a>
<a href="https://download.fsfe.org/advocacy/promomaterial/ChildrensBook/childrensbook-sticker-zangemann-PRINT.pdf">PDF (English)</a>
</languages>
<printed>
English

View File

@ -14,7 +14,7 @@
<type>Sticker</type>
<size>90 x 50 mm</size>
<languages>
<a href="https://download.fsfe.org/advocacy/promomaterial/cool_kids/sticker-90x50-cool-kids.pdf">English</a>
<a href="https://download.fsfe.org/advocacy/promomaterial/cool_kids/sticker-90x50-cool-kids.pdf">PDF (English)</a>
</languages>
<printed>
English

View File

@ -14,7 +14,7 @@
<type>Sticker</type>
<size>98 x 58 mm</size>
<languages>
<a href="https://download.fsfe.org/advocacy/promomaterial/my_choice/sticker-90x50-device-choice.pdf">English</a>
<a href="https://download.fsfe.org/advocacy/promomaterial/my_choice/sticker-90x50-device-choice.pdf">PDF (English)</a>
</languages>
<printed>
English

View File

@ -15,7 +15,7 @@
<size>A1 (594 x 841 mm)</size>
<context><a href="/activities/deviceneutrality">Device Neutrality campaign</a></context>
<languages>
<a href="https://download.fsfe.org/advocacy/promomaterial/DeviceNeutrality/DeviceNeutrality_poster/DeviceNeutrality_poster.pdf">English</a>
<a href="https://download.fsfe.org/advocacy/promomaterial/DeviceNeutrality/DeviceNeutrality_poster/DeviceNeutrality_poster.pdf">PDF (English)</a>
</languages>
<printed>
English

View File

@ -15,7 +15,7 @@
<size>50 x 50 mm</size>
<context><a href="/activities/deviceneutrality">I love Free Software campaign</a></context>
<languages>
<a href="https://download.fsfe.org/advocacy/promomaterial/DeviceNeutrality/DeviceNeutrality_sticker/DeviceNeutrality_sticker.pdf">English</a>
<a href="https://download.fsfe.org/advocacy/promomaterial/DeviceNeutrality/DeviceNeutrality_sticker/DeviceNeutrality_sticker.pdf">PDF (English)</a>
</languages>
<printed>
English

View File

@ -14,7 +14,7 @@
<type>Sticker</type>
<size>52 x 52 mm</size>
<languages>
<a href="https://download.fsfe.org/advocacy/promomaterial/dont_code_evil/sticker-52x52-dont-code-evil.pdf">English</a>
<a href="https://download.fsfe.org/advocacy/promomaterial/dont_code_evil/sticker-52x52-dont-code-evil.pdf">PDF (English)</a>
</languages>
<printed>
English

View File

@ -14,7 +14,7 @@
<type>Sticker</type>
<size>52 x 52 mm</size>
<languages>
<a href="https://download.fsfe.org/advocacy/promomaterial/dont_wreck_our_tech/sticker-52x52-dont-wreck.pdf">English</a>
<a href="https://download.fsfe.org/advocacy/promomaterial/dont_wreck_our_tech/sticker-52x52-dont-wreck.pdf">PDF (English)</a>
</languages>
<printed>
English

View File

@ -14,7 +14,8 @@
<type>Sticker</type>
<size>8 x 8 cm</size>
<context></context>
<languages>
<languages>PDF (English)
<a href="https://download.fsfe.org/advocacy/promomaterial/FSFE/100_Freedoms/FSFE_100_FREEDOMS_sticker_74_x_74_BLACK.pdf"> https://download.fsfe.org/advocacy/stickers/fedigov/FSFE_fedigov_sticker.pdf</a>
</languages>
<printed>
English

View File

@ -14,7 +14,7 @@
<type>Sticker</type>
<size>44 x 51 mm</size>
<languages>
<a href="https://download.fsfe.org/advocacy/promomaterial/freesociety/sticker-hexagon-50-free-society.pdf">English</a>
<a href="https://download.fsfe.org/advocacy/promomaterial/freesociety/sticker-hexagon-50-free-society.pdf">PDF (English)</a>
</languages>
<printed>
English

View File

@ -14,7 +14,7 @@
<type>Sticker</type>
<size>74 x 52 mm</size>
<languages>
<a href="https://download.fsfe.org/advocacy/promomaterial/free_software_always_wins/sticker-A8-74x52-free-software-wins.pdf">English</a>
<a href="https://download.fsfe.org/advocacy/promomaterial/free_software_always_wins/sticker-A8-74x52-free-software-wins.pdf">PDF (English)</a>
</languages>
<printed>
English

View File

@ -17,7 +17,7 @@
any/no language
</printed>
<license>The logo of the FSFE must never be used in a way that could be understood as endorsing certain activities, home pages, products or entities without prior consent of the FSFE. </license>
<author>Free Software Foundation Europe</author>
<author>Markus Meier</author>
<source><a href="https://download.fsfe.org/advocacy/promomaterial/fsfe-since-2001/">fsfe-since-2001* in download.fsfe.org</a></source>
</info>
</infoset>

View File

@ -17,7 +17,7 @@
</printed>
<license>Het logo van de FSFE mag nooit gebruikt worden op een manier die zou kunnen worden geïnterpreteerd als een goedkeuring van bepaalde activiteiten, startpagina's, producten of entiteiten zonder voorafgaande toestemming van de FSFE.
</license>
<author>Free Software Foundation Europe</author>
<author>Markus Meier</author>
<source><a href="https://download.fsfe.org/advocacy/promomaterial/fsfe-since-2001/">fsfe-since-2001* in download.fsfe.org</a></source>
</info>
</infoset>

View File

@ -16,7 +16,7 @@
<context><a href="https://lists.fsfe.org/postorius/lists/fsfe-women.lists.fsfe.org">FSFE women</a></context>
<languages>
<a href="https://download.fsfe.org/advocacy/promomaterial/FSFE/FSFEwomen/">English</a>
<a href="https://download.fsfe.org/advocacy/promomaterial/FSFE/FSFEwomen/">PDF (English)</a>
</languages>
<printed>
English

View File

@ -16,7 +16,7 @@
<context><a href="https://lists.fsfe.org/postorius/lists/fsfe-women.lists.fsfe.org">FSFE women</a></context>
<languages>
<a href="https://download.fsfe.org/advocacy/promomaterial/FSFE/FSFEwomen/">English</a>
<a href="https://download.fsfe.org/advocacy/promomaterial/FSFE/FSFEwomen/">PDF (English)</a>
</languages>
<printed>
English

View File

@ -19,7 +19,7 @@
<a href="https://download.fsfe.org/advocacy/promomaterial/FSFE/JoinTheMovement/FSFE_ADA_ZANGEMANN_postcard.pdf">English</a>
</languages>
<printed>
English
PDF (English)
</printed>
<license><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a></license>
<author>Sandra Brandstätter</author>

View File

@ -19,7 +19,7 @@
<a href="https://download.fsfe.org/advocacy/promomaterial/FSFE/JoinTheMovement/FSFE_ADA_ZANGEMANN_poster_A2.pdf">English</a>
</languages>
<printed>
English
PDF (English)
</printed>
<license><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a></license>
<author>Sandra Brandstätter</author>

View File

@ -16,7 +16,7 @@
Multilanguage
</printed>
<license><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a></license>
<author>Free Software Foundation Europe</author>
<author>Markus Meier</author>
<source><a href="https://download.fsfe.org/advocacy/promomaterial/FS-Multilanguage/">FS-Multilanguage folder in download.fsfe.org</a></source>
</info>
</infoset>

View File

@ -16,7 +16,7 @@
Multilanguage
</printed>
<license><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a></license>
<author>Free Software Foundation Europe</author>
<author>Markus Meier</author>
<source><a href="https://download.fsfe.org/advocacy/promomaterial/FS-Multilanguage/">FS-Multilanguage folder in download.fsfe.org</a></source>
</info>
</infoset>

View File

@ -30,7 +30,7 @@
Italian
</printed>
<license><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a></license>
<author>Free Software Foundation Europe</author>
<author>Markus Meier</author>
<printready></printready>
<source><a href="https://download.fsfe.org/advocacy/promomaterial/PMPC/sources/FSFE_PMPC_Brochure-en-v1.tar.gz">FSFE_PMPC_Brochure-en-v1.tar.gz in download.fsfe.org</a></source>
</info>

View File

@ -24,7 +24,7 @@
English
</printed>
<license><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a></license>
<author>Free Software Foundation Europe</author>
<author>Markus Meier</author>
<source><a href="https://download.fsfe.org/advocacy/promomaterial/PMPC/sources/FSFE_PMPC_Poster_A2.sla">FSFE_PMPC_Poster_A2.sla in download.fsfe.org</a></source>
<printready></printready>
</info>

View File

@ -17,7 +17,7 @@
English
</printed>
<license><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a></license>
<author>Free Software Foundation Europe</author>
<author>Markus Meier</author>
<source><a href="https://download.fsfe.org/advocacy/promomaterial/PMPC/sources/">PMPC_sticker_v2* in download.fsfe.org</a></source>
</info>
</infoset>

View File

@ -17,7 +17,7 @@
English
</printed>
<license><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a></license>
<author>Free Software Foundation Europe</author>
<author>Markus Meier</author>
<source><a href="https://download.fsfe.org/advocacy/promomaterial/PMPC/sources/">PMPC_sticker_v2* in download.fsfe.org</a></source>
</info>
</infoset>

View File

@ -17,7 +17,7 @@
English
</printed>
<license><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a></license>
<author>Free Software Foundation Europe</author>
<author>Markus Meier</author>
<source><a href="https://download.fsfe.org/advocacy/promomaterial/PMPC/sources/">PMPC_sticker_v2* in download.fsfe.org</a></source>
</info>
</infoset>

View File

@ -17,7 +17,7 @@
English
</printed>
<license><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a></license>
<author>Free Software Foundation Europe</author>
<author>Markus Meier</author>
<source><a href="https://download.fsfe.org/advocacy/promomaterial/PMPC/">PMPC Slogan Sticker in download.fsfe.org</a></source>
</info>
</infoset>

View File

@ -17,7 +17,7 @@
English
</printed>
<license><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a></license>
<author>Free Software Foundation Europe</author>
<author>Markus Meier</author>
<source><a href="https://download.fsfe.org/advocacy/promomaterial/PMPC/">PMPC Slogan Sticker in download.fsfe.org</a></source>
</info>
</infoset>

View File

@ -21,7 +21,7 @@
English
</printed>
<license><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a></license>
<author>Lisa Schmidt</author>
<author>Lisa "Mullana" Schmidt</author>
<source><a href="https://download.fsfe.org/advocacy/promomaterial/yh4f/yh4f-chara3-5x9.png">YH4F character 3 in download.fsfe.org</a></source>
<printready></printready>
</info>

View File

@ -21,7 +21,7 @@
English
</printed>
<license><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA 4.0</a></license>
<author>Lisa Schmidt</author>
<author>Lisa "Mullana" Schmidt</author>
<source><a href="https://download.fsfe.org/advocacy/promomaterial/yh4f/yh4f-logo-9x5.png">yh4f logo in download.fsfe.org</a></source>
<printready></printready>
</info>

View File

@ -13,7 +13,7 @@
<h1 id="spread-the-word">Spread the word!</h1>
<!-- module id="order-delay" //-->
<module id="order-delay" />
<!-- module id="merch-sale" //-->
<div class="toc float-right">

View File

@ -13,7 +13,7 @@
<h1 id="spread-the-word">Spargi la voce!</h1>
<!-- module id="order-delay" //-->
<module id="order-delay" />
<div class="toc float-right">
<p class="head"><a href="#how-to-order">Ordina ora!</a></p>

View File

@ -6,8 +6,9 @@
<!--
The "since" attribute is set for all donors which have donated in at least
4 calendar years in a row - even if previous donations were lower than the
current category. A pause of one calendar year is ok. Monthly supporters are
listed with the amount for the full year, even if the year is still ongoing.
current category. A pause of one calendar year is ok and may happen more
than once in the donor's career. Monthly supporters are listed with the
amount for the full year, even if the year is still ongoing.
-->
<category1>
@ -26,6 +27,7 @@
<donor img="donors/silver-github.png">GitHub</donor>
<donor img="donors/silver-heinlein-support.png" since="2014">Heinlein Support</donor>
<donor img="donors/silver-intevation-new.png" since="2009">Intevation GmbH</donor>
<donor img="donors/silver-openproject.png" since="2019">OpenProject</donor>
<donor img="donors/silver-siemens.png" since="2015">Siemens</donor>
<donor>Y Combinator</donor>
</category2>
@ -43,6 +45,7 @@
<donor since="2021">Julian Rüth GmbH</donor>
<donor since="2009">LIHAS - LinuxHaus Stuttgart</donor><!-- Adrian Reyer -->
<donor>Linux Foundation</donor>
<donor>Matomo.org</donor>
<donor>SUSE</donor>
<donor since="2016">sysmocom - systems for mobile communications</donor>
</category3>

View File

@ -23,7 +23,7 @@
<p>
Recipient: Free Software Foundation Europe e.V.<br/>
Address: Schönhauser Allee 6/7, 10119 Berlin, Germany<br/>
Address: Revaler Straße 19, 10245 Berlin, Germany<br/>
IBAN: DE47 4306 0967 2059 7908 01<br/>
Bank: GLS Gemeinschaftsbank eG, 44774 Bochum, Germany<br/>
BIC: GENODEM1GLS<br/>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<eventset>
<version>1</version>
<event start="2025-02-27T18:30:00Z" end="2025-02-27:20:00:00Z">
<event start="2025-02-27T18:30:00Z" end="2025-02-27T20:00:00Z">
<title>Treffen der lokalen Gruppe Berlin (online)</title>
<group>
<name>Berlin</name>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<eventset>
<version>1</version>
<event start="2025-03-27T18:30:00Z" end="2025-03-27:20:00:00Z">
<event start="2025-03-27T18:30:00Z" end="2025-03-27T20:00:00Z">
<title>Treffen der lokalen Gruppe Berlin (online)</title>
<group>
<name>Berlin</name>

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<eventset>
<version>1</version>
<event start="2025-05-30T08:30:00Z" end="2025-05-30T11:00:00Z">
<title>Ada &amp; Zangemann day in Pesaro, Italia</title>
<group>
<name>None</name>
<url></url>
</group>
<body>
<p>Final event of the 6/19 project co-funded by Wikimedia Italia and Free Software Foundation Europe, with a reading of Ada &amp; Zangemann tale followed by educational robotics workshops.</p>
<p>It will be held on Friday, 30 May 2025 at the Liceo Scientifico Guglielmo Marconi, via Nanterre, 10, 61122, Pesaro.</p>
<p>We would be pleased if you would attend. There is no registration fee. If you bring children, please be aware that journalists from local television stations and newspapers will be present.</p>
<p>The day will be scheduled as follows</p>
<p>— 8.30 greetings by the school headmaster</p>
<p>— 8.40 reading of Ada &amp; Zangemann</p>
<p>— 9.15 first educational robotics workshop</p>
<p>— 10.00 second educational robotics workshop</p>
<p>— 10.45 Raspberry ice cream for everyone</p>
<p>The event is organised by Giacomo Alessandroni, who will read the book and animate the educational robotics workshops, together with his students who will be adopted by the young children.</p>
<p>The official language of the meeting is Italian.</p>
<p>We look forward to seeing you!</p>
</body>
<tags>
<tag key="it">
Italia </tag>
<tag key="infobooth"/>
<tag key="meeting"/>
<tag key="front-page"/>
</tags>
</event>
</eventset>

View File

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<eventset>
<version>1</version>
<event start="2025-05-30T08:30:00Z" end="2025-05-30T11:00:00Z">
<title>Ada &amp; Zangemann day in Pesaro, Italia</title>
<group>
<name>None</name>
<url></url>
</group>
<body>
<p>Evento conclusivo del progetto &quot;seidiciannovesimi&quot; cofinanziato da Wikimedia Italia e Free Software Foundation Europe, con lettura di Ada &amp; Zangemann seguito da laboratori di robotica educativa.</p>
<p>Si terrà venerdì, 30 maggio 2025 presso l&#039;aula magna del Liceo Scientifico &quot;Guglielmo Marconi&quot;, via Nanterre, 10, 61122, Pesaro.</p>
<p>Se interverrete ci farà piacere. Non vi sono costi di registrazione. Se portate bambini, sappiate che saranno presenti giornalisti di televisioni e quotidiani locali.</p>
<p>La giornata sarà così scandita:</p>
<p>— 8.30 saluti del dirigente scolastico</p>
<p>— 8.40 lettura di Ada &amp; Zangemann</p>
<p>— 9.15 primo laboratorio di robotica educativa</p>
<p>— 10.00 secondo laboratorio di robotica educativa</p>
<p>— 10.45 gelato al lampone per tutti</p>
<p>L&#039;evento è organizzato da Giacomo Alessandroni, che leggerà il libro e animerà i laboratori di robotica educativa, insieme ai suoi studenti che saranno adottati dai bimbi piccoli.</p>
<p>La lingua ufficiale dell&#039;incontro è l&#039;italiano.</p>
<p>Vi aspettiamo!</p>
</body>
<tags>
<tag key="it">
Italia </tag>
<tag key="infobooth"/>
<tag key="meeting"/>
<tag key="front-page"/>
</tags>
</event>
</eventset>

View File

@ -12,7 +12,7 @@
Sand, Tübingen, Deutschland, statt. Der Eintritt ist frei.
</p>
<p>
Um 12:00 Uhr im Raum V2 stellt Florian Snow die
Um 12:00 Uhr im Raum V1 stellt Florian Snow die
<a href="https://reuse.software/">REUSE-Initiative</a> vor, und um
15:30 Uhr im Raum V4 informiert Bonnie Mehring über die 2026-er-Ausgabe
des Wettbewerbs

View File

@ -12,7 +12,7 @@
Admission is free.
</p>
<p>
At 12:00 in room V2, Florian Snow presents the
At 12:00 in room V1, Florian Snow presents the
<a href="https://reuse.software/">REUSE initiative</a>, and at
15:30 Uhr im Raum V4, Bonnie Mehring informs about the 2026 edition
of the

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<eventset>
<version>1</version>
<event start="2025-07-10T16:30:00Z" end="2025-07-10T18:00:00Z">
<title>FSFE Zurich local group meeting (online)</title>
<group>
<name>Zurich</name>
<url></url>
</group>
<body>
<p>At the meeting we will discuss the items outlined in the agenda.</p>
</body>
<link>https://wiki.fsfe.org/Events/Zurich/2025-07-10</link>
<tags>
<tag key="localgroup"/>
<tag key="front-page"/>
</tags>
</event>
</eventset>

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<eventset>
<version>1</version>
<event start="2025-07-19T12:00:00Z" end="2025-07-19T16:00:00Z">
<title>EndOf10 - Linux install event in Berlin, Germany</title>
<group>
<name>Berlin</name>
<url></url>
</group>
<body>
<p>
Die Berlinder Gruppe der FSFE, die digitale Gesellschaft, KDE eco und Bits&amp;Bäume laden ein zur endof10 install Party!
</p>
<p>
💻 Alte Kiste? Neues Leben! 🐧<br />
Bring deinen alten Laptop mit wir verpassen ihm ein frisches, freies Linux und machen ihn wieder flott! 🌱✨<br />
📅 Termine: 19.07.2025 &amp; 09.08.2025<br />
🕑 Jeweils um 14:00 Uhr<br />
‼️ Wichtig: Bitte mach vorher ein Backup deiner Daten (z.B. auf USB-Stick oder externen Festplatte). Wir freuen uns auf dich! 🙌<br />
</p>
</body>
<page>http://c-base.org/calendar/#view=month&amp;date=2025-07-01&amp;event=b6376760-db9a-4925-9ece-4f1442ebc0e2</page>
<tags>
<tag key="de">Germany</tag>
<tag key="workshop">Workshop</tag>
<tag key="berlin">Berlin</tag>
<tag key="front-page"/>
</tags>
</event>
</eventset>

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<eventset>
<version>1</version>
<event start="2025-07-19T12:00:00Z" end="2025-07-19T16:00:00Z">
<title>EndOf10 - Linux install event in Berlin, Germany</title>
<group>
<name>Berlin</name>
<url></url>
</group>
<body>
<p>
The Berlin group of FSFE, the digitale Gesellschaft, KDE eco and Bits&amp;Bäume invite you to the endof10 install party!
</p>
<p>
💻 Old box? New life! 🐧<br />
Bring your old laptop - we'll give it a fresh, free Linux and get it up and running again! 🌱✨<br />
📅 Dates: 19.07.2025 &amp; 09.08.2025<br />
🕑 Each at 14:00<br />
‼️ Important: Please make a backup of your data beforehand (e.g. on USB stick or external hard disk).
We look forward to seeing you! 🙌
</p>
</body>
<page>http://c-base.org/calendar/#view=month&amp;date=2025-07-01&amp;event=b6376760-db9a-4925-9ece-4f1442ebc0e2</page>
<tags>
<tag key="de">Germany</tag>
<tag key="workshop">Workshop</tag>
<tag key="berlin">Berlin</tag>
<tag key="front-page"/>
</tags>
</event>
</eventset>

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<eventset>
<version>1</version>
<event start="2025-07-23T17:00:00Z" end="2025-07-23T19:00:00Z">
<title>Treffen der FSFE-Gruppe Franken in Nürnberg, Germany</title>
<group>
<name>None</name>
<url></url>
</group>
<body>
<p>Die FSFE-Gruppe Franken ist eine Gruppe engagierter Freiwilliger in Franken, die sich einmal im Monat trifft und sich über Softwarefreiheit in der Region austauscht.</p>
<p>Bei diesem Treffen wird Florian Snow einen kurzen Überblick über die aktuellen Aktivitäten der FSFE geben und anschließend werden wir uns bei Pizza, die die FSFE großzügigerweise zur Verfügung stellt, austauschen.</p>
<p>Das Treffen findet im K4CG, Königstraße 93, Nürnberg statt und wird von 17:00 - 19:00 UTC/19:00 - 21:00 Uhr Ortszeit stattfinden. Wir können das Treffen wahlweise auf Englisch oder Deutsch halten.</p>
</body>
<link>http://fsfe-franken.org</link>
<tags>
<tag key="de">
Germany </tag>
<tag key="localgroup"/>
<tag key="meeting"/>
<tag key="front-page"/>
</tags>
</event>
</eventset>

View File

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<eventset>
<version>1</version>
<event start="2025-07-23T17:00:00Z" end="2025-07-23T19:00:00Z">
<title>FSFE Franken local group meeting in Nürnberg, Germany</title>
<group>
<name>None</name>
<url></url>
</group>
<body>
<p>The FSFE Franken local group is a group of engaged volunteers in Franconia that meets once a month and exchanges ideas about software freedom in the region.</p>
<p>For this meeting, Florian Snow will give a short overview of recent FSFE activities and then we will socialize over pizza that the FSFE generously offered to pay for.</p>
<p>This meeting will take place in K4CG, Königstraße 93, Nürnberg and will take place from 17:00 - 19:00 UTC/19:00 - 21:00 local time. We can offer the meeting in English or German, at your choice.</p>
</body>
<link>http://fsfe-franken.org</link>
<tags>
<tag key="de">
Germany </tag>
<tag key="localgroup"/>
<tag key="meeting"/>
<tag key="front-page"/>
</tags>
</event>
</eventset>

View File

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<eventset>
<version>1</version>
<event start="2025-08-09T12:00:00Z" end="2025-08-09T16:00:00Z">
<title>EndOf10 - Linux install event in Berlin, Germany</title>
<group>
<name>Berlin</name>
<url></url>
</group>
<body>
<p>
Die Berlinder Gruppe der FSFE, die digitale Gesellschaft, KDE eco und Bits&amp;Bäume laden ein zur endof10 install Party!
</p>
<p>
💻 Alte Kiste? Neues Leben! 🐧<br />
Bring deinen alten Laptop mit wir verpassen ihm ein frisches, freies Linux und machen ihn wieder flott! 🌱✨<br />
📅 Termine: 19.07.2025 &amp; 09.08.2025<br />
🕑 Jeweils um 14:00 Uhr<br />
‼️ Wichtig: Bitte mach vorher ein Backup deiner Daten (z.B. auf USB-Stick oder externen Festplatte). Wir freuen uns auf dich! 🙌<br />
</p>
</body>
<page>http://c-base.org/calendar/#view=month&amp;date=2025-08-01&amp;event=5cff058c-d236-40b3-8116-bdc374fcb34a</page>
<tags>
<tag key="de">Germany</tag>
<tag key="workshop">Workshop</tag>
<tag key="berlin">Berlin</tag>
<tag key="front-page"/>
</tags>
</event>
</eventset>

View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<eventset>
<version>1</version>
<event start="2025-08-09T12:00:00Z" end="2025-08-09T16:00:00Z">
<title>EndOf10 - Linux install event in Berlin, Germany</title>
<group>
<name>Berlin</name>
<url></url>
</group>
<body>
<p>
The Berlin group of FSFE, the digitale Gesellschaft, KDE eco and Bits&amp;Bäume invite you to the endof10 install party!
</p>
<p>
💻 Old box? New life! 🐧<br />
Bring your old laptop - we'll give it a fresh, free Linux and get it up and running again! 🌱✨<br />
📅 Dates: 19.07.2025 &amp; 09.08.2025<br />
🕑 Each at 14:00<br />
‼️ Important: Please make a backup of your data beforehand (e.g. on USB stick or external hard disk).
We look forward to seeing you! 🙌
</p>
</body>
<page>http://c-base.org/calendar/#view=month&amp;date=2025-08-01&amp;event=5cff058c-d236-40b3-8116-bdc374fcb34a</page>
<tags>
<tag key="de">Germany</tag>
<tag key="workshop">Workshop</tag>
<tag key="berlin">Berlin</tag>
<tag key="front-page"/>
</tags>
</event>
</eventset>

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<eventset>
<version>1</version>
<event start="2025-08-16T15:45:00Z" end="2025-08-17T16:45:00Z">
<title> FrOSCOn 25: Cybersecurity in society in St. Augustin, Germany</title>
<group>
<name>None</name>
<url></url>
</group>
<body>
<p>The Cyber Resilience Act (CRA) is currently being implemented and there are still some uncertainties regarding its impact on the Free Software landscape. In particular, the role of stewards is partially unclear. The talk will highlight the current state of the debate as well as ways and solutions on how to deal with the various Free Software stakeholders.<br />
In order to get closer to the questions, we have sent out a questionnaire to relevant stakeholders, the results of which we want to present. We also want to show ways in which the results can be incorporated into the CRA implementation process.</p>
</body>
<link>https://programm.froscon.org/froscon2025/talk/0a656836-cb27-4ef1-80e1-d64c553a96ca/</link>
<tags>
<tag key="de">
Germany </tag>
<tag key="talk"/>
<tag key="front-page"/>
</tags>
</event>
</eventset>

View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<eventset>
<version>1</version>
<event start="2025-10-11T08:00:00Z" end="2025-10-11T10:00:00Z">
<title>Free your Android @ VIScon 2025 in Zurich, Switzerland</title>
<group>
<name>Zurich</name>
<url></url>
</group>
<body>
<p>Representatives of the local group Zurich hold a &quot;Free your Android&quot; workshop as part of the VIScon 2025 at ETH Zurich.</p>
</body>
<link>https://git.fsfe.org/fsfe-zh/viscon25</link>
<tags>
<tag key="ch">
Switzerland </tag>
<tag key="workshop"/>
<tag key="front-page"/>
</tags>
</event>
</eventset>

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

View File

@ -95,10 +95,10 @@
<input type="radio" name="dest" value="44/66" /> Sweden
</label>
<label class="radio-inline">
<input type="radio" name="dest" value="other" /> Other
<input type="radio" name="dest" value="other" id="destOther" /> Other
</label>
<input type="text" name="dest_other" placeholder="14/28" />
<p>(Other: per diem travel/full (e.g. "14/28" for Germany -> Germany). <a href="https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Steuerarten/Lohnsteuer/2023-11-21-steuerliche-behandlung-reisekosten-reisekostenverguetungen-2024.pdf?__blob=publicationFile&amp;v=1">(See the different rates per country.)</a> [PDF]</p>
<input type="text" name="dest_other" placeholder="14/28" onchange="document.getElementById('destOther').checked='checked'" />
<p>(Other: per diem travel/full (e.g. "14/28" for Germany -> Germany). <a href="https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Steuerarten/Lohnsteuer/2024-12-02-steuerliche-behandlung-reisekosten-2025.pdf?__blob=publicationFile&amp;v=12">(See the different rates per country.)</a> [PDF]</p>
</div>
<h2>3. Which meal did you pay yourself?</h2>

View File

@ -152,13 +152,18 @@
<td><select class="form-control col-sm-3" name="category[]" id="category" size="1">
<option value="???:Other / I don't know">Other / I don't know</option>
<option value="66000:Advertising material">Advertising material</option>
<option value="68550:Bank fees">Bank fees</option>
<option value="66400:Hospitality for friends and volunteers">Hospitality for friends and volunteers</option>
<option value="68220:Hospitality for staff">Hospitality for staff</option>
<option value="66050:Information material">Information material</option>
<option value="68150:IT equipment &lt; 250 €">IT equipment &lt; 250 €</option>
<option value="6700:IT equipment &gt; 250 € and &lt; 800 €">IT equipment &gt; 250 € and &lt; 800 €</option>
<option value="6320:IT equipment &gt; 800 €">IT equipment &gt; 800 €</option>
<option value="64590:IT maintenance">IT maintenance</option>
<option value="53000:Merchandise books">Merchandise books</option>
<option value="54000:Merchandise except books">Merchandise except books</option>
<option value="6700:Office equipment &lt; 800 €">Office equipment &lt; 800 €</option>
<option value="68150:Office equipment &lt; 250 €">Office equipment &lt; 250 €</option>
<option value="6700:Office equipment &gt; 250 € and &lt; 800 €">Office equipment &gt; 250 € and &lt; 800 €</option>
<option value="6500:Office equipment &gt; 800 €">Office equipment &gt; 800 €</option>
<option value="68150:Office material">Office material</option>
<option value="67100:Packaging material">Packaging material</option>

View File

@ -47,7 +47,6 @@ Listen to our 34th episode about the <a href="/news/podcast/episode-34.html" >Te
<tag key="pmpc">Public Money? Public Code!</tag>
<tag key="policy">Policy</tag>
<tag key="european-union">European Union</tag>
<tag key="highlights">highlights</tag>
</tags>
<discussion href="https://mastodon.social/deck/@fsfe/114618546576666845"/>

Some files were not shown because too many files have changed in this diff Show More