diff --git a/.env.docker.example b/.env.docker.example new file mode 100644 index 0000000..1078872 --- /dev/null +++ b/.env.docker.example @@ -0,0 +1 @@ +DB_HOST=host.docker.internal diff --git a/.env.example b/.env.example index 00f4ce7..72c1bff 100644 --- a/.env.example +++ b/.env.example @@ -1,20 +1,14 @@ -DB_HOST=localhost +DB_HOST=localhost #host.docker.internal DB_USERNAME=sfscon DB_PASSWORD=sfscon DB_NAME=sfscon DB_PORT=5432 -PRETIX_TOKEN=__PLACE_YOUR_PRETIX_TOKEN__ -PRETIX_CHECKLIST_ID=__PLACE_CHECKLIST_ID__ -PRETIX_EVENT_ID=__PLACE_EVENT_ID__ -PRETIX_ORGANIZER_ID=noi-digital - JWT_SECRET_KEY=__SET_ANYTHING_FOR_ENCODING_JWT__ -XML_URL="https://www.sfscon.it/?calendar=2023&format=xml" +XML_URL="https://www.sfscon.it/?calendar=2024&format=xml" -REDIS_SERVER=localhost +REDIS_SERVER=redis -ADMIN_USERNAME=__ADMIN_USERNAME__ -ADMIN_PASSWORD=__ADMIN_PLAINTEXT_PASSWORD__ -LANE_USERNAME_PREFIX=__ADMIN_USERNAME__ +ADMIN_USERNAME=admin +ADMIN_PASSWORD=123 diff --git a/.gitignore b/.gitignore index 8a8484b..f60ec23 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ +aliases.sh .mypy_cache .env +.env.docker *.pyc .venv .idea @@ -8,3 +10,4 @@ __pycache__ .pytest_cache TODO.txt restore/ +aws.credentials diff --git a/.reuse/dep5 b/.reuse/dep5 deleted file mode 100644 index 7799db9..0000000 --- a/.reuse/dep5 +++ /dev/null @@ -1,12 +0,0 @@ -Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ -Upstream-Name: OpenCON -Upstream-Contact: DigitalCUBE -Source: https://m.opencon.dev/ - -Files: .gitignore *.sample .env.sample docker-compose.yaml src/*.yaml src/*.xml src/docker/* README.md requirements.txt src/pyproject.toml src/tests/assets/fake_attendees.json src/tests/pytest.ini -Copyright: 2023 DigitalCUBE -License: GPL-3.0-or-later - -Files: .github/* infrastructure/* .gitignore .env.example calls.http -Copyright: (c) NOI Techpark -License: CC0-1.0 \ No newline at end of file diff --git a/README.md b/README.md index 430ae6b..1455ba9 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # opencon +### + ### Requirements @@ -11,26 +13,38 @@ app - docker compose - postgresql 14+ +### Changes introduced/removed in this release: + +- Added anonymous users +- Removed Pretixx integration +- Removed access control module + ### Installation - checkout this repository - run docker compose build -- setup .env file (from .env.sample) +- setup .env file (from .env.example) +- setup .env.docker from .env.docker.example (this file contains different database location, by default, but anything else can be overridden) - setup global nginx (see configuration file in config/nginx.global.conf.sample +- run docker compose build - run docker compose up -d currently and by default, the database has been setup on host machine visible from docker containers on host.docker.internal -this is defined at the top of .env file as +this is defined at the top of .env and .env.docker files as ``` -DB_HOST=host.docker.internal +DB_HOST=localhost DB_USERNAME=opencon_user # or any other your username DB_PASSWORD=__your_password__ DB_NAME=opencon_db # or any other database name DB_PORT=5432 ``` +and +``` +DB_HOST=host.docker.internal +``` create database __db_name__ with read/write/create_tables privilege for __your_user__ @@ -48,7 +62,7 @@ psql -U opencon_user template1 create database opencon_db ``` -### bootstrap +### Bootstrap - run docker compose up -d @@ -60,3 +74,12 @@ ADMIN_PASSWORD=__your_admin_password__ click to sync button to sync initial content from sfscon.it +### Program Data + +When the project is started, the database is empty. The program will automatically create the necessary tables. + +Conference data is pulled from the sfscon.it API via crontab in the conferences container every 5 minutes. + +Therefore, the content will be available to users within 5 minutes or on request through the admin panel. + + diff --git a/REUSE.toml b/REUSE.toml new file mode 100644 index 0000000..049c6ad --- /dev/null +++ b/REUSE.toml @@ -0,0 +1,16 @@ +version = 1 +SPDX-PackageName = "OpenCON" +SPDX-PackageSupplier = "DigitalCUBE " +SPDX-PackageDownloadLocation = "https://m.opencon.dev/" + +[[annotations]] +path = ["src/scripts/update-conf.py", "aws.credentials.example",".env.docker.example", "start.sh", "src/tests/**", "src/shared/**", "config/**", "REUSE.toml", "static/**", ".gitignore", "**.sample", ".env.sample", "docker-compose.yaml", "src/**.yaml", "src/**.xml", "src/docker/**", "README.md", "requirements.txt", "src/pyproject.toml", "src/tests/assets/fake_attendees.json", "src/tests/pytest.ini", "src/migrations/models/**"] +precedence = "aggregate" +SPDX-FileCopyrightText = "2023 DigitalCUBE " +SPDX-License-Identifier = "GPL-3.0-or-later" + +[[annotations]] +path = [".github/**", "infrastructure/**", ".gitignore", ".env.example", "calls.http"] +precedence = "aggregate" +SPDX-FileCopyrightText = "(c) NOI Techpark " +SPDX-License-Identifier = "CC0-1.0" diff --git a/aws.credentials.example b/aws.credentials.example new file mode 100644 index 0000000..6af0612 --- /dev/null +++ b/aws.credentials.example @@ -0,0 +1,4 @@ +[default] +aws_access_key_id=__KEY_ID__ +aws_secret_access_key=__ACCESS_KEY__ +region=eu-central-1 diff --git a/config/nginx.admin.config b/config/nginx.admin.config new file mode 100644 index 0000000..3f772eb --- /dev/null +++ b/config/nginx.admin.config @@ -0,0 +1,37 @@ + +upstream upstream_conferences { ip_hash; server conferences:8000 max_fails=3 fail_timeout=300s; } + + +server { + root /web/admin; + + listen 80 default; + server_name _; + + client_max_body_size 20M; + + location / { + index index.html; + try_files $uri $uri/ /index.html; + } + + location /api { + proxy_pass http://upstream_conferences; + proxy_redirect off; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $remote_addr; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + proxy_read_timeout 3600s; + } + + + proxy_buffering off; + + rewrite ^/api/(.*)$ /api/$1 break; + rewrite ^/(.*)$ /$1 break; + +} diff --git a/config/nginx.admin.config.sample b/config/nginx.admin.config.sample index 6364133..e08d9a5 100644 --- a/config/nginx.admin.config.sample +++ b/config/nginx.admin.config.sample @@ -1,44 +1,29 @@ -upstream oneservices_v2 { ip_hash; server 127.0.0.1:8000 max_fails=3 fail_timeout=300s; } +upstream upstream_conferences { ip_hash; server conferences:8000 max_fails=3 fail_timeout=300s; } server { - root /home/digital/app/frontend; + root /web/admin; server_name webadmin.app.sfscon.testingmachine.eu app.sfscon.it; - + client_max_body_size 20M; location / { index index.html; try_files $uri $uri/ /index.html; } - - location /static { - root /home/digital/app/impresaone; - } - - location /pretix { - proxy_pass http://apilogger; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; - - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "Upgrade"; - proxy_read_timeout 3600s; - - } - - location /api/v3 { - proxy_pass http://oneservices_v2; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "Upgrade"; - proxy_read_timeout 3600s; + location /static { + root /home/digital/app/impresaone; } - location /api { - proxy_pass http://oneservices_v2; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; + location /api { + proxy_pass http://upstream_conferences; + proxy_redirect off; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $remote_addr; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; @@ -46,24 +31,11 @@ server { proxy_read_timeout 3600s; } - location /qr-codes { - root /home/digital/app; - index index.html; - } - - proxy_buffering off; - # for sfscon mobile app forgot password - # rewrite ^/forgot-password(.*)$ sfscon://reset-password$1 permanent; - rewrite ^/password-redirect(.*)$ sfscon://reset-password$1 permanent; - # rewrite ^/password-redirect-expo-go(.*)$ sfscon://reset-password$1 permanent; + proxy_buffering off; - rewrite ^/api/v3/(.*)$ /api/v3/$1 break; rewrite ^/api/(.*)$ /api/$1 break; - - rewrite ^/pretix/(.*)$ /pretix/$1 break; - rewrite ^/qr-codes(.*)$ /qr-codes$1 break; rewrite ^/(.*)$ /$1 break; - listen 80; + listen 80; } diff --git a/config/nginx.global.config.sample b/config/nginx.global.config.sample index 289ce2c..188a048 100644 --- a/config/nginx.global.config.sample +++ b/config/nginx.global.config.sample @@ -1,58 +1,37 @@ -upstream oneservices { ip_hash; server 127.0.0.1:8080 max_fails=3 fail_timeout=300s; } -upstream apilogger { ip_hash; server 127.0.0.1:8888 max_fails=3 fail_timeout=300s; } +upstream ups1 { ip_hash; server localhost:8001 max_fails=3 fail_timeout=600s; } + +map $http_upgrade $connection_upgrade { + default upgrade; + '' close; +} server { - listen 80 default; - root /home/digital/app/frontend/dist; - - server_name stage.opencon.dev; - - client_max_body_size 20M; - - location /static { - root /home/digital/app/impresaone; - } - - location / { - index index.html; - try_files $uri $uri/ /index.html; - } - - location /pretix { - proxy_pass http://apilogger; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; - - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "Upgrade"; - proxy_read_timeout 3600s; - - } - - location /api/v3 { - proxy_pass http://oneservices; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; - - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection "Upgrade"; - proxy_read_timeout 3600s; - } - - location /qr-codes { - root /home/digital/app; - index index.html; - # try_files $uri $uri/ index.html; - } - - proxy_buffering off; - - # for sfscon mobile app forgot password - # rewrite ^/forgot-password(.*)$ sfscon://reset-password$1 permanent; - rewrite ^/password-redirect(.*)$ sfscon://reset-password$1 permanent; - # rewrite ^/password-redirect-expo-go(.*)$ sfscon://reset-password$1 permanent; - - rewrite ^/api/v3/(.*)$ /api/v3/$1 break; - rewrite ^/pretix/(.*)$ /pretix/$1 break; - rewrite ^/qr-codes(.*)$ /qr-codes$1 break; - rewrite ^/(.*)$ /$1 break; + listen 80; + + index index.html; + + server_name dev.opencon.dev; + + client_max_body_size 100M; + proxy_connect_timeout 600; + proxy_send_timeout 600; + proxy_read_timeout 600; + send_timeout 600; + + location / { + proxy_pass http://ups1; + proxy_redirect off; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $remote_addr; + + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + proxy_read_timeout 3600s; + proxy_set_header X-Forwarded-Proto $scheme; + } + + proxy_buffering off; } diff --git a/docker-compose.yaml b/docker-compose.yaml index 79a3a8c..6be436d 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,55 +1,64 @@ services: + + webserver: + image: nginx + + build: + context: . + dockerfile: infrastructure/docker/Dockerfile.webserver + + depends_on: + - conferences + - push_notifications + + ports: + - 8001:80 + + conferences: + build: context: . dockerfile: infrastructure/docker/Dockerfile - command: uvicorn main:app --host 0.0.0.0 --reload # sleep 9999999999 + env_file: - - .env + - .env + - .env.docker + volumes: - opencon-logs:/var/log/opencon - ports: - - 8000:8000 + +# - ./src/scripts/update-conf.py:/scripts/update-conf.py + healthcheck: test: curl --fail http://localhost:8000/openapi.json || exit 1 interval: 5s retries: 3 start_period: 5s timeout: 5s + extra_hosts: - "host.docker.internal:host-gateway" + depends_on: redis: condition: service_started - postgres: - condition: service_started push_notifications: + build: context: . dockerfile: infrastructure/docker/Dockerfile command: python workers/push_notifications.py env_file: - - .env + - .env volumes: + - ./src/workers:/workers - opencon-logs:/var/log/opencon + depends_on: redis: condition: service_started - postgres: - condition: service_started - conferences: - condition: service_healthy - - postgres: - image: "postgres:14-alpine" - environment: - POSTGRES_DB: sfscon - POSTGRES_USER: sfscon - POSTGRES_PASSWORD: sfscon - hostname: postgres - volumes: - - postgres-data:/var/lib/postgresql/data redis: command: redis-server @@ -57,10 +66,7 @@ services: image: redis:alpine labels: NAME: redis - ports: - - 6379:6379 volumes: - opencon-logs: - postgres-data: \ No newline at end of file + opencon-logs: diff --git a/infrastructure/docker/Dockerfile b/infrastructure/docker/Dockerfile index f22d361..40eede7 100644 --- a/infrastructure/docker/Dockerfile +++ b/infrastructure/docker/Dockerfile @@ -1,12 +1,14 @@ -FROM python:3.11.5 +FROM python:3.12.7 ENV PYTHONUNBUFFERED 1 +WORKDIR / + COPY src . RUN apt update -RUN apt install -y joe vim redis postgresql-client +RUN apt install -y joe vim redis postgresql-client cron RUN pip install --upgrade pip @@ -15,3 +17,11 @@ RUN pip install wheel COPY requirements.txt ./requirements.txt RUN pip install -r requirements.txt +COPY start.sh /start.sh +RUN chmod +x /start.sh + +COPY ./src/scripts /scripts + +COPY ./aws.credentials /root/.aws/credentials + +CMD ["./start.sh"] \ No newline at end of file diff --git a/infrastructure/docker/Dockerfile.webserver b/infrastructure/docker/Dockerfile.webserver new file mode 100644 index 0000000..d7f1b5a --- /dev/null +++ b/infrastructure/docker/Dockerfile.webserver @@ -0,0 +1,35 @@ +FROM node:latest AS build + +WORKDIR /app + + +# TODO: REMOVE THIS + +RUN git clone https://github.com/digital-cube/sfscon2024-admin.git + + + +# TODO: UNCOMMENT THIS +# RUN git clone https://github.com/noi-techpark/it.sfscon.app.webadmin.git sfscon2024-admin + + + + +WORKDIR /app/sfscon2024-admin + +RUN npm install + +RUN npm run build + + + +FROM nginx:alpine + +WORKDIR /web/admin + +COPY ./config/nginx.admin.config /etc/nginx/conf.d/default.conf + +COPY --from=build /app/sfscon2024-admin/dist/sfscon-admin/browser /web/admin + +EXPOSE 80 + diff --git a/requirements.txt b/requirements.txt index 1cb9991..d796e1d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -45,3 +45,4 @@ tortoise-orm==0.20.0 typing_extensions==4.8.0 uvicorn==0.23.2 xmltodict==0.13.0 +boto3==1.35.45 diff --git a/src/app.py b/src/app.py index 4907a5a..408bafb 100644 --- a/src/app.py +++ b/src/app.py @@ -1,16 +1,15 @@ # SPDX-License-Identifier: GPL-3.0-or-later # SPDX-FileCopyrightText: 2023 Digital CUBE -import os import logging +import os import uuid +from contextlib import asynccontextmanager import psycopg2 -from fastapi import FastAPI -from fastapi import Depends -from tortoise import Tortoise from dotenv import load_dotenv -from contextlib import asynccontextmanager +from fastapi import Depends, FastAPI +from tortoise import Tortoise load_dotenv() diff --git a/src/conferences/api/__init__.py b/src/conferences/api/__init__.py index b9c1696..eda74b9 100644 --- a/src/conferences/api/__init__.py +++ b/src/conferences/api/__init__.py @@ -1,11 +1,4 @@ # SPDX-License-Identifier: GPL-3.0-or-later # SPDX-FileCopyrightText: 2023 Digital CUBE -from .conference import * - -from .v3 import * # TODO: REMOVE THIS -from .no_v3 import * -from .flows import * - -from .printers import * -from .admin import * +from .sfs import * diff --git a/src/conferences/api/admin.py b/src/conferences/api/admin.py deleted file mode 100644 index 3d9634c..0000000 --- a/src/conferences/api/admin.py +++ /dev/null @@ -1,41 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -import pydantic - -from app import get_app -import conferences.controller as controller - -app = get_app() - - -@app.get('/api/conferences/{conference_acronym}/dashboard', ) -async def get_conference_dashboard(conference_acronym: str): - return await controller.get_dashboard(acronym=conference_acronym) - - -@app.get('/api/conferences/{conference_acronym}/attendees') -async def get_conference_attendees(conference_acronym: str, page: int = 1, per_page: int = 7, search: str = None): - return await controller.get_conference_attendees(conference_acronym=conference_acronym, page=page, per_page=per_page, search=search) - - -@app.get('/api/conferences/{conference_acronym}/sessions') -async def get_conference_sessions(conference_acronym: str): - return await controller.get_conference_sessions(conference_acronym=conference_acronym) - - -class TestNotificationRequest(pydantic.BaseModel): - subject: str - message: str - - -@app.post('/api/conferences/pretix_orders/{id_pretix_order}/test_push_notification') -async def test_push_notification(id_pretix_order: str, request: TestNotificationRequest): - try: - conference = await controller.get_conference_by_acronym(acronym='sfscon2023') - - pretix_order = await controller.get_pretix_order(conference=conference, id_pretix_order=id_pretix_order) - res = await controller.enqueue_notification(pretix_order=pretix_order, subject=request.subject, message=request.message) - except Exception as e: - raise e - return res diff --git a/src/conferences/api/conference.py b/src/conferences/api/conference.py deleted file mode 100644 index 008fce0..0000000 --- a/src/conferences/api/conference.py +++ /dev/null @@ -1,114 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - - -import os -import uuid -import logging -import datetime -import pydantic - -from typing import Optional -from fastapi import HTTPException - -from app import get_app -from fastapi.responses import FileResponse -from fastapi.middleware.cors import CORSMiddleware -import conferences.controller as controller - -app = get_app() - - -origins = ["*"] - -app.add_middleware( - CORSMiddleware, - allow_origins=origins, -) - -@app.get('/api/conferences', ) -async def get_conferences(): - return await controller.get_all_conferences() - - -@app.get('/api/conferences/{id_conference}', ) -async def get_single_conference(id_conference: uuid.UUID): - return await controller.opencon_serialize(await controller.get_conference(id_conference=id_conference)) - - -class ConferenceImportRequest(pydantic.BaseModel): - default: Optional[bool] = True - xml_content: Optional[str] = None - force: Optional[bool] = False - - -class ConferenceImportRequestResponse(pydantic.BaseModel): - id: str - - -@app.post('/api/conferences', response_model=ConferenceImportRequestResponse) -async def create_conference(request: ConferenceImportRequest): - if request.default: - content = await controller.fetch_xml_content() - XML_URL = os.getenv("XML_URL", None) - else: - content = await controller.convert_xml_to_dict(request.xml_content) - XML_URL = 'local-file' - - res = await controller.add_conference(content, XML_URL, force=True) - - rlog = logging.getLogger('redis_logger') - if res['created']: - rlog.info(f'Conference {res["conference"].id} created') - elif res['changes']: - rlog.info(f'Conference {res["conference"].id} updated') - else: - rlog.info(f'No need for update for conference {res["conference"].id} / nothing changed in XML file') - - conference = res['conference'] - x = ConferenceImportRequestResponse(id=str(conference.id)) - return x - - -@app.get('/api/conferences/acronym/{acronym}', ) -async def get_conference_by_acronym(acronym: str): - conference = await controller.get_conference_by_acronym(acronym=acronym) - return {'id': conference.id} - - -@app.get('/api/conferences/health') -async def health_check(): - return {"health": True, 'service': 'conferences'} - - -@app.get('/api/conferences/{acronym}/get-csv') -async def getcsv(acronym: str): - csv_file = await controller.get_csv(acronym) - return FileResponse(csv_file, media_type='text/csv') - - -@app.get('/api/conferences/{acronym}/talks.csv') -async def getcsv(acronym: str): - csv_file = await controller.get_csv_talks(acronym) - return FileResponse(csv_file, media_type='text/csv') - - -@app.get('/api/conferences/{acronym}/attendees.csv') -async def getcsv(acronym: str): - csv_file = await controller.get_csv_attendees(acronym) - return FileResponse(csv_file, media_type='text/csv') - - -class ConferenceNotify5MinRequest(pydantic.BaseModel): - now_time: Optional[datetime.datetime] = None - test_only: Optional[bool] = True - - -@app.post('/api/conferences/{acronym}/notify-5-minutes-before-start') -async def notify_5_minutes_before_start(acronym: str, request: ConferenceNotify5MinRequest): - try: - conference = await controller.get_conference_by_acronym(acronym=acronym) - except Exception as e: - raise HTTPException(status_code=404, detail=str(e)) - - return await controller.send_notifications_5_minute_before_start(conference=conference, now_time=request.now_time, test_only=request.test_only) diff --git a/src/conferences/api/flows.py b/src/conferences/api/flows.py deleted file mode 100644 index 83040ba..0000000 --- a/src/conferences/api/flows.py +++ /dev/null @@ -1,28 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -import uuid - -import pydantic -from typing import Optional - -from app import get_app -import conferences.controller as controller - -app = get_app() - - -class FlowRequest(pydantic.BaseModel): - conference_id: Optional[uuid.UUID] - pretix_order_id: Optional[str] - - text: str - data: Optional[dict] = None - - -@app.post('/api/flows', ) -async def add_flow(request: FlowRequest): - conference = await controller.get_conference(id_conference=request.conference_id) if request.conference_id else None - pretix_order = await controller.get_pretix_order(conference, request.pretix_order_id) if request.pretix_order_id else None - - return await controller.add_flow(conference, pretix_order, request.text) diff --git a/src/conferences/api/no_v3.py b/src/conferences/api/no_v3.py deleted file mode 100644 index ff90371..0000000 --- a/src/conferences/api/no_v3.py +++ /dev/null @@ -1,262 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -import os -import jwt -import uuid -import json -import logging -import pydantic -import datetime - -from fastapi import Depends -from typing import Optional, Literal -from fastapi import HTTPException - -import shared.ex as ex -from app import get_app -import conferences.controller as controller -from conferences.controller import decode_token - -app = get_app() - -from fastapi import Request - -log = logging.getLogger('conference_logger') - - -def pretix_order(request: Request): - token = request.headers.get('Authorization', None) - - if not token: - log.info("Raising UNAUTHORIZED") - raise HTTPException(status_code=403, detail="UNAUTHORIZED") - - try: - res = decode_token(token.replace('Bearer ', '')) - log.info(f"Accessing with pretix_order: {res['pretix_order_id']}") - return res - except ex.AppException as e: - log.critical(f"Raising {e.id_message}") - raise HTTPException(status_code=e.status_code, detail=e.id_message) - except Exception as e: - - log.info('Trying to decode admin token') - try: - - res = decode_admin_token(token.replace('Bearer ', '')) - if res['username'] == os.getenv('ADMIN_USERNAME'): - res['pretix_order_id'] = '__admin__' - res['pretix_order_secret'] = '__admin__' - log.info(f"Accessing with admin token") - return res - - if res['username'].startswith('lane'): - res['pretix_order_id'] = res['username'] - res['pretix_order_secret'] = res['username'] - log.info(f"Accessing with lane token") - return res - raise Exception('Invalid lane user token') - - - except Exception as e: - log.critical(f"Raising INTERNAL_SERVER_ERROR {e}") - raise HTTPException(status_code=500, detail='INTERNAL_SERVER_ERROR') - - -class ConferenceImportRequest(pydantic.BaseModel): - default: Optional[bool] = True - xml_content: Optional[str] = None - - -class ConferenceImportRequestResponse(pydantic.BaseModel): - id: str - created: bool - changes: dict - - -@app.post('/api/conferences/import-xml', response_model=ConferenceImportRequestResponse, ) -async def V3CLONE_import_conference_xml_api(): - content = await controller.fetch_xml_content() - XML_URL = os.getenv("XML_URL", None) - - # print("\n"*5) - # print(content) - # print("\n"*5) - # print(XML_URL) - # print("\n"*5) - res = await controller.add_conference(content, XML_URL) - conference = res['conference'] - # print(conference) - # print("\n"*5) - - x = ConferenceImportRequestResponse(id=str(conference.id), created=res['created'], changes=res['changes']) - return x - - -# @app.get('/api/conferences/acronym/{acronym}', ) -# async def V3CLONE_get_conference_by_acronym(acronym: str): -# conference = await controller.get_conference_by_acronym(acronym=acronym) -# return {'id': conference.id} - - -@app.get('/api/conferences/users') -async def v3_users_admin_old_link(): - return await controller.get_conference_attendees(conference_acronym='sfscon2023') - - -# @app.get('/api/conferences/{id_conference}', ) -# async def V3CLONE_get_single_conference(id_conference: uuid.UUID): -# return await controller.opencon_serialize(await controller.get_conference(id_conference=id_conference)) -# - -class PretixRegistrationRequest(pydantic.BaseModel): - order: str - pushToken: Optional[str] = None - device: Optional[Literal['ios', 'android']] = None - - -@app.post('/api/conferences/{id_conference}/pretix', ) -async def V3CLONE_register_pretix_order(id_conference: uuid.UUID, request: PretixRegistrationRequest): - rlog = logging.getLogger('redis_logger') - rlog.info(f"DEVICE {request.device}") - - conference = await controller.get_conference(id_conference=id_conference) - try: - return await controller.register_pretix_order(conference=conference, - order_code=request.order, - push_notification_token=request.pushToken, - registered_in_open_con_app=True, - device=request.device - ) - except Exception as e: - raise HTTPException(status_code=406, detail="Pretix order not found") - - -@app.get('/api/tenants/code/{tenant_code}') -async def V3_GET_ID_TENANT(): - return {'id': uuid.uuid4()} - - -async def tenants_me(pretix_order): - import conferences.models as models - try: - if 'username' in pretix_order: - return { - 'id': uuid.uuid4(), - "role_code": "ADMIN", - 'first_name': f'{pretix_order["username"]}', - 'last_name': f'{pretix_order["username"]}', - 'email': f'{pretix_order["username"]}@opencon.dev', - 'data': {'organization': 'Admin', 'pretix_order': f'__{pretix_order["username"]}__'} - } - - db_pretix_order = await models.PretixOrder.filter(id_pretix_order=pretix_order['pretix_order_id']).get_or_none() - return { - 'id': db_pretix_order.id, - 'first_name': db_pretix_order.first_name, - 'last_name': db_pretix_order.last_name, - 'email': db_pretix_order.email, - 'data': {'organization': db_pretix_order.organization, 'pretix_order': pretix_order['pretix_order_id']} - } - except Exception as e: - raise - - -@app.get('/api/tenants/me') -async def get_me(pretix_order=Depends(pretix_order)): - return await tenants_me(pretix_order=pretix_order) - - -@app.post('/api/conferences/sessions/{id_session}/toggle-bookmark') -async def v3_toggle_bookmark(id_session, pretix_order=Depends(pretix_order)): - return await controller.toggle_bookmark_event_session(pretix_order_id=pretix_order['pretix_order_id'], event_session_id=id_session) - - -@app.get("/api/conferences/{id_conference}/bookmarks") -async def get_my_bookmarks(id_conference: uuid.UUID, pretix_order=Depends(pretix_order)): - return await controller.my_bookmarks(pretix_order_id=pretix_order['pretix_order_id']) - - -class RateEventRequest(pydantic.BaseModel): - rate: int - - -@app.post('/api/conferences/sessions/{id_session}/rate') -async def v3_rate_event(id_session: uuid.UUID, request: RateEventRequest, pretix_order=Depends(pretix_order)): - return await controller.add_stars(pretix_order_id=pretix_order['pretix_order_id'], event_session_id=id_session, stars=request.rate) - - -@app.get('/api/conferences/sessions/{id_session}/rate') -async def v3_rate_event(id_session: uuid.UUID, pretix_order=Depends(pretix_order)): - return await controller.get_stars(pretix_order_id=pretix_order['pretix_order_id'], event_session_id=id_session) - - -def generate_admin_token(username): - JWT_SECRET_KEY = os.getenv('JWT_SECRET_KEY', 'secret') - - payload = { - 'username': username, - 'iat': datetime.datetime.utcnow(), - 'exp': datetime.datetime.utcnow() + datetime.timedelta(days=31), - } - encoded_jwt = jwt.encode(payload, JWT_SECRET_KEY, algorithm='HS256') - - return encoded_jwt - - -def decode_admin_token(token): - JWT_SECRET_KEY = os.getenv('JWT_SECRET_KEY', 'secret') - - decoded_payload = jwt.decode(token, JWT_SECRET_KEY, algorithms=['HS256']) - - return decoded_payload - - -class LoginRequest(pydantic.BaseModel): - username: str - password: str - - -@app.post('/api/tenants/{id_tenant}/sessions') -async def v3_login_admin_with_tenant_not_in_use(id_tenant: uuid.UUID, request: LoginRequest): - if request.username.startswith(os.getenv('LANE_USERNAME_PREFIX')): - return {"token": generate_admin_token(request.username)} - - if request.username != os.getenv('ADMIN_USERNAME'): - raise HTTPException(status_code=403, detail="UNAUTHORIZED") - if request.password != os.getenv('ADMIN_PASSWORD'): - raise HTTPException(status_code=403, detail="UNAUTHORIZED") - - return {"token": generate_admin_token(request.username)} - - -@app.post('/api/tenants/sessions') -async def v3_login_admin(request: LoginRequest): - if request.username.startswith(os.getenv('LANE_USERNAME_PREFIX')): - return {"token": generate_admin_token(request.username)} - - if request.username != os.getenv('ADMIN_USERNAME'): - raise HTTPException(status_code=403, detail="UNAUTHORIZED") - if request.password != os.getenv('ADMIN_PASSWORD'): - raise HTTPException(status_code=403, detail="UNAUTHORIZED") - - return {"token": generate_admin_token(request.username)} - - -class ScanRequest(pydantic.BaseModel): - id_location: Optional[uuid.UUID] - - -@app.post('/api/conferences/scan') -async def v3_scan(request: ScanRequest): - lanes = json.loads(os.getenv('CHECKIN_LANES', '[]')) - - for l in lanes: - if lanes[l] == str(request.id_location): - return {'lane': l, - 'id': str(request.id_location), - 'label_scan_uri': 'http://164.90.234.123:8001/scan/' - } - - raise HTTPException(status_code=403, detail="LOCATION_NOT_RECOGNIZED") diff --git a/src/conferences/api/printers.py b/src/conferences/api/printers.py deleted file mode 100644 index 79ba337..0000000 --- a/src/conferences/api/printers.py +++ /dev/null @@ -1,175 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -import os -import uuid -import json -import logging -import pydantic - -from typing import Optional -from fastapi import Request -from fastapi.exceptions import HTTPException - -from app import get_app -import conferences.models as models -import conferences.controller as controller - -app = get_app() - - -class ScanPretixQRCodeRequest(pydantic.BaseModel): - pretix_response: dict - pretix_checkin_response: Optional[dict] = None - - -''' -/api/conferences/5a25539b-b8f2-4b9d-ad7e-d607bb248835/scans/lanes/5a25539b-b8f2-4b9d-ad7e-d607bb248835/d8cpm24fyuv2nn73zasrzgbcynfcfxd3 -''' - - -@app.post('/api/conferences/{id_conference}z`l/scans/lanes/{id_lane}/{secret}', ) -async def scan_pretix_qr_code(id_conference: uuid.UUID, id_lane: uuid.UUID, secret: str, request: ScanPretixQRCodeRequest): - if not request.pretix_response: - raise HTTPException(status_code=406, detail='PRETIX_RESPONSE_MISSING') - - if request.pretix_response['count'] < 1: - raise HTTPException(status_code=406, detail='PRETIX_RESPONSE_COUNT_MISSING') - - if not request.pretix_response['results'][0]['order']: - raise HTTPException(status_code=406, detail='PRETIX_RESPONSE_ORDER_MISSING') - - order_code = request.pretix_response['results'][0]['order'] - - # try: - # attendee_email = request.pretix_response['results'][0]['attendee_email'] - # attendee_first_name = request.pretix_response['results'][0]['attendee_name_parts']['given_name'] - # attendee_last_name = request.pretix_response['results'][0]['attendee_name_parts']['family_name'] - # company = request.pretix_response['results'][0]['company'] - # except Exception as e: - # logging.critical(f'Failed to parse pretix response: {e}') - # raise HTTPException(status_code=406, detail='PRETIX_RESPONSE_DATA_MISSING') - - conference = await controller.get_conference(id_conference=id_conference) - - lane = await models.Entrance.filter(id=id_lane).get_or_none() - - res = await controller.pretix_qrcode_scanned(conference.id, - secret, - id_lane, - order_code, - # attendee_email, - # attendee_first_name, - # attendee_last_name, - # company, - ) - - pretix_order = await models.PretixOrder.filter(id_pretix_order=order_code).get_or_none() - - pretix_order.nr_printed_labels += 1 - await pretix_order.save() - - text = f"Scanned QR code for order {order_code} on lane {lane.name}, {pretix_order}" - - await controller.add_flow(conference=conference, pretix_order=pretix_order, text=text, - data={'pretix_response': request.pretix_response, - 'pretix_checkin_response': request.pretix_checkin_response}) - - if request.pretix_checkin_response: - if 'status' in request.pretix_checkin_response and request.pretix_checkin_response['status'] == 'error': - reason = request.pretix_checkin_response['reason'] if 'reason' in request.pretix_checkin_response else 'UNKNOWN REASON' - text = f'Checkin failed for order {order_code} on lane {lane.name}, reason: {reason}' - else: - text = f"Checked in order {order_code} on lane {lane.name}" - - await controller.add_flow(conference=conference, pretix_order=pretix_order, text=text, - data={'pretix_response': request.pretix_response, - 'pretix_checkin_response': request.pretix_checkin_response}) - - return res - - -@app.post('/api/printers/unregister/{id_lane}') -async def unregister(id_lane, request: Request): - lane = await models.Entrance.filter(id=id_lane).get_or_none() - if not lane: - raise HTTPException(status_code=404, detail='LANE_NOT_FOUND') - - rlog = logging.getLogger('redis_logger') - - x_forwarded_for = request.headers.get("x-forwarded-for") - if x_forwarded_for: - client_ip = x_forwarded_for.split(",")[0] - else: - client_ip = request.client.host - - rlog.info(f"Printer on lane {lane.name} successfully unregistered from {client_ip}") - - -@app.post('/api/printers/register/{id_lane}') -async def register_printer_and_retrieve_credentials(id_lane, request: Request): - lane = await models.Entrance.filter(id=id_lane).get_or_none() - - if not lane: - raise HTTPException(status_code=404, detail='LANE_NOT_FOUND') - - rlog = logging.getLogger('redis_logger') - - x_forwarded_for = request.headers.get("x-forwarded-for") - if x_forwarded_for: - client_ip = x_forwarded_for.split(",")[0] - else: - client_ip = request.client.host - - conference = await models.Conference.filter(id=lane.conference_id).get_or_none() - - rlog.info(f"Printer on lane {lane.name} successfully registered from {client_ip}") - - LANE2PORT = os.getenv('LANE2PORT', default='{}') - LANE2PORT = json.loads(LANE2PORT) - if lane.name in LANE2PORT: - port = LANE2PORT[lane.name] - else: - raise HTTPException(status_code=404, detail='LANE_PORT_FOUND') - - return { - 'id': str(lane.id), - 'id_conference': str(conference.id), - "name": str(lane.name), - 'external_port': port, - 'pretix': {'token': os.getenv('PRETIX_TOKEN'), - 'checklist_id': os.getenv('PRETIX_CHECKLIST_ID'), - 'event_id': os.getenv('PRETIX_EVENT_ID'), - 'organizer_id': os.getenv('PRETIX_ORGANIZER_ID'), - } - } - - -@app.post('/api/printers/timeout/{id_lane}') -async def timeout_printing(id_lane: uuid.UUID, request: Request): - lane = await models.Entrance.filter(id=id_lane).get_or_none() - if not lane: - raise HTTPException(status_code=404, detail='LANE_NOT_FOUND') - - rlog = logging.getLogger('redis_logger') - - rlog.info(f"TIMEOUT while print on lane {lane.name}") - - return { - 'id': str(lane.id), - } - - -@app.post('/api/printers/printed/{id_lane}/{secret}') -async def successfully_printed(id_lane: uuid.UUID, secret: str, request: Request): - lane = await models.Entrance.filter(id=id_lane).get_or_none() - if not lane: - raise HTTPException(status_code=404, detail='LANE_NOT_FOUND') - - rlog = logging.getLogger('redis_logger') - - rlog.info(f"SUCCESSFULLY PRINTED {secret} on LANE {lane.name}") - - return { - 'id': str(lane.id), - } diff --git a/src/conferences/api/sfs.py b/src/conferences/api/sfs.py new file mode 100644 index 0000000..604800e --- /dev/null +++ b/src/conferences/api/sfs.py @@ -0,0 +1,233 @@ +# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: 2023 Digital CUBE +import datetime +import os +import uuid +from typing import Optional, Union + +import jwt +import pydantic +from fastapi import HTTPException, Query, Request +from fastapi.middleware.cors import CORSMiddleware + +import conferences.controller as controller +import conferences.models as models +from app import get_app +from conferences.controller import ConferenceImportRequestResponse + +app = get_app() + +from fastapi import Depends +from fastapi.security import OAuth2PasswordBearer + + +class PushNotificationRequest(pydantic.BaseModel): + push_notification_token: Optional[Union[None, str]] = Query(default=None) + +async def verify_admin_token(token): + try: + JWT_SECRET_KEY = os.getenv('JWT_SECRET_KEY') + decoded = jwt.decode(token, JWT_SECRET_KEY, algorithms=['HS256']) + if decoded and 'username' in decoded and decoded['username'] == 'admin': + return decoded + + raise HTTPException(status_code=401, detail={"code": "INVALID_TOKEN", "message": "Invalid token"}) + except Exception as e: + raise HTTPException(status_code=401, detail={"code": "INVALID_TOKEN", "message": "Invalid token"}) + +async def verify_token(token): + try: + JWT_SECRET_KEY = os.getenv('JWT_SECRET_KEY') + decoded = jwt.decode(token, JWT_SECRET_KEY, algorithms=['HS256']) + + user = await controller.get_user(decoded['id_user']) + if not user: + raise HTTPException(status_code=401, + detail={"code": "INVALID_TOKEN", "message": "Invalid token, user not found"}) + + return decoded + except Exception as e: + raise HTTPException(status_code=401, detail={"code": "INVALID_TOKEN", "message": "Invalid token"}) + + + + +oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/authorize") + +oauth2_scheme_admin = OAuth2PasswordBearer(tokenUrl="/api/admin/login") + +origins = ["*"] + +app.add_middleware( + CORSMiddleware, + allow_origins=origins, +) + + +@app.get('/api/authorize') +async def create_authorization(push_notification_token: Optional[str] = Query(default=None)): + JWT_SECRET_KEY = os.getenv('JWT_SECRET_KEY', 'secret') + + id_user = await controller.authorize_user(push_notification_token) + + payload = { + 'id_user': id_user, + 'exp': datetime.datetime.utcnow() + datetime.timedelta(days=2 * 365), + } + + encoded_jwt = jwt.encode(payload, JWT_SECRET_KEY, algorithm='HS256') + + return {'token': encoded_jwt} + + +@app.post('/api/authorize') +async def create_authorization_post(): + JWT_SECRET_KEY = os.getenv('JWT_SECRET_KEY', 'secret') + + id_user = await controller.authorize_user() + + payload = { + 'id_user': id_user, + 'exp': datetime.datetime.utcnow() + datetime.timedelta(days=2 * 365), + } + + encoded_jwt = jwt.encode(payload, JWT_SECRET_KEY, algorithm='HS256') + + return {'token': encoded_jwt} + + +@app.post('/api/notification-token') +async def store_notification_token(request: PushNotificationRequest, token: str = Depends(oauth2_scheme)): + decoded = await verify_token(token) + user = await controller.get_user(decoded['id_user']) + user.push_notification_token = request.push_notification_token + await user.save() + + +@app.get('/api/me') +async def get_me(token: str = Depends(oauth2_scheme)): + return await verify_token(token) + + +class ImportConferenceRequest(pydantic.BaseModel): + # use_local_xml: Optional[Union[bool, None]] = False + use_local_xml: Optional[bool] = False + local_xml_fname: Optional[str] = 'sfscon2024.xml' + group_notifications_by_user: Optional[bool] = True + +@app.post('/api/admin/import-xml', response_model=ConferenceImportRequestResponse,) +async def admin_import_conference_xml_api( request: ImportConferenceRequest = None, token: str = Depends(oauth2_scheme_admin)): + await verify_admin_token(token) + + if request is None: + request = ImportConferenceRequest() + + return await controller.do_import_xml(request) + + + +@app.post('/api/import-xml', response_model=ConferenceImportRequestResponse, ) +async def import_conference_xml_api(_request: Request, request: ImportConferenceRequest = None): + + if _request.client.host not in ('localhost', '127.0.0.1', '::1'): + raise HTTPException(status_code=401, detail={"code": "INVALID_HOST", "message": "Invalid host"}) + + if request is None: + request = ImportConferenceRequest() + + return await controller.do_import_xml(request) + + + +@app.get('/api/conference') +async def get_current_conference(last_updated: Optional[str] = Query(default=None), + token: str = Depends(oauth2_scheme)): + # return verify_token(token) + + decoded = await verify_token(token) + return await controller.opencon_serialize_anonymous(decoded['id_user'], await controller.get_current_conference(), + last_updated=last_updated) + + +@app.get('/api/conference/static') +async def get_current_conference_static(_request: Request): + if _request.client.host not in ('localhost', '127.0.0.1', '::1'): + raise HTTPException(status_code=401, detail={"code": "INVALID_HOST", "message": "Invalid host"}) + + return await controller.opencon_serialize_static(await controller.get_current_conference()) + + + +class RateRequest(pydantic.BaseModel): + rating: int + + +@app.post('/api/sessions/{id_session}/rate') +async def rate_session(id_session: uuid.UUID, request: RateRequest, token: str = Depends(oauth2_scheme)): + decoded = await verify_token(token) + return await controller.rate_session(id_user=decoded['id_user'], id_session=id_session, rate=request.rating) + + +@app.post('/api/sessions/{id_session}/bookmarks/toggle') +async def toggle_bookmark_for_session(id_session: uuid.UUID, token: str = Depends(oauth2_scheme)): + decoded = await verify_token(token) + return await controller.bookmark_session(id_user=decoded['id_user'], id_session=id_session) + + +class AdminLoginRequest(pydantic.BaseModel): + username: str + password: str + + +@app.post('/api/admin/login') +async def login_admin(request: AdminLoginRequest): + if (request.username, request.password) != (os.getenv('ADMIN_USERNAME'), os.getenv('ADMIN_PASSWORD')): + raise HTTPException(status_code=401, + detail={"code": "INVALID_ADMIN_USERNAME_OR_PASSWORD", + "message": "Invalid admin username or password"}) + + JWT_SECRET_KEY = os.getenv('JWT_SECRET_KEY', 'secret') + + payload = { + 'username': 'admin', + 'exp': datetime.datetime.utcnow() + datetime.timedelta(days=2), + } + + encoded_jwt = jwt.encode(payload, JWT_SECRET_KEY, algorithm='HS256') + + return {'token': encoded_jwt} + + +@app.get('/api/admin/dashboard') +async def get_dashboard(): + return await controller.get_dashboard() + +@app.get('/api/admin/users') +async def get_users_with_bookmarks( + csv: Optional[bool] = False, + order_field: Optional[str] = None, + order_direction: Optional[models.SortOrder] = None, + token: str = Depends(oauth2_scheme_admin)): + await verify_admin_token(token) + if csv: + return await controller.csv_users() + + return {'data': await controller.get_all_anonymous_users_with_bookmarked_sessions(order_field, order_direction)} + + +@app.get('/api/admin/sessions') +async def get_sessions_by_rate( + csv: Optional[bool] = False, + order_field: Optional[str] = None, + order_direction: Optional[models.SortOrder] = None, + token: str = Depends(oauth2_scheme_admin)): + await verify_admin_token(token) + if csv: + return await controller.csv_sessions() + return {'data': await controller.get_sessions_by_rate(order_field, order_direction)} + + +@app.get('/api/admin/summary') +async def get_event_summary(token: str = Depends(oauth2_scheme_admin)): + await verify_admin_token(token) + return await controller.get_event_summary() \ No newline at end of file diff --git a/src/conferences/api/v3.py b/src/conferences/api/v3.py deleted file mode 100644 index ea193fa..0000000 --- a/src/conferences/api/v3.py +++ /dev/null @@ -1,221 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -import os -import jwt -import uuid -import logging -import pydantic -import datetime - -from fastapi import Depends -from typing import Optional -from fastapi import HTTPException - -import shared.ex as ex -from app import get_app -import conferences.controller as controller -from conferences.controller import decode_token - -app = get_app() - -from fastapi import Request - -log = logging.getLogger('conference_logger') - - -def pretix_order(request: Request): - token = request.headers.get('Authorization', None) - - if not token: - log.info("Raising UNAUTHORIZED") - raise HTTPException(status_code=403, detail="UNAUTHORIZED") - - try: - res = decode_token(token.replace('Bearer ', '')) - log.info(f"Accessing with pretix_order: {res['pretix_order_id']}") - return res - except ex.AppException as e: - log.critical(f"Raising {e.id_message}") - raise HTTPException(status_code=e.status_code, detail=e.id_message) - except Exception as e: - - log.info('Trying to decode admin token') - try: - res = decode_admin_token(token.replace('Bearer ', '')) - if res['username'] == os.getenv('ADMIN_USERNAME'): - res['pretix_order_id'] = '__admin__' - res['pretix_order_secret'] = '__admin__' - log.info(f"Accessing with admin token") - return res - - if res['username'].startswith('lane'): - res['pretix_order_id'] = res['username'] - res['pretix_order_secret'] = res['username'] - log.info(f"Accessing with lane token") - return res - raise Exception('Invalid lane user token') - - except Exception as e: - log.critical(f"Raising INTERNAL_SERVER_ERROR {e}") - raise HTTPException(status_code=500, detail='INTERNAL_SERVER_ERROR') - - -class ConferenceImportRequest(pydantic.BaseModel): - default: Optional[bool] = True - xml_content: Optional[str] = None - - -class ConferenceImportRequestResponse(pydantic.BaseModel): - id: str - created: bool - changes: dict - - -@app.post('/api/v3/conferences/import-xml', response_model=ConferenceImportRequestResponse, ) -async def V3CLONE_import_conference_xml_api(): - content = await controller.fetch_xml_content() - XML_URL = os.getenv("XML_URL", None) - - # print("\n"*5) - # print(content) - # print("\n"*5) - # print(XML_URL) - # print("\n"*5) - res = await controller.add_conference(content, XML_URL) - conference = res['conference'] - # print(conference) - # print("\n"*5) - - x = ConferenceImportRequestResponse(id=str(conference.id), created=res['created'], changes=res['changes']) - return x - - -@app.get('/api/v3/conferences/acronym/{acronym}', ) -async def V3CLONE_get_conference_by_acronym(acronym: str): - conference = await controller.get_conference_by_acronym(acronym=acronym) - return {'id': conference.id} - - -@app.get('/api/v3/conferences/users') -async def v3_users_admin_old_link(): - return await controller.get_conference_attendees(conference_acronym='sfscon2023') - - -@app.get('/api/v3/conferences/{id_conference}', ) -async def V3CLONE_get_single_conference(id_conference: uuid.UUID): - return await controller.opencon_serialize(await controller.get_conference(id_conference=id_conference)) - - -class PretixRegistrationRequest(pydantic.BaseModel): - order: str - pushToken: Optional[str] = None - - -@app.post('/api/v3/conferences/{id_conference}/pretix', ) -async def V3CLONE_register_pretix_order(id_conference: uuid.UUID, request: PretixRegistrationRequest): - conference = await controller.get_conference(id_conference=id_conference) - try: - return await controller.register_pretix_order(conference=conference, - order_code=request.order, - push_notification_token=request.pushToken, - registered_in_open_con_app=True - ) - except Exception as e: - raise HTTPException(status_code=406, detail="PRETIX_ORDER_NOT_FOUND") - - -@app.get('/api/v3/tenants/code/{tenant_code}') -async def V3_GET_ID_TENANT(): - return {'id': uuid.uuid4()} - - -async def tenants_me(pretix_order): - import conferences.models as models - try: - if 'username' in pretix_order: - return { - 'id': uuid.uuid4(), - "role_code": "ADMIN", - 'first_name': 'Admin', - 'last_name': 'Admin', - 'email': 'admin@opencon.dev', - 'data': {'organization': 'Admin', 'pretix_order': '__admin__'} - } - - db_pretix_order = await models.PretixOrder.filter(id_pretix_order=pretix_order['pretix_order_id']).get_or_none() - return { - 'id': db_pretix_order.id, - 'first_name': db_pretix_order.first_name, - 'last_name': db_pretix_order.last_name, - 'email': db_pretix_order.email, - 'data': {'organization': db_pretix_order.organization, 'pretix_order': pretix_order['pretix_order_id']} - } - except Exception as e: - raise - - - -@app.get('/api/v3/tenants/me') -async def V3_GET_ME_DEPRECATED(pretix_order=Depends(pretix_order)): - return await tenants_me(pretix_order=pretix_order) - - -@app.post('/api/v3/conferences/sessions/{id_session}/toggle-bookmark') -async def v3_toggle_bookmark(id_session, pretix_order=Depends(pretix_order)): - return await controller.toggle_bookmark_event_session(pretix_order_id=pretix_order['pretix_order_id'], event_session_id=id_session) - - -@app.get("/api/v3/conferences/{id_conference}/bookmarks") -async def get_my_bookmarks(id_conference: uuid.UUID, pretix_order=Depends(pretix_order)): - return await controller.my_bookmarks(pretix_order_id=pretix_order['pretix_order_id']) - - -class RateEventRequest(pydantic.BaseModel): - rate: int - - -@app.post('/api/v3/conferences/sessions/{id_session}/rate') -async def v3_rate_event(id_session: uuid.UUID, request: RateEventRequest, pretix_order=Depends(pretix_order)): - return await controller.add_stars(pretix_order_id=pretix_order['pretix_order_id'], event_session_id=id_session, stars=request.rate) - - -@app.get('/api/v3/conferences/sessions/{id_session}/rate') -async def v3_rate_event(id_session: uuid.UUID, pretix_order=Depends(pretix_order)): - return await controller.get_stars(pretix_order_id=pretix_order['pretix_order_id'], event_session_id=id_session) - - -def generate_admin_token(username): - JWT_SECRET_KEY = os.getenv('JWT_SECRET_KEY', 'secret') - - payload = { - 'username': username, - 'iat': datetime.datetime.utcnow(), - 'exp': datetime.datetime.utcnow() + datetime.timedelta(days=31), - } - encoded_jwt = jwt.encode(payload, JWT_SECRET_KEY, algorithm='HS256') - - return encoded_jwt - - -def decode_admin_token(token): - JWT_SECRET_KEY = os.getenv('JWT_SECRET_KEY', 'secret') - - decoded_payload = jwt.decode(token, JWT_SECRET_KEY, algorithms=['HS256']) - - return decoded_payload - - -class LoginRequest(pydantic.BaseModel): - username: str - password: str - - -@app.post('/api/v3/tenants/{id_tenant}/sessions') -async def v3_login_admin(id_tenant: uuid.UUID, request: LoginRequest): - if request.username != os.getenv('ADMIN_USERNAME'): - raise HTTPException(status_code=403, detail="UNAUTHORIZED") - if request.password != os.getenv('ADMIN_PASSWORD'): - raise HTTPException(status_code=403, detail="UNAUTHORIZED") - - return {"token": generate_admin_token(request.username)} diff --git a/src/conferences/controller/__init__.py b/src/conferences/controller/__init__.py index b7185b9..0e06b93 100644 --- a/src/conferences/controller/__init__.py +++ b/src/conferences/controller/__init__.py @@ -2,9 +2,3 @@ # SPDX-FileCopyrightText: 2023 Digital CUBE from .conference import * -from .pretix import * -from .bookmarks import * -from .ratings import * -from .controller import * -from .notifications import * - diff --git a/src/conferences/controller/bookmarks.py b/src/conferences/controller/bookmarks.py deleted file mode 100644 index 10d1d30..0000000 --- a/src/conferences/controller/bookmarks.py +++ /dev/null @@ -1,112 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -import os -import json -import uuid -import redis -import logging - -import shared.ex as ex -import conferences.models as models - -log = logging.getLogger('conference_logger') -current_file_dir = os.path.dirname(os.path.abspath(__file__)) - -rlog = logging.getLogger('redis_logger') - - -async def toggle_bookmark_event_session(pretix_order_id: str, event_session_id: uuid.UUID): - try: - pretix_order = await models.PretixOrder.filter(id_pretix_order=pretix_order_id).prefetch_related('conference').get_or_none() - if not pretix_order: - raise ex.AppException(id_message='PRETIX_ORDER_NOT_FOUND', message='Order not found') - - from .conference import get_conference, get_pretix_order, add_flow - conference = pretix_order.conference - - event_session = await models.EventSession.filter(id=event_session_id).get_or_none() - if not event_session: - raise ex.AppException(id_message='EVENT_SESSION_NOT_FOUND', message='Event session not found') - - bookmark = await models.Bookmark.filter(pretix_order=pretix_order, event_session=event_session).get_or_none() - if not bookmark: - await models.Bookmark.create(pretix_order=pretix_order, event_session=event_session) - rlog.info(f'User {pretix_order.email} bookmarked event {event_session.title}') - - await add_flow(conference, pretix_order, f'User {pretix_order.email} bookmarked event {event_session.title}') - - return {'bookmarked': True} - - await bookmark.delete() - rlog.info(f'User {pretix_order.email} removed bookmark from event {event_session.title}') - - await add_flow(conference, pretix_order, f'User {pretix_order.email} removed bookmark from event {event_session.title}') - - return {'bookmarked': False} - - except Exception as e: - log.critical(f'Failed to toggle bookmark for {pretix_order_id} and {event_session_id} :: {e}') - raise - - -async def my_bookmarks(pretix_order_id: str): - try: - pretix_order = await models.PretixOrder.filter(id_pretix_order=pretix_order_id).get_or_none() - if not pretix_order: - raise ex.AppException(id_message='PRETIX_ORDER_NOT_FOUND', message='Order not found') - - return set([str(b.event_session_id) for b in await models.Bookmark.filter(pretix_order=pretix_order).all()]) - - except Exception as e: - raise - - -async def send_changes_to_bookmakers(conference, changes, test: bool = True): - changed_sessions = changes.keys() - - event_sessions = await models.EventSession.filter(conference=conference, id__in=changed_sessions).prefetch_related('bookmarks', - 'room', - 'bookmarks__pretix_order').all() - - if not event_sessions: - return {'nr_enqueued': 0, 'test': test, 'logs': []} - - nr_enqueued = 0 - - with redis.Redis(host=os.getenv('REDIS_SERVER'), port=6379, db=0) as r: - - for event_session in event_sessions: - event_change = changes[str(event_session.id)] - for bookmark in event_session.bookmarks: - if bookmark.pretix_order.push_notification_token: - - _start_dt = event_change['new_start_timestamp'] if 'new_start_timestamp' in event_change else event_session.start_date - _start_date = _start_dt.strftime('%d %b') - _start_time = _start_dt.strftime('%H:%M') - - text = f'The event "{event_session.title}" time has been changed to {_start_time} {_start_date} in room {event_session.room.name}' - - push_notification_token = models.PushNotificationQueue( - pretix_order=bookmark.pretix_order, - subject='Event time has been changed', - message=text, - ) - await push_notification_token.save() - nr_enqueued += 1 - - try: - # !!! Synchronous call - ignore pycharm warning about coroutine, redis is not aioredis - r.rpush('opencon_push_notification', json.dumps({'id': str(push_notification_token.id), - 'expo_push_notification_token': bookmark.pretix_order.push_notification_token, - 'subject': push_notification_token.subject, - 'message': push_notification_token.message - })) - except Exception as e: - log.critical(f'Failed to enqueue push notification for {push_notification_token.pretix_order.id_pretix_order}') - raise - - # for message in p.listen(): - # print(message) - - return {'nr_enqueued': nr_enqueued} diff --git a/src/conferences/controller/conference.py b/src/conferences/controller/conference.py index 688e469..febd111 100644 --- a/src/conferences/controller/conference.py +++ b/src/conferences/controller/conference.py @@ -1,28 +1,40 @@ # SPDX-License-Identifier: GPL-3.0-or-later # SPDX-FileCopyrightText: 2023 Digital CUBE - -import os import csv -import yaml -import uuid +import datetime +import io import json -import httpx +import logging +import os import random +import re +import uuid +from typing import Optional + +import httpx +import pydantic +import redis import slugify -import logging -import datetime -import xmltodict import tortoise.timezone - +import xmltodict +import yaml from fastapi import HTTPException, status +from fastapi.responses import StreamingResponse -import shared.ex as ex import conferences.models as models +import shared.ex as ex log = logging.getLogger('conference_logger') current_file_dir = os.path.dirname(os.path.abspath(__file__)) rlog = logging.getLogger('redis_logger') +from tortoise.functions import Avg, Count + + +class ConferenceImportRequestResponse(pydantic.BaseModel): + id: str + created: bool + changes: dict async def db_add_conference(name, acronym, source_uri): @@ -95,7 +107,8 @@ async def db_add_or_update_tracks(conference, content_tracks): if 'SFSCON' not in tracks_by_name: db_track = await models.Track.filter(conference=conference, name='SFSCON').get_or_none() if not db_track: - db_track = await models.Track.create(**{'conference': conference, 'order': -1, 'name': f'SFSCON', 'slug': f'sfscon', 'color': 'black'}) + db_track = await models.Track.create( + **{'conference': conference, 'order': -1, 'name': f'SFSCON', 'slug': f'sfscon', 'color': 'black'}) tracks_by_name['SFSCON'] = db_track @@ -107,7 +120,49 @@ async def convert_xml_to_dict(xml_text): return content['schedule'] -async def fetch_xml_content(): +def remove_html(text): + # return text + + if not text: + return None + + for t in ('
', '
', '
', '

', '

'): + text = text.replace(t, '\n') + + for t in ('', ''): + if t in text: + text = text.replace(t, '|Text style={styles.bold}|') + + for t in ('', ''): + if t in text: + text = text.replace(t, '|Text style={styles.italic}|') + + for t in ('', '', '', ''): + if t in text: + text = text.replace(t, '|/Text|') + + # Define a regular expression pattern to match HTML tags + pattern = re.compile('<.*?>') + + # Use the pattern to remove all HTML tags + clean_text = re.sub(pattern, '', text) + + clean_text = clean_text.replace('|Text style={styles.bold}|', '') + clean_text = clean_text.replace('|Text style={styles.italic}|', '') + clean_text = clean_text.replace('|/Text|', '') + # Remove any extra whitespace + clean_text = ' '.join(clean_text.split()) + + return clean_text + + +async def fetch_xml_content(use_local_xml=False, local_xml_fname='sfscon2024.xml'): + if use_local_xml: + current_file_folder = os.path.dirname(os.path.realpath(__file__)) + if use_local_xml: + with open(current_file_folder + f'/../../tests/assets/{local_xml_fname}', 'r') as f: + return await convert_xml_to_dict(f.read()) + XML_URL = os.getenv("XML_URL", None) if not XML_URL: @@ -124,7 +179,11 @@ async def fetch_xml_content(): with open('/tmp/last_saved_xml.xml', 'wt') as f: f.write(res.text) - return await convert_xml_to_dict(res.text) + dict_content = await convert_xml_to_dict(res.text) + with open('/tmp/last_saved_json.json', 'wt') as f: + f.write(json.dumps(dict_content, ensure_ascii=False, indent=1)) + + return dict_content except Exception as e: log.critical(f'Error fetching XML from {XML_URL} :: {str(e)}') raise @@ -138,15 +197,27 @@ async def add_sessions(conference, content, tracks_by_name): await models.ConferenceLecturer.filter(conference=conference).delete() def get_or_raise(key, obj): - if key not in obj: - raise HTTPException(status_code=status.HTTP_406_NOT_ACCEPTABLE, - detail=f"{key.upper()}_NOT_FOUND") + + if key == '@unique_id' and not '@unique_id' in obj: + return None + return obj[key] + # # TODO: Ubi ovo kad srede unique - id obrisi od 143-145 linije + # if key == '@unique_id': + # # if key not in obj: + # return obj['@id'] + # + # if key not in obj: + # raise HTTPException(status_code=status.HTTP_406_NOT_ACCEPTABLE, + # detail=f"{key.upper()}_NOT_FOUND") + # return obj[key] + # test for duplicated unique_id events_by_unique_id = {} + all_uids = set() for day in content['day']: for room in day['room']: @@ -157,18 +228,37 @@ def get_or_raise(key, obj): if type(event) != dict: continue unique_id = get_or_raise('@unique_id', event) + if not unique_id: + continue + + if unique_id in all_uids: + continue + + all_uids.add(unique_id) + if unique_id == '2023day1event5': ... if unique_id in events_by_unique_id: - raise HTTPException(status_code=status.HTTP_406_NOT_ACCEPTABLE, detail=f"EVENT_UNIQUE_ID_ALREADY_EXISTS:{unique_id}") + raise HTTPException(status_code=status.HTTP_406_NOT_ACCEPTABLE, + detail={"code": f"EVENT_UNIQUE_ID_ALREADY_EXISTS", + "message": f"Event {unique_id} already exists"}) + events_by_unique_id[unique_id] = unique_id + all_uids = set() + + current_sessions_by_unique_id = { + s.unique_id: s for s in + await models.EventSession.filter(conference=conference).all()} + + sessions_in_this_xml_by_unique_id = {} + for day in content['day']: date = day.get('@date', None) if not date: raise HTTPException(status_code=status.HTTP_406_NOT_ACCEPTABLE, - detail="DAY_DATE_NOT_VALID") + detail={"code": "DAY_DATE_NOT_VALID", "message": "Day date is not valid"}) room_by_name = {} @@ -178,7 +268,7 @@ def get_or_raise(key, obj): if not room_name: raise HTTPException(status_code=status.HTTP_406_NOT_ACCEPTABLE, - detail="ROOM_NAME_NOT_VALID") + detail={"code": "ROOM_NAME_NOT_VALID", "message": "Room name is not valid"}) room_slug = slugify.slugify(room_name) @@ -211,8 +301,20 @@ def get_or_raise(key, obj): if type(event) != dict: continue unique_id = get_or_raise('@unique_id', event) + if not unique_id: + continue + + if unique_id in all_uids: + continue + + all_uids.add(unique_id) title = get_or_raise('title', event) + try: + url = get_or_raise('url', event) + except Exception as e: + url = None + slug = slugify.slugify(title) track_name = event.get('track', None) if type(track_name) == dict: @@ -229,11 +331,13 @@ def get_or_raise(key, obj): description = event.get('description', None) abstract = event.get('abstract', None) - no_bookmark = event.get('@no_bookmark', False) - bookmarkable = not no_bookmark - rateable = bookmarkable + # no_bookmark = event.get('@bookmark', False) + can_bookmark = event.get('@bookmark', "0") == "1" + can_rate = event.get('@rating', "0") == "1" - if not bookmarkable: + if not can_bookmark: + ... + else: ... if event_start and len(event_start) == 5: @@ -274,22 +378,27 @@ def get_or_raise(key, obj): if not db_event: db_event = await models.EventSession.create(conference=conference, title=title, + url=url, abstract=abstract, - description=description, + description=remove_html(description), unique_id=unique_id, - bookmarkable=bookmarkable, - rateable=rateable, + bookmarkable=can_bookmark, + rateable=can_rate, track=track, room=db_room, str_start_time=str_start_time, start_date=event_start, - end_date=event_start + datetime.timedelta(seconds=event_duration) if event_start and event_duration else None, + duration=event_duration, + end_date=event_start + datetime.timedelta( + seconds=event_duration) if event_start and event_duration else None, ) - await models.StarredSession.create(event_session=db_event, - nr_votes=0, - total_stars=0, - avg_stars=0) + sessions_in_this_xml_by_unique_id[unique_id] = db_event + + # await models.StarredSession.create(event_session=db_event, + # nr_votes=0, + # total_stars=0, + # avg_stars=0) else: event_start = tortoise.timezone.make_aware(event_start) @@ -300,16 +409,20 @@ def get_or_raise(key, obj): await db_event.update_from_dict({'title': title, 'abstract': abstract, 'description': description, 'unique_id': unique_id, - 'bookmarkable': bookmarkable, - 'rateable': rateable, + 'bookmarkable': can_bookmark, + 'rateable': can_rate, 'track': track, + 'duration': event_duration, 'db_room': db_room, 'str_start_time': str_start_time, 'start_date': event_start, - 'end_date': event_start + datetime.timedelta(seconds=event_duration) if event_start and event_duration else None}) + 'end_date': event_start + datetime.timedelta( + seconds=event_duration) if event_start and event_duration else None}) await db_event.save() + sessions_in_this_xml_by_unique_id[unique_id] = db_event + except Exception as e: log.critical(f'Error adding event {title} :: {str(e)}') raise @@ -327,7 +440,8 @@ def get_or_raise(key, obj): for person in persons: try: - db_person = await models.ConferenceLecturer.filter(conference=conference, external_id=person['@id']).get_or_none() + db_person = await models.ConferenceLecturer.filter(conference=conference, + external_id=person['@id']).get_or_none() except Exception as e: log.critical(f'Error adding person {person["#text"]} :: {str(e)}') raise @@ -349,7 +463,7 @@ def get_or_raise(key, obj): try: db_person = await models.ConferenceLecturer.create(conference=conference, external_id=pid, - bio=bio, + bio=remove_html(bio), social_networks=social_networks, first_name=first_name, last_name=last_name, @@ -362,7 +476,7 @@ def get_or_raise(key, obj): log.critical(f'Error adding person {person["#text"]} :: {str(e)}') raise else: - await db_person.update_from_dict({'bio': bio, + await db_person.update_from_dict({'bio': remove_html(bio), 'social_networks': social_networks, 'first_name': first_name, 'last_name': last_name, @@ -380,10 +494,131 @@ def get_or_raise(key, obj): await db_event.fetch_related('lecturers') await db_event.lecturers.add(*event_persons) - return changes + current_uid_keys = set(current_sessions_by_unique_id.keys()) + event_session_uid_keys = set(sessions_in_this_xml_by_unique_id.keys()) + + to_delete = None + + if current_uid_keys and current_uid_keys != event_session_uid_keys: + to_delete = current_uid_keys - event_session_uid_keys + for ide in to_delete: + e = current_sessions_by_unique_id[ide] + changes[str(e.id)] = {'old_start_timestamp': e.start_date, 'new_start_timestamp': None} + + # removing will be later, after sending notifications + + return changes, to_delete + + +async def send_changes_to_bookmakers(changes, group_4_user=True): + log.info('-' * 100) + log.info("send_changes_to_bookmakers") + + changed_sessions = changes.keys() + # all_anonymous_bookmarks = await models.AnonymousBookmark.filter(session_id__in=changed_sessions).all() + + notification2token = {} + + from html import unescape + def clean_text(text): + # Unescape any HTML entities (like –) + text = unescape(text) + + # Remove special characters (adjust regex pattern as needed) + cleaned_text = re.sub(r'[^\w\s.,:;!?-]', '', text) + + return cleaned_text + + from shared.redis_client import RedisClientHandler + redis_client = RedisClientHandler.get_redis_client() + # with redis.Redis(host=os.getenv('REDIS_SERVER'), port=6379, db=0) as r: + + if True: + + q = models.EventSession.filter(id__in=changed_sessions) + for session in await q: + print("S1", session.id) + log.info(f"S1 {session.id}") + + q = models.EventSession.filter(id__in=changed_sessions, + anonymous_bookmarks__user__push_notification_token__isnull=False + ).prefetch_related('anonymous_bookmarks', + 'room', + 'anonymous_bookmarks__user' + ).distinct() + + s = q.sql() + + log.info("X") + + notify_users = {} + for session in await q: + + log.info('-' * 100) + log.info(f"Session {session.id}") + + for bookmarks4session in session.anonymous_bookmarks: + + # log.info(f" bookmarks4session {bookmarks4session}") + + _from = changes[str(session.id)]['old_start_timestamp'].strftime('%m.%d. %H:%M') + _to = changes[str(session.id)]['new_start_timestamp'].strftime('%m.%d. %H:%M') if \ + changes[str(session.id)]['new_start_timestamp'] else None + if changes[str(session.id)]['new_start_timestamp'] and changes[str(session.id)][ + 'old_start_timestamp'].date() == changes[str(session.id)][ + 'new_start_timestamp'].date(): + _from = changes[str(session.id)]['old_start_timestamp'].strftime('%H:%M') + _to = changes[str(session.id)]['new_start_timestamp'].strftime('%H:%M') -async def add_conference(content: dict, source_uri: str, force: bool = False): + if not _to: + notification = "Session '" + clean_text(session.title) + "' has been cancelled" + else: + notification = "Session '" + clean_text( + session.title) + "' has been rescheduled from " + _from + " to " + _to + f' in room {session.room.name}' + + if bookmarks4session.user.push_notification_token not in notification2token: + notification2token[bookmarks4session.user.push_notification_token] = [] + notification2token[bookmarks4session.user.push_notification_token].append(notification) + + if not group_4_user: + pn_payload = {'id': bookmarks4session.user.push_notification_token, + 'expo_push_notification_token': bookmarks4session.user.push_notification_token, + 'subject': "Event rescheduled", + 'message': notification, + 'data': { + 'command': 'SESSION_START_CHANGED', + 'session_id': str(session.id), + 'value': changes[str(session.id)]['new_start_timestamp'].strftime( + '%Y-%m-%d %H:%M:%S') + } + } + + log.info(f"SENDING PUSH NOTIFICATION TO {bookmarks4session.user.push_notification_token}") + redis_client.push_message('opencon_push_notification', pn_payload) + + else: + if bookmarks4session.user_id not in notify_users: + notify_users[bookmarks4session.user_id] = { + 'token': bookmarks4session.user.push_notification_token, 'sessions': set()} + notify_users[bookmarks4session.user_id]['sessions'].add(bookmarks4session.session_id) + + if group_4_user and notify_users: + for id_user in notify_users: + pn_payload = {'id': notify_users[id_user]['token'], + 'expo_push_notification_token': notify_users[id_user]['token'], + 'subject': "Event rescheduled" if len( + notify_users[id_user]['sessions']) == 1 else "Events rescheduled", + 'message': "Some of your bookmarked events have been rescheduled", + 'data': { + 'command': 'OPEN_BOOKMARKS', + } + } + log.info(f"SENDING PUSH NOTIFICATION TO {notify_users[id_user]['token']}") + redis_client.push_message('opencon_push_notification', pn_payload) + + +async def add_conference(content: dict, source_uri: str, force: bool = False, group_notifications_by_user=True): conference = await models.Conference.filter(source_uri=source_uri).get_or_none() created = False @@ -410,14 +645,20 @@ async def add_conference(content: dict, source_uri: str, force: bool = False): content_tracks = content.get('tracks', []) tracks_by_name = await db_add_or_update_tracks(conference, content_tracks) - changes = await add_sessions(conference, content, tracks_by_name) + try: + changes, to_delete = await add_sessions(conference, content, tracks_by_name) + except Exception as e: + raise + if created: changes = {} changes_updated = None if changes: - from conferences.controller import send_changes_to_bookmakers - changes_updated = await send_changes_to_bookmakers(conference, changes, test=True) + changes_updated = await send_changes_to_bookmakers(changes, group_4_user=group_notifications_by_user) + + if to_delete: + await models.EventSession.filter(unique_id__in=to_delete).delete() return {'conference': conference, 'created': created, @@ -431,7 +672,7 @@ async def get_conference_sessions(conference_acronym): conference = await models.Conference.filter(acronym=conference_acronym).get_or_none() if not conference: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, - detail="CONFERENCE_NOT_FOUND") + detail={"code": "CONFERENCE_NOT_FOUND", "message": "conference not found"}) conference = await get_conference(conference.id) serialized = await opencon_serialize(conference) @@ -445,18 +686,19 @@ async def get_conference_sessions(conference_acronym): bookmark_per_event[str(bpe.event_session_id)] += 1 rate_per_event = {} - for rpe in await models.StarredSession.filter(event_session__conference=conference).prefetch_related('event_session').all(): + for rpe in await models.StarredSession.filter(event_session__conference=conference).prefetch_related( + 'event_session').all(): rate_per_event[str(rpe.event_session_id)] = rpe.total_stars / rpe.nr_votes if rpe.nr_votes else ' ' for day in serialized['conference']['idx']['ordered_sessions_by_days']: for id_session in serialized['conference']['idx']['ordered_sessions_by_days'][day]: session = serialized['conference']['db']['sessions'][id_session] - - sessions.append({ 'event': session['title'], - 'speakers': ', '.join([serialized['conference']['db']['lecturers'][id_lecturer]['display_name'] for id_lecturer in session['id_lecturers']]), + 'speakers': ', '.join( + [serialized['conference']['db']['lecturers'][id_lecturer]['display_name'] for id_lecturer in + session['id_lecturers']]), 'date': session['date'], 'bookmarks': bookmark_per_event[str(id_session)] if id_session in bookmark_per_event else 0, 'rating': rate_per_event[str(id_session)] if str(id_session) in rate_per_event else ' ' @@ -499,269 +741,400 @@ async def get_pretix_order(conference: models.Conference, id_pretix_order: str): raise -async def get_conference(id_conference: uuid.UUID): - conference = await models.Conference.filter(id=id_conference).prefetch_related('tracks', - 'locations', - 'event_sessions', - 'event_sessions__track', - 'event_sessions__room', - # 'event_sessions__room__location', - 'event_sessions__lecturers', - 'rooms', - # 'rooms__location', - 'lecturers', - 'lecturers__event_sessions', - 'event_sessions__starred_session' - ).get_or_none() - return conference +async def get_dashboard(): + return { + 'total_users': 33, + 'total_bookmarks': 34, + 'total_ratings': 35, + } -async def opencon_serialize(conference): - db = {} - idx = {} +async def csv_users(): + conference = await get_current_conference() + if not conference: + raise HTTPException(status_code=404, detail={"code": "CONFERENCE_NOT_FOUND", "message": "Conference not found"}) - with open(current_file_dir + '/../../tests/assets/sfs2023streaming.yaml', 'r') as f: - streaming_links = yaml.load(f, yaml.Loader) + all_users = await models.UserAnonymous.all().prefetch_related('bookmarks', 'bookmarks__session', 'rates') - idx['ordered_sponsors'] = [] + output = io.StringIO() + writer = csv.writer(output) + writer.writerow(['ID', 'Bookmarks', 'Number of ratings', 'Registered']) - db['tracks'] = {str(track.id): track.serialize() for track in conference.tracks} - db['locations'] = {str(location.id): location.serialize() for location in conference.locations} - db['rooms'] = {str(room.id): room.serialize() for room in conference.rooms} - db['sessions'] = {str(session.id): session.serialize(streaming_links) for session in conference.event_sessions} - db['lecturers'] = {str(lecturer.id): lecturer.serialize() for lecturer in conference.lecturers} - db['sponsors'] = {} + for user in all_users: + id = user.id + bookmarks = len(user.bookmarks) + nr_ratings = len(user.rates) + register_at = user.created.strftime('%Y-%m-%d %H:%M:%S') - days = set() - for s in db['sessions'].values(): - days.add(s['date']) + writer.writerow([id, bookmarks, nr_ratings, register_at]) - idx['ordered_lecturers_by_display_name'] = [l['id'] for l in sorted(db['lecturers'].values(), key=lambda x: x['display_name'])] - idx['ordered_sessions_by_days'] = {d: [s['id'] for s in db['sessions'].values() if s['date'] == d] for d in sorted(list(days))} - idx['ordered_sessions_by_tracks'] = {t: [s['id'] for s in db['sessions'].values() if s['id_track'] == t] for t in db['tracks'].keys()} - idx['days'] = sorted(list(days)) + output.seek(0) - conference_avg_rating = {'rates_by_session': {}} - for session in conference.event_sessions: - if session.starred_session and session.starred_session.nr_votes: - conference_avg_rating['rates_by_session'][str(session.id)] = [session.starred_session.avg_stars, - session.starred_session.nr_votes] + filename = f"sfs2024_anonymous_users_on_{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}.csv" - with open(current_file_dir + '/../../tests/assets/sfscon2023sponsors.yaml', 'r') as f: - db['sponsors'] = yaml.load(f, yaml.Loader) + return StreamingResponse( + iter([output.getvalue()]), + media_type="text/csv", + headers={ + 'Content-Disposition': f'attachment; filename="{filename}"' + } + ) - re_ordered_lecturers = {} - for l in idx['ordered_lecturers_by_display_name']: - re_ordered_lecturers[l] = db['lecturers'][l] - db['lecturers'] = re_ordered_lecturers +async def get_all_anonymous_users_with_bookmarked_sessions(order_field: Optional[str] = None, + order_direction: Optional[models.SortOrder] = None): + conference = await get_current_conference() + if not conference: + raise HTTPException(status_code=404, detail={"code": "CONFERENCE_NOT_FOUND", "message": "Conference not found"}) + + all_users = await models.UserAnonymous.all().prefetch_related('bookmarks', 'bookmarks__session', 'rates') + + users_data = [ + { + 'id': user.id, + 'bookmarks': len([b.session.title for b in user.bookmarks]), + 'nr_ratings': len(user.rates), + 'register_at': str(user.created) + } + for user in all_users + ] - return {'last_updated': str(tortoise.timezone.make_naive(conference.last_updated)), - 'conference_avg_rating': conference_avg_rating, - 'next_try_in_ms': 3000000, - 'conference': {'acronym': str(conference.acronym), - 'db': db, - 'idx': idx - } - } + # Apply sorting if specified + if order_field and order_direction: + reverse = order_direction == models.SortOrder.DESCENDING + if order_field == 'register_at': + users_data.sort(key=lambda x: x['register_at'], reverse=reverse) + elif order_field in ['bookmarks', 'nr_ratings']: + users_data.sort(key=lambda x: x[order_field], reverse=reverse) + return users_data -async def get_conference_by_acronym(acronym: str): - acronym = 'sfscon-2023' - return await models.Conference.filter(acronym=acronym).get_or_none() +async def csv_sessions(): + conference = await get_current_conference() + if not conference: + raise HTTPException(status_code=404, detail={"code": "CONFERENCE_NOT_FOUND", "message": "Conference not found"}) -# def now_timestamp(): -# return datetime.datetime.now() + all_sessions = await models.EventSession.filter(conference=conference).prefetch_related('anonymous_rates', + 'lecturers', + 'anonymous_bookmarks').all() + output = io.StringIO() + writer = csv.writer(output) + writer.writerow(['Title', 'Speakers', 'Bookmarks', 'Rates', 'Avg rate']) -# def sec2minutes(seconds): -# mm = seconds // 60 -# ss = seconds % 60 -# return f'{mm}:{ss:02}' + for session in all_sessions: + title = session.title + speakers = ', '.join([lecturer.display_name for lecturer in session.lecturers]) + bookmarks = len(session.anonymous_bookmarks) + rates = len(session.anonymous_rates) + avg_rate = sum([r.rate for r in session.anonymous_rates]) / len( + session.anonymous_rates) if session.anonymous_rates else None + writer.writerow([title, speakers, bookmarks, rates, avg_rate]) -# async def extract_all_session_event_which_starts_in_next_5_minutes(conference, now=None): -# if not now: -# try: -# now_time = tortoise.timezone.make_aware(datetime.datetime.now()) -# except Exception as e: -# raise -# -# else: -# now_time = now -# -# sessions = await models.EventSession.filter(conference=conference, -# start_date__gte=now_time, -# start_date__lte=now_time + datetime.timedelta(minutes=5)).all() -# -# to_notify_by_session_emails = {} -# to_notify_by_session = {} -# if sessions: -# for session in sessions: -# bookmarkers_to_notify = await models.Bookmark.filter(event_session=session, -# pretix_order__push_notification_token__isnull=False).prefetch_related('pretix_order').all() -# -# to_notify_by_session[str(session.id)] = [str(bookmark.pretix_order.id) for bookmark in bookmarkers_to_notify] -# to_notify_by_session_emails[session.title] = {'start_at': str(session.start_date), -# 'start_in': sec2minutes((session.start_date - now_time).seconds) + ' minutes', -# 'to_notify': [bookmark.pretix_order.email for bookmark in bookmarkers_to_notify]} -# -# return {'ids': to_notify_by_session, -# 'human_readable': to_notify_by_session_emails} + output.seek(0) + + filename = f"sfs2024_sessions_on_{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}.csv" + return StreamingResponse( + iter([output.getvalue()]), + media_type="text/csv", + headers={ + 'Content-Disposition': f'attachment; filename="{filename}"' + } + ) -async def get_csv_attendees(acronym: str): - tmp_file = f'/tmp/{uuid.uuid4()}.csv' - conference = await get_conference_by_acronym(acronym=acronym) +async def get_sessions_by_rate(order_field: Optional[str] = None, order_direction: Optional[models.SortOrder] = None): + conference = await get_current_conference() if not conference: - raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, - detail="CONFERENCE_NOT_FOUND") + raise HTTPException(status_code=404, detail={"code": "CONFERENCE_NOT_FOUND", "message": "Conference not found"}) + + # Fetch all sessions related to the current conference + all_sessions = await models.EventSession.filter( + conference=conference + ).prefetch_related('anonymous_rates', 'lecturers', 'anonymous_bookmarks').all() + + # Prepare session data + sessions_data = [ + { + 'title': session.title, + 'bookmarks': len(session.anonymous_bookmarks), + 'speakers': ', '.join([lecturer.display_name for lecturer in session.lecturers]), + 'rates': len(session.anonymous_rates), + 'avg_rate': sum(r.rate for r in session.anonymous_rates) / len( + session.anonymous_rates) if session.anonymous_rates else None + } + for session in all_sessions + ] - attendees = await models.PretixOrder.filter(conference=conference, - nr_printed_labels__gt=0 - ).order_by('first_name').all() + # Apply sorting if specified + if order_field and order_direction: + reverse = order_direction == models.SortOrder.DESCENDING - with open(tmp_file, 'wt') as f: + # Sorting for different fields + if order_field == 'avg_rate': + rated_sessions = [s for s in sessions_data if s['avg_rate'] is not None] + unrated_sessions = [s for s in sessions_data if s['avg_rate'] is None] - writer = csv.writer(f) - writer.writerow(['First Name', 'Last Name', 'Email', 'Organization', 'Pretix Order']) - for pretix_order in attendees: - writer.writerow([pretix_order.first_name, - pretix_order.last_name, - pretix_order.email, - pretix_order.organization, - pretix_order.id_pretix_order - ]) + rated_sessions.sort(key=lambda x: -x['avg_rate'], reverse=reverse) - return tmp_file + sessions_data = rated_sessions + unrated_sessions + elif order_field == 'bookmarks': + sessions_data.sort( + key=lambda x: (x['bookmarks'] is None, -x['bookmarks'] if x['bookmarks'] is not None else 0), + reverse=reverse) + elif order_field == 'rates': + sessions_data.sort(key=lambda x: (x['rates'] is None, -x['rates'] if x['rates'] is not None else 0), + reverse=reverse) + return sessions_data -async def get_csv_talks(acronym: str): - tmp_file = f'/tmp/{uuid.uuid4()}.csv' - conference = await get_conference_by_acronym(acronym=acronym) +async def get_event_summary(): + conference = await get_current_conference() + if not conference: + raise HTTPException(status_code=404, detail={"code": "CONFERENCE_NOT_FOUND", "message": "Conference not found"}) + + all_users = await models.UserAnonymous.all() + all_sessions = await models.EventSession.filter(conference=conference).all() + all_bookmarks = await models.AnonymousBookmark.filter(session__conference=conference).all() + all_rates = await models.AnonymousRate.filter(session__conference=conference).all() + + return { + 'all_users': len(all_users), + 'total_sessions': len(all_sessions), + 'total_bookmarks': len(all_bookmarks), + 'total_rates': len(all_rates) + } + + +async def get_current_conference(): + conference = await models.Conference.filter().prefetch_related('tracks', + 'locations', + 'event_sessions', + 'event_sessions__track', + 'event_sessions__room', + # 'event_sessions__room__location', + 'event_sessions__lecturers', + 'rooms', + # 'rooms__location', + 'lecturers', + 'lecturers__event_sessions', + # 'event_sessions__starred_session', + + 'event_sessions__anonymous_bookmarks', + 'event_sessions__anonymous_rates', + + ).order_by('-created').first() + if not conference: raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, - detail="CONFERENCE_NOT_FOUND") + detail={"code": "CONFERENCE_NOT_FOUND", "message": "conference not found"}) + return conference - conference = await get_conference(conference.id) - serialized = await opencon_serialize(conference) - bookmark_per_event = {} - for bpe in await models.Bookmark.filter(pretix_order__conference=conference).prefetch_related('pretix_order').all(): - if str(bpe.event_session_id) not in bookmark_per_event: - bookmark_per_event[str(bpe.event_session_id)] = 0 - bookmark_per_event[str(bpe.event_session_id)] += 1 +# +# async def get_conference(id_conference: uuid.UUID): +# conference = await models.Conference.filter(id=id_conference).prefetch_related('tracks', +# 'locations', +# 'event_sessions', +# 'event_sessions__track', +# 'event_sessions__room', +# # 'event_sessions__room__location', +# 'event_sessions__lecturers', +# 'rooms', +# # 'rooms__location', +# 'lecturers', +# 'lecturers__event_sessions', +# # 'event_sessions__starred_session', +# +# 'event_sessions__anonymous_bookmarks', +# 'event_sessions__anonymous_rates', +# +# ).get_or_none() +# +# return conference - rate_per_event = {} - for rpe in await models.StarredSession.filter(event_session__conference=conference).prefetch_related('event_session').all(): - rate_per_event[str(rpe.event_session_id)] = rpe.total_stars / rpe.nr_votes if rpe.nr_votes else '' +async def authorize_user(push_notification_token: str = None): + # log.info(f"AUTHORIZING NEW ANONYMOUS USER push_notification_token={push_notification_token}") + anonymous = models.UserAnonymous() # push_notification_token=push_notification_token) + await anonymous.save() + return str(anonymous.id) + + +async def get_user(id_user: uuid.UUID): + return await models.UserAnonymous.filter(id=id_user).get_or_none() + + +async def bookmark_session(id_user, id_session): + user = await models.UserAnonymous.filter(id=id_user).get_or_none() + if not user: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, + detail={"code": "USER_NOT_FOUND", "message": "user not found"}) + + session = await models.EventSession.filter(id=id_session).get_or_none() + if not session: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, + detail={"code": "SESSION_NOT_FOUND", "message": "session not found"}) + + try: + current_bookmark = await models.AnonymousBookmark.filter(user=user, session=session).get_or_none() + except Exception as e: + raise + + if not current_bookmark: + await models.AnonymousBookmark.create(user=user, session=session) + return {'bookmarked': True} + else: + await current_bookmark.delete() + return {'bookmarked': False} - with open(tmp_file, 'wt') as f: - writer = csv.writer(f) - writer.writerow(['Event', 'Speakers', 'Date', 'Bookmarks', 'Rating']) - for day in serialized['conference']['idx']['ordered_sessions_by_days']: - for id_session in serialized['conference']['idx']['ordered_sessions_by_days'][day]: - session = serialized['conference']['db']['sessions'][id_session] +def now(): + return datetime.datetime.now() - writer.writerow([session['title'], - ', '.join([serialized['conference']['db']['lecturers'][id_lecturer]['display_name'] for id_lecturer in session['id_lecturers']]), - session['date'], - bookmark_per_event[str(id_session)] if id_session in bookmark_per_event else 0, - rate_per_event[str(id_session)] if str(id_session) in rate_per_event else '' - # random.randint(0, 100), - # round(random.randint(0, 500) / 100, 2) - ]) - return tmp_file +async def rate_session(id_user, id_session, rate): + if rate < 1 or rate > 5: + raise HTTPException(status_code=status.HTTP_406_NOT_ACCEPTABLE, + detail={"code": "RATE_NOT_VALID", "message": "rate not valid, use number between 1 and 5"}) + user = await models.UserAnonymous.filter(id=id_user).get_or_none() + if not user: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, + detail={"code": "USER_NOT_FOUND", "message": "user not found"}) + + session = await models.EventSession.filter(id=id_session).get_or_none() + if not session: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, + detail={"code": "SESSION_NOT_FOUND", "message": "session not found"}) -async def add_flow(conference: models.Conference | None, pretix_order: models.PretixOrder | None, text: str | None, data: dict | None = None): - if not text and not data: + if not session.rateable: raise HTTPException(status_code=status.HTTP_406_NOT_ACCEPTABLE, - detail="TEXT_OR_DATA_MUST_BE_SET") + detail={"code": "SESSION_IS_NOT_RATEABLE", "message": "session is not rateable"}) - if not conference and pretix_order: - conference = pretix_order.conference + session_start_datetime_str = f'{session.start_date}' - flow_id = uuid.uuid4() - await models.Flow.create(id=flow_id, - conference=conference, - pretix_order=pretix_order, - text=text, - data=data) + s_now = str(now()) + if str(now())[:19] <= session_start_datetime_str[:19]: + raise HTTPException(status_code=status.HTTP_406_NOT_ACCEPTABLE, + detail={"code": "CAN_NOT_RATE_SESSION_IN_FUTURE", + "message": "Rating is only possible after the talk has started."}) - return {'id': flow_id} + try: + current_rate = await models.AnonymousRate.filter(user=user, session=session).get_or_none() + except Exception as e: + raise + if not current_rate: + await models.AnonymousRate.create(user=user, session=session, rate=rate) + else: + if current_rate.rate != rate: + await current_rate.update_from_dict({'rate': rate}) + await current_rate.save() -async def get_flows(conference: models.Conference, page: int, per_page: int, search: str): - offset = (page - 1) * per_page + all_rates = await models.AnonymousRate.filter(session=session).all() + avg_rate = sum([rate.rate for rate in all_rates]) / len(all_rates) if all_rates else 0 - query = models.Flow.filter(conference=conference).filter(text__icontains=search) + return {'avg_rate': avg_rate, + 'total_rates': len(all_rates), + } - flows = await query.order_by('-created_at').offset(offset).limit(per_page).all() - count = await query.count() - summary = { - 'page': page, - 'per_page': per_page, - 'total_count': count, - 'total_pages': count // per_page + 1 if count % per_page else count // per_page, - 'previous_page': page - 1 if page > 1 else None, - 'next_page': page + 1 if page * per_page < count else None, - } +async def do_import_xml(request): + content = await fetch_xml_content(request.use_local_xml, request.local_xml_fname) + XML_URL = os.getenv("XML_URL", None) - return {'summary': summary, 'items': [flow.serialize() for flow in flows], - 'columns': [ - 'created', - 'pretix_order', - 'text', - ]} + try: + res = await add_conference(content, XML_URL, force=True, + group_notifications_by_user=request.group_notifications_by_user) + except Exception as e: + raise + conference = res['conference'] + return ConferenceImportRequestResponse(id=str(conference.id), created=res['created'], changes=res['changes']) -async def get_dashboard(acronym: str): - conference = await get_conference_by_acronym(acronym=acronym) - organizations = set() - for pretix_order in await models.PretixOrder.filter(conference=conference).all(): - if pretix_order.organization: - org = pretix_order.organization.strip().lower() - organizations.add(org) +async def opencon_serialize_static(conference): + return await opencon_serialize_anonymous(None, conference) - registered_users = 'N/A' - async with httpx.AsyncClient() as client: - try: - PRETIX_ORGANIZER_ID = os.getenv('PRETIX_ORGANIZER_ID', None) - PRETIX_EVENT_ID = os.getenv('PRETIX_EVENT_ID', None) - PRETIX_CHECKLIST_ID = os.getenv('PRETIX_CHECKLIST_ID', None) - PRETIX_TOKEN = os.getenv('PRETIX_TOKEN', None) - url = f'https://pretix.eu/api/v1/organizers/{PRETIX_ORGANIZER_ID}/events/{PRETIX_EVENT_ID}/checkinlists/{PRETIX_CHECKLIST_ID}/status/' +async def opencon_serialize_anonymous(user_id, conference, last_updated=None): + next_try_in_ms = 3000000 + db_last_updated = str(tortoise.timezone.make_naive(conference.last_updated)) - log.debug('Creating get request to ' + url) + conference_avg_rating = {'rates_by_session': {}, + 'my_rate_by_session': {} + } + for session in conference.event_sessions: + if session.anonymous_rates: + all_rates_for_session = [r.rate for r in session.anonymous_rates] + if all_rates_for_session: + conference_avg_rating['rates_by_session'][str(session.id)] = [ + sum(all_rates_for_session) / len(all_rates_for_session), + len(all_rates_for_session)] # [session.anonymous_rates.avg_stars, + # session.anonymous_rates.nr_votes] + + if user_id: + user = await models.UserAnonymous.filter(id=user_id).prefetch_related('bookmarks', 'rates').get_or_none() + bookmarks = [bookmark.session_id for bookmark in user.bookmarks] + conference_avg_rating['my_rate_by_session'] = {str(rate.session_id): rate.rate for rate in user.rates} + else: + bookmarks = [] + + if last_updated and last_updated >= db_last_updated: + return {'last_updated': db_last_updated, + 'ratings': conference_avg_rating, + 'bookmarks': bookmarks, + 'next_try_in_ms': next_try_in_ms, + 'conference': None + } - res = await client.get(url, headers={'Authorization': f'Token {PRETIX_TOKEN}'}) - jres = res.json() + db = {} + idx = {} - registered_users = jres['items'][0]['position_count'] + jres['items'][1]['position_count'] - attendees = jres['items'][0]['checkin_count'] + jres['items'][1]['checkin_count'] + with open(current_file_dir + '/../../tests/assets/sfs2024streaming.yaml', 'r') as f: + streaming_links = yaml.load(f, yaml.Loader) - except Exception as e: - log.critical(f'Error getting info from pretix') + idx['ordered_sponsors'] = [] - from tortoise.queryset import Q + db['tracks'] = {str(track.id): track.serialize() for track in conference.tracks} + db['locations'] = {str(location.id): location.serialize() for location in conference.locations} + db['rooms'] = {str(room.id): room.serialize() for room in conference.rooms} + db['sessions'] = {str(session.id): session.serialize(streaming_links) for session in conference.event_sessions} + db['lecturers'] = {str(lecturer.id): lecturer.serialize() for lecturer in conference.lecturers} + db['sponsors'] = {} - flt = Q(Q(conference=conference), Q(Q(registered_in_open_con_app=True), Q(registered_from_device_type__isnull=False), join_type='OR'), join_type='AND') + days = set() + for s in db['sessions'].values(): + days.add(s['date']) - return [ - {'name': 'Registered users', 'value': registered_users}, - {'name': 'Attendees', 'value': attendees}, - {'name': 'SFSCON app users', 'value': await models.PretixOrder.filter(flt).count()}, - {'name': 'Organisations', 'value': len(organizations)}, - {'name': 'Total bookmarks', 'value': await models.Bookmark.filter(event_session__conference=conference).prefetch_related('event_session').count()}, - {'name': 'Ratings received', 'value': await models.Star.filter(event_session__conference=conference).prefetch_related('event_session').count()} - ] + idx['ordered_lecturers_by_display_name'] = [l['id'] for l in + sorted(db['lecturers'].values(), key=lambda x: x['display_name'])] + idx['ordered_sessions_by_days'] = {d: [s['id'] for s in db['sessions'].values() if s['date'] == d] for d in + sorted(list(days))} + idx['ordered_sessions_by_tracks'] = {t: [s['id'] for s in db['sessions'].values() if s['id_track'] == t] for t in + db['tracks'].keys()} + idx['days'] = sorted(list(days)) + + with open(current_file_dir + '/../../tests/assets/sfscon2024sponsors.yaml', 'r') as f: + db['sponsors'] = yaml.load(f, yaml.Loader) + + re_ordered_lecturers = {} + for l in idx['ordered_lecturers_by_display_name']: + re_ordered_lecturers[l] = db['lecturers'][l] + + db['lecturers'] = re_ordered_lecturers + + return {'last_updated': db_last_updated, + 'ratings': conference_avg_rating, + 'next_try_in_ms': next_try_in_ms, + 'bookmarks': bookmarks, + 'conference': {'acronym': str(conference.acronym), + 'db': db, + 'idx': idx + } + } diff --git a/src/conferences/controller/controller.py b/src/conferences/controller/controller.py deleted file mode 100644 index 8ff2b3f..0000000 --- a/src/conferences/controller/controller.py +++ /dev/null @@ -1,76 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -import os -import jwt -import json -import logging - -import shared.ex as ex -import conferences.models as models - -log = logging.getLogger('conference_logger') -current_file_dir = os.path.dirname(os.path.abspath(__file__)) - -rlog = logging.getLogger('redis_logger') - - -async def get_conference_attendees(conference_acronym: str, page: int = 1, per_page: int = 7, search: str = ''): - # if not hasattr('get_conference_attendees', 'fake_attendees'): - # - # with open(current_file_dir+'/../../tests/assets/fake_attendees.json', 'rt') as f: - # all_fake_attendees = json.loads(f.read()) - # - # fake_attendees = [] - # if not search: - # fake_attendees = all_fake_attendees - # - # else: - # for attendee in all_fake_attendees: - # if search.lower() in attendee['first_name'].lower() or search.lower() in attendee['last_name'].lower() or search.lower() in attendee['organization'].lower() or search.lower() in \ - # attendee['email'].lower() or search.lower() in attendee['pretix_order'].lower(): - # fake_attendees.append(attendee) - # - - conference = await models.Conference.filter(acronym=conference_acronym).get_or_none() - - attendees = [a.serialize() for a in await models.PretixOrder.filter(conference=conference, nr_printed_labels__gt=0).order_by('first_name').all()] - - total_pages = len(attendees) / per_page - if len(attendees) // per_page != len(attendees) / per_page: - total_pages += 1 - - total_pages = int(total_pages) - - prev_page = page - 1 if page > 1 else None - next_page = page + 1 if page < total_pages else None - - summary = { - "total_items": len(attendees), - "total_pages": total_pages, - "page": page, - "per_page": per_page, - "previous_page": prev_page, - "next_page": next_page, - } - - offset = (page - 1) * per_page - - return {'header': [ - {'name': 'First Name', 'key': 'first_name', 'width': '100px'}, - {'name': 'Last Name', 'key': 'last_name', 'width': '100px'}, - {'name': 'Organization', 'key': 'organization', 'width': '100px'}, - {'name': 'Email', 'key': 'email', 'width': '100px'}, - {'name': 'Pretix Order', 'key': 'pretix_order', 'width': '100px'}, - {'name': 'Has SFSCON app', 'key': 'has_app', 'width': '100px'}, - ], - 'summary': summary, - - 'data': attendees[offset:offset + per_page]} - - -def decode_token(token): - JWT_SECRET_KEY = os.getenv('JWT_SECRET_KEY', 'secret') - - decoded_payload = jwt.decode(token, JWT_SECRET_KEY, algorithms=['HS256']) - return decoded_payload diff --git a/src/conferences/controller/notifications.py b/src/conferences/controller/notifications.py deleted file mode 100644 index fb7ad8f..0000000 --- a/src/conferences/controller/notifications.py +++ /dev/null @@ -1,157 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -import os -import json -import redis -import logging -import datetime - -import tortoise.timezone - -import shared.ex as ex -from .conference import add_flow -import conferences.models as models - -log = logging.getLogger('conference_logger') -current_file_dir = os.path.dirname(os.path.abspath(__file__)) - -rlog = logging.getLogger('redis_logger') - - -def sec2minutes(seconds): - mm = seconds // 60 - ss = seconds % 60 - return f'{mm}:{ss:02}' - - -async def extract_all_session_event_which_starts_in_next_5_minutes(conference, now=None): - if not now: - now = tortoise.timezone.now() - now = now + datetime.timedelta(hours=1) - else: - if tortoise.timezone.is_naive(now): - now = tortoise.timezone.make_aware(now) - - q = models.EventSession.filter(conference=conference, - start_date__gte=now, - start_date__lte=now + datetime.timedelta(minutes=5)) - print(q.sql()) - - sessions = await models.EventSession.filter(conference=conference, - start_date__gte=now, - start_date__lte=now + datetime.timedelta(minutes=5)).all() - - to_notify_by_session_emails = {} - to_notify_by_session = {} - if sessions: - for session in sessions: - bookmarkers_to_notify = await models.Bookmark.filter(event_session=session, - pretix_order__push_notification_token__isnull=False).prefetch_related('pretix_order').all() - - to_notify_by_session[str(session.id)] = [str(bookmark.pretix_order.id) for bookmark in bookmarkers_to_notify] - to_notify_by_session_emails[session.title] = {'start_at': str(session.start_date), - 'start_in': sec2minutes((session.start_date - now).seconds) + ' minutes', - 'to_notify': [bookmark.pretix_order.email for bookmark in bookmarkers_to_notify]} - - return {'ids': to_notify_by_session, - 'human_readable': to_notify_by_session_emails, - 'now': str(now) - } - - -async def send_notifications_5_minute_before_start(conference: models.Conference, now_time: datetime.datetime = None, test_only: bool = False): - # let see what we have 9 hours before start - res = await extract_all_session_event_which_starts_in_next_5_minutes(conference, now=now_time) - now_time = res['now'] - return await enqueue_5minute_before_notifications(conference, res['ids'], test_only=test_only, now=now_time) - - -async def enqueue_notification(pretix_order: models.PretixOrder, subject: str, message: str): - # pretix_order = await models.PretixOrder.filter(id_pretix_order=id_pretix_order).get_or_none() - # if not pretix_order: - # raise ex.AppException('PRETIX_ORDER_NOT_FOUND', id_pretix_order) - - if not pretix_order.push_notification_token: - raise ex.AppException('PUSH_NOTIFICATION_TOKEN_NOT_SET', pretix_order.id) - - with redis.Redis(host=os.getenv('REDIS_SERVER'), port=6379, db=0) as r: - push_notification_token = models.PushNotificationQueue( - pretix_order=pretix_order, - subject=subject, - message=message, - ) - await push_notification_token.save() - - # !!! Synchronous call - ignore pycharm warning about coroutine, redis is not aioredis - r.rpush('opencon_push_notification', json.dumps({'id': str(push_notification_token.id), - 'expo_push_notification_token': pretix_order.push_notification_token, - 'subject': subject, - 'message': message - })) - - -async def enqueue_5minute_before_notifications(conference, event_id_2_user_ids, test_only=False, now=None): - log.info(f"enqueue_5minute_before_notifications: {conference.acronym}") - - eids = list(event_id_2_user_ids.keys()) - if not eids: - log.info('No events to enqueue notifications for 5 minute before start') - return {'enqueued_messages': 0, 'test_only': test_only, 'now': str(now)} - - events = [e for e in await models.EventSession.filter(id__in=eids, notification5min_sent__isnull=True).prefetch_related('room').all()] - - if not events: - log.info('No events that are not already notified to enqueue notifications for 5 minute before start') - return {'enqueued_messages': 0, 'test_only': test_only, 'now': str(now)} - - log.info(f'Found {len(events)} events to enqueue notifications for 5 minute before start') - - users2notify = set() - for event in events: - for user_id in event_id_2_user_ids[str(event.id)]: - users2notify.add(user_id) - - log.info(f'Found {len(users2notify)} users to enqueue notifications for 5 minute before start') - - users2notify = {str(u.id): u for u in await models.PretixOrder.filter(id__in=users2notify).all()} - - if not users2notify: - log.info(f'nno users to be notieied for 5 minute before start') - return {'enqueued_messages': 0, 'test_only': test_only, 'now': str(now)} - - notified = 0 - _log = [] - rlog_1_msg = [] - for event in events: - user_ids = event_id_2_user_ids[str(event.id)] - for user_id in user_ids: - user = users2notify[str(user_id)] - if user.push_notification_token: - text = f'{event.title} begins at {event.start_date.time().strftime("%H:%M")} at {event.room.name}' - _log.append(str(users2notify[user_id])+': '+text) - log.info(f'sending notification {text} to {user.email}') - rlog_1_msg.append(f'sending notification: {text} to {user.email}') - - - if not test_only: - await add_flow(conference, user, text) - await enqueue_notification(user, 'The event will start shortly', text) - - notified += 1 - - if not test_only: - event.notification5min_sent = True - await event.save() - - rlog.info('\n'.join(rlog_1_msg)) - - if test_only: - return {'enqueued_messages': notified, - 'log': _log, - 'test_only': test_only, - 'now': str(now) - } - - log.info(f'notified {notified} users') - return {'enqueued_messages': notified, 'test_only': test_only, 'now': str(now)} diff --git a/src/conferences/controller/pretix.py b/src/conferences/controller/pretix.py deleted file mode 100644 index 5834b40..0000000 --- a/src/conferences/controller/pretix.py +++ /dev/null @@ -1,131 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -import os -import jwt -import httpx -import logging -import datetime - -import shared.ex as ex -import conferences.models as models - -log = logging.getLogger('conference_logger') -current_file_dir = os.path.dirname(os.path.abspath(__file__)) - -rlog = logging.getLogger('redis_logger') - - -async def fetch_pretix_order(conference, pretix_order_id): - return await models.PretixOrder.filter(conference=conference, id_pretix_order=pretix_order_id).get_or_none() - - -def generate_token(pretix_order): - JWT_SECRET_KEY = os.getenv('JWT_SECRET_KEY', 'secret') - - payload = { - 'pretix_order_id': pretix_order.id_pretix_order, - 'pretix_order_secret': pretix_order.secret, - 'iat': datetime.datetime.utcnow(), - 'exp': datetime.datetime.utcnow() + datetime.timedelta(days=31), - } - encoded_jwt = jwt.encode(payload, JWT_SECRET_KEY, algorithm='HS256') - - return encoded_jwt - - -async def fetch_order_from_prefix(conference, pretix_order_id): - PRETIX_TOKEN = os.getenv('PRETIX_TOKEN') - PRETIX_CHECKLIST_ID = os.getenv('PRETIX_CHECKLIST_ID') - PRETIX_EVENT_ID = os.getenv('PRETIX_EVENT_ID') - PRETIX_ORGANIZER_ID = os.getenv('PRETIX_ORGANIZER_ID') - - async with httpx.AsyncClient() as client: - try: - res = await client.get( - f'https://pretix.eu/api/v1/organizers/{PRETIX_ORGANIZER_ID}/events/{PRETIX_EVENT_ID}/checkinlists/{PRETIX_CHECKLIST_ID}/positions/?order={pretix_order_id}', - headers={'Authorization': f'Token {PRETIX_TOKEN}'}) - - if res.status_code != 200: - raise ex.AppException('PRETIX_ERROR', f'Pretix API returned {res.status_code}') - - pretix_data = res.json() - - except Exception as e: - log.critical(f'Failed to fetch order from pretix: {e}') - raise - - return pretix_data - - -async def register_pretix_order(conference, order_code, push_notification_token: str = None, registered_in_open_con_app: bool = None, device=None): - order_code = order_code.strip().upper() - - pretix_order = await models.PretixOrder.filter(conference=conference, id_pretix_order=order_code).get_or_none() - - if pretix_order: - if pretix_order.push_notification_token != push_notification_token: - pretix_order.push_notification_token = push_notification_token - await pretix_order.save() - - if pretix_order.registered_in_open_con_app != registered_in_open_con_app: - pretix_order.registered_in_open_con_app = registered_in_open_con_app - await pretix_order.save() - - if pretix_order.registered_from_device_type != device: - pretix_order.registered_from_device_type = device - await pretix_order.save() - - return {'id': str(pretix_order.id), 'token': generate_token(pretix_order), 'created': False} - - pretix_data = await fetch_order_from_prefix(conference, order_code) - - if len(pretix_data['results']) == 0: - raise ex.AppException(id_message='PRETIX_ORDER_NOT_FOUND', message='Order not found') - - first_name = pretix_data['results'][0]['attendee_name_parts']['given_name'] - last_name = pretix_data['results'][0]['attendee_name_parts']['family_name'] - organization = pretix_data['results'][0]['company'] - - email = pretix_data['results'][0]['attendee_email'] - secret = pretix_data['results'][0]['secret'] - - secret_per_sub_event = {} - for p in pretix_data['results']: - secret_per_sub_event[p['subevent']] = p['secret'] - - pretix_order = await models.PretixOrder.create(conference=conference, id_pretix_order=order_code, first_name=first_name, - last_name=last_name, organization=organization, email=email, secret=secret, - push_notification_token=push_notification_token, - secret_per_sub_event=secret_per_sub_event, - registered_from_device_type=device - ) - - await pretix_order.save() - - logger = logging.getLogger('redis_logger') - logger.info(f'User registered: {pretix_order.email}') - - return {'id': str(pretix_order.id), 'token': generate_token(pretix_order), 'created': True} - - -async def pretix_qrcode_scanned(id_conference, secret, id_lane, - pretix_order_code, - # pretix_attendee_email, - # pretix_attendee_first_name, - # pretix_attendee_last_name, - # pretix_company, - ): - conference = await models.Conference.filter(id=id_conference).get_or_none() - if not conference: - raise ex.AppException(id_message='CONFERENCE_NOT_FOUND', message='Conference not found') - - pretix_order = await fetch_pretix_order(conference, pretix_order_code) - if not pretix_order: - pretix_order = await register_pretix_order(conference, pretix_order_code, registered_in_open_con_app=False) - pretix_order = await models.PretixOrder.filter(id=pretix_order['id']).get_or_none() - - try: - rlog.info(f'User scanned: {pretix_order.first_name} {pretix_order.last_name} <{pretix_order.email}> | registered_in_app: {pretix_order.registered_in_open_con_app}') - except Exception as e: - raise diff --git a/src/conferences/controller/ratings.py b/src/conferences/controller/ratings.py deleted file mode 100644 index d3da558..0000000 --- a/src/conferences/controller/ratings.py +++ /dev/null @@ -1,104 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -import os -import jwt -import uuid -import json -import redis -import logging - -import shared.ex as ex -import conferences.models as models -from .conference import add_flow - -log = logging.getLogger('conference_logger') -current_file_dir = os.path.dirname(os.path.abspath(__file__)) - -rlog = logging.getLogger('redis_logger') - - -async def update_starred_session(event_session_id: uuid.UUID, my_rate: int): - try: - try: - event_session = await models.EventSession.filter(id=event_session_id).prefetch_related('starred_session').get_or_none() - except Exception as e: - log.critical(f'Failed to fetch event session: {e}') - raise - if not event_session: - raise ex.AppException(id_message='EVENT_SESSION_NOT_FOUND', message='Event session not found') - - starred_session = event_session.starred_session - starred_session.nr_votes = await models.Star.filter(event_session=event_session).count() - - c = 0 - for s in await models.Star.filter(event_session=event_session).all(): - c += s.stars - - starred_session.total_stars = c - starred_session.avg_stars = event_session.starred_session.total_stars / event_session.starred_session.nr_votes \ - if starred_session.nr_votes else 0 - - await starred_session.save() - - # {'avg': round(avg, 2), 'nr': nr, 'my_rate': my} - - return {'avg': round(event_session.starred_session.avg_stars, 2), 'nr': event_session.starred_session.nr_votes, 'my_rate': my_rate} - - # return {'total_stars': event_session.starred_session.total_stars, - # 'nr_votes': event_session.starred_session.nr_votes, - # 'avg_stars': event_session.starred_session.avg_stars} - - except Exception as e: - log.critical(f'Failed to update starred session: {e}') - raise - - -async def get_stars(pretix_order_id: str, event_session_id: uuid.UUID): - pretix_order = await models.PretixOrder.filter(id_pretix_order=pretix_order_id).get_or_none() - if not pretix_order: - raise ex.AppException(id_message='PRETIX_ORDER_NOT_FOUND', message='Order not found') - - event_session = await models.EventSession.filter(id=event_session_id).prefetch_related('starred_session').get_or_none() - - if not event_session: - raise ex.AppException(id_message='EVENT_SESSION_NOT_FOUND', message='Event session not found') - - star = await models.Star.filter(pretix_order=pretix_order, event_session=event_session).get_or_none() - - return {'avg': round(float(event_session.starred_session.avg_stars), 2), 'nr': event_session.starred_session.nr_votes, 'my_rate': star.stars if star else 0} - - -async def add_stars(pretix_order_id: str, event_session_id: uuid.UUID, stars: int): - try: - - pretix_order = await models.PretixOrder.filter(id_pretix_order=pretix_order_id).prefetch_related('conference').get_or_none() - - if not pretix_order: - raise ex.AppException(id_message='PRETIX_ORDER_NOT_FOUND', message='Order not found') - - event_session = await models.EventSession.filter(id=event_session_id).get_or_none() - if not event_session: - raise ex.AppException(id_message='EVENT_SESSION_NOT_FOUND', message='Event session not found') - - star = await models.Star.filter(pretix_order=pretix_order, event_session=event_session).get_or_none() - if not star: - star = await models.Star.create(pretix_order=pretix_order, event_session=event_session, stars=stars) - else: - if star.stars != stars: - star.stars = stars - await star.save() - await event_session.save() - - log.info(f'Added {stars} stars to {event_session_id} by {pretix_order.email}') - res = await update_starred_session(event_session_id, star.stars) - - rlog.info(f'User {pretix_order.email} Added {stars} stars to {event_session.title} Average is {res["avg"]} for {res["nr"]} votes') - - await add_flow(pretix_order.conference, pretix_order, f'User {pretix_order.email} Added {stars} stars to {event_session.title} Average is {res["avg"]} for {res["nr"]} votes') - - return res - - except Exception as e: - log.critical(f'Failed to add stars: {e}') - raise diff --git a/src/conferences/models/conferences.py b/src/conferences/models/conferences.py index c461b9b..8a8babe 100644 --- a/src/conferences/models/conferences.py +++ b/src/conferences/models/conferences.py @@ -1,11 +1,43 @@ # SPDX-License-Identifier: GPL-3.0-or-later # SPDX-FileCopyrightText: 2023 Digital CUBE -import bs4 - +from enum import Enum from typing import Dict -from tortoise.models import Model + +import bs4 from tortoise import fields +from tortoise.models import Model + + +class UserAnonymous(Model): + class Meta: + table = "conferences_users_anonymous" + + id = fields.UUIDField(pk=True) + created = fields.DatetimeField(auto_now_add=True) + push_notification_token = fields.CharField(max_length=64, null=True) + + +class AnonymousBookmark(Model): + class Meta: + table = "conferences_anonymous_bookmarks" + unique_together = (('user', 'session'),) + + id = fields.UUIDField(pk=True) + user = fields.ForeignKeyField('models.UserAnonymous', related_name='bookmarks') + session = fields.ForeignKeyField('models.EventSession', related_name='anonymous_bookmarks') + + +class AnonymousRate(Model): + class Meta: + table = "conferences_anonymous_rates" + unique_together = (('user', 'session'),) + + id = fields.UUIDField(pk=True) + user = fields.ForeignKeyField('models.UserAnonymous', related_name='rates') + session = fields.ForeignKeyField('models.EventSession', related_name='anonymous_rates') + + rate = fields.IntField() class Conference(Model): @@ -97,6 +129,8 @@ class Meta: abstract = fields.TextField(null=True) description = fields.TextField(null=True) + url = fields.TextField(null=True) + bookmarkable = fields.BooleanField(default=True) rateable = fields.BooleanField(default=True) @@ -116,15 +150,23 @@ class Meta: def serialize(self, streaming_links: Dict[str, str] = None): # import tortoise.timezone + try: + day = '2' if self.start_date.strftime("%Y-%m-%d") == '2024-11-09' else '1' + + streaming_link = streaming_links[f'{day}-{self.track.name}'] \ + if streaming_links and self.track and f'{day}-{self.track.name}' in streaming_links else None + except Exception as e: + streaming_link = None + return { 'id': str(self.id), 'unique_id': self.unique_id, - 'share_link': "https://sfscon.it", + 'share_link': self.url, "date": self.start_date.strftime("%Y-%m-%d"), "start": self.start_date.strftime("%Y-%m-%d %H:%M:%S"), "duration": self.duration, "title": self.title, - "abstract": None, + "abstract": self.abstract, "description": self.description, "bookmarkable": self.bookmarkable, "can_share": True, @@ -134,7 +176,7 @@ def serialize(self, streaming_links: Dict[str, str] = None): "id_room": str(self.room_id), "id_location": "TODO", "id_lecturers": [str(l.id) for l in self.lecturers], - "stream_link": streaming_links[self.track.name] if streaming_links and self.track and self.track.name in streaming_links else None + "stream_link": streaming_link } @@ -186,95 +228,9 @@ def serialize(self): "sessions": [str(s.id) for s in self.event_sessions] if self.event_sessions else []} -class PretixOrder(Model): - class Meta: - table = "conferences_pretix_orders" - unique_together = (('id_pretix_order', 'conference'),) - - id = fields.UUIDField(pk=True) - conference = fields.ForeignKeyField('models.Conference') - id_pretix_order = fields.CharField(max_length=32, index=True) - - first_name = fields.CharField(max_length=255, null=True, index=True) - last_name = fields.CharField(max_length=255, null=True, index=True) - organization = fields.CharField(max_length=255, null=True, index=True) - email = fields.CharField(max_length=255, null=True, index=True) - secret = fields.TextField() - secret_per_sub_event = fields.JSONField(null=True) - - push_notification_token = fields.CharField(max_length=64, null=True) - - registered_in_open_con_app = fields.BooleanField(default=None, null=True) - - registered_from_device_type = fields.CharField(max_length=32, null=True, index=True) - - nr_printed_labels = fields.IntField(default=0) - - created = fields.DatetimeField(auto_now_add=True, null=True) - - def __str__(self): - return f"{self.first_name} {self.last_name} <{self.email}> ({self.organization})" - - def serialize(self): - return {'first_name': self.first_name, - 'last_name': self.last_name, - 'organization': self.organization, - 'email': self.email, - 'pretix_order': self.id_pretix_order, - 'has_app': self.registered_in_open_con_app or self.registered_from_device_type is not None} - - -class Bookmark(Model): - class Meta: - table = "conferences_bookmarks" - unique_together = (('pretix_order', 'event_session'),) - - id = fields.UUIDField(pk=True) - pretix_order = fields.ForeignKeyField('models.PretixOrder') - event_session = fields.ForeignKeyField('models.EventSession', related_name='bookmarks') - created = fields.DatetimeField(auto_now_add=True) - - -class StarredSession(Model): - class Meta: - table = "conferences_starred_sessions" - - id = fields.UUIDField(pk=True) - event_session = fields.OneToOneField('models.EventSession', related_name='starred_session', index=True) - - nr_votes = fields.IntField() - total_stars = fields.IntField() - avg_stars = fields.DecimalField(max_digits=3, decimal_places=2) - - -class Star(Model): - class Meta: - table = "conferences_stars" - unique_together = (('pretix_order', 'event_session'),) - - id = fields.UUIDField(pk=True) - pretix_order = fields.ForeignKeyField('models.PretixOrder') - event_session = fields.ForeignKeyField('models.EventSession') - created = fields.DatetimeField(auto_now_add=True) - stars = fields.IntField() - - -class PushNotificationQueue(Model): - class Meta: - table = "conferences_push_notification_queue" - - id = fields.UUIDField(pk=True) - created = fields.DatetimeField(auto_now_add=True) - sent = fields.DatetimeField(null=True) - - attempt = fields.IntField(default=0) - last_response = fields.TextField(null=True) - - pretix_order = fields.ForeignKeyField('models.PretixOrder') - - subject = fields.TextField() - message = fields.TextField() - +class SortOrder(str, Enum): + ASCENDING = "ascend" + DESCENDING = "descend" class Entrance(Model): class Meta: @@ -283,42 +239,3 @@ class Meta: id = fields.UUIDField(pk=True) name = fields.TextField() conference = fields.ForeignKeyField('models.Conference') - - -class PretixQRScan(Model): - class Meta: - table = "conferences_pretix_qr_scans" - - id = fields.UUIDField(pk=True) - created = fields.DatetimeField(auto_now_add=True) - - pretix_secret = fields.TextField() - pretix_order = fields.ForeignKeyField('models.PretixOrder', null=True) - - label_print_confirmed = fields.BooleanField(default=False) - label_printed = fields.DatetimeField(default=None, null=True) - - -class Flow(Model): - class Meta: - table = "conferences_flows" - - id = fields.UUIDField(pk=True) - conference = fields.ForeignKeyField('models.Conference', null=True, index=True) - - created = fields.DatetimeField(auto_now_add=True) - - pretix_order = fields.ForeignKeyField('models.PretixOrder', null=True, index=True) - - text = fields.TextField(null=True) - data = fields.JSONField(null=True) - - def serialize(self): - return { - # 'id': str(self.id), - # 'conference': str(self.conference_id) if self.conference else None, - 'created': self.created, - 'pretix_order': str(self.pretix_order_id) if self.pretix_order else None, - 'text': self.text, - # 'data': self.data - } diff --git a/src/db_config.py b/src/db_config.py index bb46833..0a2df08 100644 --- a/src/db_config.py +++ b/src/db_config.py @@ -27,4 +27,5 @@ } import pprint -pprint.pprint(DB_CONFIG) \ No newline at end of file + +pprint.pprint(DB_CONFIG) diff --git a/src/main.py b/src/main.py index 9f63ae4..c8a9cbb 100644 --- a/src/main.py +++ b/src/main.py @@ -1,11 +1,13 @@ # SPDX-License-Identifier: GPL-3.0-or-later # SPDX-FileCopyrightText: 2023 Digital CUBE -import dotenv import importlib -from shared.setup_logger import setup_redis_logger, setup_file_logger +import logging + +import dotenv from app import get_app +from shared.setup_logger import setup_file_logger, setup_redis_logger app = get_app() @@ -15,7 +17,7 @@ def import_modules(svcs): for svc in svcs: svc_name = svc.split('.')[0] - setup_file_logger(svc_name) +# setup_file_logger(svc_name) importlib.reload(importlib.import_module(svc)) @@ -24,5 +26,7 @@ def import_modules(svcs): if __name__ == "__main__": import uvicorn - - uvicorn.run(get_app(), host="localhost", port=8000) + setup_file_logger('conference') + log = logging.getLogger('conference_logger') + log.info("STARTING") + uvicorn.run(get_app(), host="0.0.0.0", port=8000) diff --git a/src/migrations/models/0_20231105181722_init.py b/src/migrations/models/0_20231105181722_init.py deleted file mode 100644 index eeced40..0000000 --- a/src/migrations/models/0_20231105181722_init.py +++ /dev/null @@ -1,146 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -from tortoise import BaseDBAsyncClient - - -async def upgrade(db: BaseDBAsyncClient) -> str: - return """ - CREATE TABLE IF NOT EXISTS "conferences" ( - "id" UUID NOT NULL PRIMARY KEY, - "name" TEXT NOT NULL, - "acronym" TEXT, - "created" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, - "last_updated" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, - "source_uri" TEXT -); -CREATE TABLE IF NOT EXISTS "conferences_lecturers" ( - "id" UUID NOT NULL PRIMARY KEY, - "slug" VARCHAR(255) NOT NULL, - "external_id" VARCHAR(255) NOT NULL, - "display_name" TEXT NOT NULL, - "first_name" TEXT NOT NULL, - "last_name" TEXT NOT NULL, - "email" TEXT, - "thumbnail_url" TEXT, - "bio" TEXT, - "organization" TEXT, - "social_networks" JSONB, - "conference_id" UUID NOT NULL REFERENCES "conferences" ("id") ON DELETE CASCADE -); -CREATE INDEX IF NOT EXISTS "idx_conferences_slug_4860af" ON "conferences_lecturers" ("slug"); -CREATE INDEX IF NOT EXISTS "idx_conferences_externa_b43bc9" ON "conferences_lecturers" ("external_id"); -CREATE TABLE IF NOT EXISTS "conferences_entrances" ( - "id" UUID NOT NULL PRIMARY KEY, - "name" TEXT NOT NULL, - "conference_id" UUID NOT NULL REFERENCES "conferences" ("id") ON DELETE CASCADE -); -CREATE TABLE IF NOT EXISTS "conferences_locations" ( - "id" UUID NOT NULL PRIMARY KEY, - "name" TEXT NOT NULL, - "slug" TEXT NOT NULL, - "conference_id" UUID NOT NULL REFERENCES "conferences" ("id") ON DELETE CASCADE -); -CREATE TABLE IF NOT EXISTS "conferences_pretix_orders" ( - "id" UUID NOT NULL PRIMARY KEY, - "id_pretix_order" VARCHAR(32) NOT NULL, - "first_name" TEXT NOT NULL, - "last_name" TEXT, - "organization" TEXT, - "email" TEXT, - "secret" TEXT NOT NULL, - "secret_per_sub_event" JSONB, - "push_notification_token" VARCHAR(64), - "registered_in_open_con_app" BOOL, - "registered_from_device_type" VARCHAR(32), - "nr_printed_labels" INT NOT NULL DEFAULT 0, - "conference_id" UUID NOT NULL REFERENCES "conferences" ("id") ON DELETE CASCADE, - CONSTRAINT "uid_conferences_id_pret_f96b97" UNIQUE ("id_pretix_order", "conference_id") -); -CREATE INDEX IF NOT EXISTS "idx_conferences_id_pret_9ce4b0" ON "conferences_pretix_orders" ("id_pretix_order"); -CREATE INDEX IF NOT EXISTS "idx_conferences_registe_7734f1" ON "conferences_pretix_orders" ("registered_from_device_type"); -CREATE TABLE IF NOT EXISTS "conferences_pretix_qr_scans" ( - "id" UUID NOT NULL PRIMARY KEY, - "created" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, - "pretix_secret" TEXT NOT NULL, - "label_print_confirmed" BOOL NOT NULL DEFAULT False, - "label_printed" TIMESTAMPTZ, - "pretix_order_id" UUID REFERENCES "conferences_pretix_orders" ("id") ON DELETE CASCADE -); -CREATE TABLE IF NOT EXISTS "conferences_push_notification_queue" ( - "id" UUID NOT NULL PRIMARY KEY, - "created" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, - "sent" TIMESTAMPTZ, - "attempt" INT NOT NULL DEFAULT 0, - "last_response" TEXT, - "subject" TEXT NOT NULL, - "message" TEXT NOT NULL, - "pretix_order_id" UUID NOT NULL REFERENCES "conferences_pretix_orders" ("id") ON DELETE CASCADE -); -CREATE TABLE IF NOT EXISTS "conferences_rooms" ( - "id" UUID NOT NULL PRIMARY KEY, - "name" TEXT NOT NULL, - "slug" TEXT NOT NULL, - "conference_id" UUID NOT NULL REFERENCES "conferences" ("id") ON DELETE CASCADE, - "location_id" UUID NOT NULL REFERENCES "conferences_locations" ("id") ON DELETE CASCADE -); -CREATE TABLE IF NOT EXISTS "conferences_tracks" ( - "id" UUID NOT NULL PRIMARY KEY, - "name" TEXT NOT NULL, - "slug" TEXT NOT NULL, - "color" TEXT NOT NULL, - "order" INT NOT NULL, - "conference_id" UUID NOT NULL REFERENCES "conferences" ("id") ON DELETE CASCADE -); -CREATE TABLE IF NOT EXISTS "conferences_event_sessions" ( - "id" UUID NOT NULL PRIMARY KEY, - "unique_id" VARCHAR(255) NOT NULL, - "title" TEXT NOT NULL, - "duration" INT, - "abstract" TEXT, - "description" TEXT, - "start_date" TIMESTAMPTZ NOT NULL, - "end_date" TIMESTAMPTZ NOT NULL, - "conference_id" UUID NOT NULL REFERENCES "conferences" ("id") ON DELETE CASCADE, - "room_id" UUID NOT NULL REFERENCES "conferences_rooms" ("id") ON DELETE CASCADE, - "track_id" UUID NOT NULL REFERENCES "conferences_tracks" ("id") ON DELETE CASCADE, - CONSTRAINT "uid_conferences_unique__0ced27" UNIQUE ("unique_id", "conference_id") -); -CREATE TABLE IF NOT EXISTS "conferences_bookmarks" ( - "id" UUID NOT NULL PRIMARY KEY, - "created" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, - "event_session_id" UUID NOT NULL REFERENCES "conferences_event_sessions" ("id") ON DELETE CASCADE, - "pretix_order_id" UUID NOT NULL REFERENCES "conferences_pretix_orders" ("id") ON DELETE CASCADE, - CONSTRAINT "uid_conferences_pretix__d82808" UNIQUE ("pretix_order_id", "event_session_id") -); -CREATE TABLE IF NOT EXISTS "conferences_stars" ( - "id" UUID NOT NULL PRIMARY KEY, - "created" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, - "stars" INT NOT NULL, - "event_session_id" UUID NOT NULL REFERENCES "conferences_event_sessions" ("id") ON DELETE CASCADE, - "pretix_order_id" UUID NOT NULL REFERENCES "conferences_pretix_orders" ("id") ON DELETE CASCADE, - CONSTRAINT "uid_conferences_pretix__b745a6" UNIQUE ("pretix_order_id", "event_session_id") -); -CREATE TABLE IF NOT EXISTS "conferences_starred_sessions" ( - "id" UUID NOT NULL PRIMARY KEY, - "nr_votes" INT NOT NULL, - "total_stars" INT NOT NULL, - "avg_stars" DECIMAL(3,2) NOT NULL, - "event_session_id" UUID NOT NULL UNIQUE REFERENCES "conferences_event_sessions" ("id") ON DELETE CASCADE -); -CREATE INDEX IF NOT EXISTS "idx_conferences_event_s_dd527c" ON "conferences_starred_sessions" ("event_session_id"); -CREATE TABLE IF NOT EXISTS "aerich" ( - "id" SERIAL NOT NULL PRIMARY KEY, - "version" VARCHAR(255) NOT NULL, - "app" VARCHAR(100) NOT NULL, - "content" JSONB NOT NULL -); -CREATE TABLE IF NOT EXISTS "conferences_lecturers_conferences_event_sessions" ( - "conferences_lecturers_id" UUID NOT NULL REFERENCES "conferences_lecturers" ("id") ON DELETE CASCADE, - "eventsession_id" UUID NOT NULL REFERENCES "conferences_event_sessions" ("id") ON DELETE CASCADE -);""" - - -async def downgrade(db: BaseDBAsyncClient) -> str: - return """ - """ diff --git a/src/migrations/models/1_20231105232211_update.py b/src/migrations/models/1_20231105232211_update.py deleted file mode 100644 index 9a5476a..0000000 --- a/src/migrations/models/1_20231105232211_update.py +++ /dev/null @@ -1,16 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -from tortoise import BaseDBAsyncClient - - -async def upgrade(db: BaseDBAsyncClient) -> str: - return """ - ALTER TABLE "conferences_event_sessions" ADD "rateable" BOOL NOT NULL DEFAULT True; - ALTER TABLE "conferences_event_sessions" ADD "bookmarkable" BOOL NOT NULL DEFAULT True;""" - - -async def downgrade(db: BaseDBAsyncClient) -> str: - return """ - ALTER TABLE "conferences_event_sessions" DROP COLUMN "rateable"; - ALTER TABLE "conferences_event_sessions" DROP COLUMN "bookmarkable";""" diff --git a/src/migrations/models/2_20231107215420_update.py b/src/migrations/models/2_20231107215420_update.py deleted file mode 100644 index c36e7c1..0000000 --- a/src/migrations/models/2_20231107215420_update.py +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -from tortoise import BaseDBAsyncClient - - -async def upgrade(db: BaseDBAsyncClient) -> str: - return """ - ALTER TABLE "conferences" ADD "source_document_checksum" VARCHAR(128);""" - - -async def downgrade(db: BaseDBAsyncClient) -> str: - return """ - ALTER TABLE "conferences" DROP COLUMN "source_document_checksum";""" diff --git a/src/migrations/models/3_20231108175131_update.py b/src/migrations/models/3_20231108175131_update.py deleted file mode 100644 index d864c9c..0000000 --- a/src/migrations/models/3_20231108175131_update.py +++ /dev/null @@ -1,23 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -from tortoise import BaseDBAsyncClient - - -async def upgrade(db: BaseDBAsyncClient) -> str: - return """ - CREATE TABLE IF NOT EXISTS "conferences_flows" ( - "id" UUID NOT NULL PRIMARY KEY, - "created" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, - "text" TEXT, - "data" JSONB, - "conference_id" UUID REFERENCES "conferences" ("id") ON DELETE CASCADE, - "pretix_order_id" UUID REFERENCES "conferences_pretix_orders" ("id") ON DELETE CASCADE -); -CREATE INDEX IF NOT EXISTS "idx_conferences_confere_a4c04b" ON "conferences_flows" ("conference_id"); -CREATE INDEX IF NOT EXISTS "idx_conferences_pretix__050ab5" ON "conferences_flows" ("pretix_order_id");""" - - -async def downgrade(db: BaseDBAsyncClient) -> str: - return """ - DROP TABLE IF EXISTS "conferences_flows";""" diff --git a/src/migrations/models/4_20231109165830_update.py b/src/migrations/models/4_20231109165830_update.py deleted file mode 100644 index d93da24..0000000 --- a/src/migrations/models/4_20231109165830_update.py +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -from tortoise import BaseDBAsyncClient - - -async def upgrade(db: BaseDBAsyncClient) -> str: - return """ - ALTER TABLE "conferences_event_sessions" ADD "notification5min_sent" BOOL;""" - - -async def downgrade(db: BaseDBAsyncClient) -> str: - return """ - ALTER TABLE "conferences_event_sessions" DROP COLUMN "notification5min_sent";""" diff --git a/src/migrations/models/5_20231109214614_update.py b/src/migrations/models/5_20231109214614_update.py deleted file mode 100644 index ef3f5c8..0000000 --- a/src/migrations/models/5_20231109214614_update.py +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -from tortoise import BaseDBAsyncClient - - -async def upgrade(db: BaseDBAsyncClient) -> str: - return """ - ALTER TABLE "conferences_event_sessions" ADD "str_start_date_local" VARCHAR(20);""" - - -async def downgrade(db: BaseDBAsyncClient) -> str: - return """ - ALTER TABLE "conferences_event_sessions" DROP COLUMN "str_start_date_local";""" diff --git a/src/migrations/models/6_20231109214845_update.py b/src/migrations/models/6_20231109214845_update.py deleted file mode 100644 index ddbd243..0000000 --- a/src/migrations/models/6_20231109214845_update.py +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -from tortoise import BaseDBAsyncClient - - -async def upgrade(db: BaseDBAsyncClient) -> str: - return """ - ALTER TABLE "conferences_event_sessions" RENAME COLUMN "str_start_date_local" TO "str_start_time";""" - - -async def downgrade(db: BaseDBAsyncClient) -> str: - return """ - ALTER TABLE "conferences_event_sessions" RENAME COLUMN "str_start_time" TO "str_start_date_local";""" diff --git a/src/migrations/models/7_20231109222307_update.py b/src/migrations/models/7_20231109222307_update.py deleted file mode 100644 index 86c1538..0000000 --- a/src/migrations/models/7_20231109222307_update.py +++ /dev/null @@ -1,14 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -from tortoise import BaseDBAsyncClient - - -async def upgrade(db: BaseDBAsyncClient) -> str: - return """ - ALTER TABLE "conferences_pretix_orders" ADD "created" TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP;""" - - -async def downgrade(db: BaseDBAsyncClient) -> str: - return """ - ALTER TABLE "conferences_pretix_orders" DROP COLUMN "created";""" diff --git a/src/migrations/models/8_20231109224215_update.py b/src/migrations/models/8_20231109224215_update.py deleted file mode 100644 index e93880a..0000000 --- a/src/migrations/models/8_20231109224215_update.py +++ /dev/null @@ -1,23 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -from tortoise import BaseDBAsyncClient - - -async def upgrade(db: BaseDBAsyncClient) -> str: - return """ - ALTER TABLE "conferences_pretix_orders" ALTER COLUMN "organization" TYPE VARCHAR(255) USING "organization"::VARCHAR(255); - ALTER TABLE "conferences_pretix_orders" ALTER COLUMN "first_name" DROP NOT NULL; - ALTER TABLE "conferences_pretix_orders" ALTER COLUMN "first_name" TYPE VARCHAR(255) USING "first_name"::VARCHAR(255); - ALTER TABLE "conferences_pretix_orders" ALTER COLUMN "last_name" TYPE VARCHAR(255) USING "last_name"::VARCHAR(255); - ALTER TABLE "conferences_pretix_orders" ALTER COLUMN "email" TYPE VARCHAR(255) USING "email"::VARCHAR(255); - """ - - -async def downgrade(db: BaseDBAsyncClient) -> str: - return """ - ALTER TABLE "conferences_pretix_orders" ALTER COLUMN "organization" TYPE TEXT USING "organization"::TEXT; - ALTER TABLE "conferences_pretix_orders" ALTER COLUMN "first_name" TYPE TEXT USING "first_name"::TEXT; - ALTER TABLE "conferences_pretix_orders" ALTER COLUMN "first_name" SET NOT NULL; - ALTER TABLE "conferences_pretix_orders" ALTER COLUMN "last_name" TYPE TEXT USING "last_name"::TEXT; - ALTER TABLE "conferences_pretix_orders" ALTER COLUMN "email" TYPE TEXT USING "email"::TEXT;""" diff --git a/src/scripts/qrgen.py b/src/scripts/qrgen.py deleted file mode 100644 index e90e9ce..0000000 --- a/src/scripts/qrgen.py +++ /dev/null @@ -1,47 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -from PIL import Image, ImageDraw, ImageFont # Corrected import statement -import PIL - -import qrcode - -l = {"LANE1":"5a25539b-b8f2-4b9d-ad7e-d607bb248835", - "LANE2":"e4041668-8199-48c5-bb00-0b4e7042f479", - "LANE3":"6aa3dbb8-9140-4f0c-8da2-e7c02d855d6b", - "LANE4":"71619b8e-f9f1-4537-a33d-0f69f117af6b", - "LANE5":"b22cce38-b33b-44a2-8f1d-8bc4ebe1e3d3", - "LANE6":"f5a33c2a-2112-497f-a781-71a2a6dc471d", - "LANE-DC":"b5b574fc-a854-4666-82c7-8b22877bf000" - } - -# Define the UUID - -for luid in l: - - uid = l[luid] - - qr = qrcode.QRCode( - version=1, - error_correction=qrcode.constants.ERROR_CORRECT_L, - box_size=10, - border=4, - ) - - qr.add_data(uid) - qr.make(fit=True) - - img = PIL.Image.new("1",(370,450),255) - - img_qr = qr.make_image(fill_color="black", back_color="white") - - img_draw = PIL.ImageDraw.Draw(img) - - font = ImageFont.truetype("./font.ttf", 64) - - img.paste(img_qr, (0,0)) - - img_draw.text((370/2-95,360), luid, fill='black', font=font, ) - - - img.save(f"uuid_{luid}.png") diff --git a/src/scripts/update-conf.py b/src/scripts/update-conf.py new file mode 100755 index 0000000..20403a4 --- /dev/null +++ b/src/scripts/update-conf.py @@ -0,0 +1,110 @@ +#!/usr/local/bin/python + +import json +import httpx +import asyncio +import os +import boto3 +from botocore.exceptions import ClientError + + +def list_buckets(): + s3_resource = boto3.resource("s3") + for bucket in s3_resource.buckets.all(): + print(f"\t{bucket.name}") + +def list_files_in_a_bucket(bucket_name): + s3_resource = boto3.resource("s3") + bucket = s3_resource.Bucket(bucket_name) + for obj in bucket.objects.all(): + print(f"\t{obj.key}") + + +def upload_file(file_name, bucket, object_name=None): + """Upload a file to an S3 bucket + + :param file_name: File to upload + :param bucket: Bucket to upload to + :param object_name: S3 object name. If not specified then file_name is used + :return: True if file was uploaded, else False + """ + + # If S3 object_name was not specified, use file_name + if object_name is None: + object_name = os.path.basename(file_name) + + # Upload the file + s3_client = boto3.client('s3') + try: + response = s3_client.upload_file(file_name, bucket, object_name, ExtraArgs={'ACL':'public-read','ContentType': 'application/json'}) + except ClientError as e: + print('ERROR', e) + return False + return True + + +def download_file_from_bucket(object_name, bucket, result_file_name): + + # Download the file + s3_client = boto3.client('s3') + try: + with open(result_file_name, 'wb') as f: + response = s3_client.download_fileobj(bucket, object_name, f) + except ClientError as e: + print('ERROR', e) + return False + return True + + + + + +async def import_xml(): + url = 'http://localhost:8000/api/import-xml' + + async with httpx.AsyncClient() as client: + try: + response = await client.post(url, data='') + response.raise_for_status() + + return response.json() + + except httpx.HTTPStatusError as e: + print(f"HTTP error: {e.response.status_code} - {e.response.text}") + except httpx.RequestError as e: + print(f"error sending request: {e}") + +async def get_static_conference(): + url = "http://localhost:8000/api/conference/static" + async with httpx.AsyncClient() as client: + response = await client.get(url) + + response.raise_for_status() + + res = response.json() + with open('sfscon2024.json','wt') as f: + f.write(json.dumps(res)) + + send_to_s3('sfscon2024.json') + + +def send_to_s3(fname): + list_buckets() + list_files_in_a_bucket('sfscon') + + upload_file(fname, 'sfscon') + + list_files_in_a_bucket('sfscon') + download_file_from_bucket(fname, 'sfscon', 'downloaded.sfs2024.json') + + +async def main(): + + res = await import_xml() + if res and 'changes' in res and res['changes']: + await get_static_conference() + + print(res) + +if __name__ == "__main__": + asyncio.run(main()) diff --git a/src/shared/redis_client.py b/src/shared/redis_client.py new file mode 100644 index 0000000..5df08c1 --- /dev/null +++ b/src/shared/redis_client.py @@ -0,0 +1,138 @@ +import json +import os +from typing import Any, List, Optional + +import redis + + +class RedisClientHandler: + def __init__(self, redis_instance: Optional[redis.Redis] = None, port: int = 6379, db: int = 0): + """ + Initialize the Redis client. + + :param port: Redis server port + :param db: Redis database number + """ + if redis_instance: + self.redis_client = redis_instance + else: + + #TODO: ... + + # host = "localhost" if os.getenv('V4INSTALLATION', "localhost") not in ('docker', 'docker-monolith') else 'redis' + host = os.getenv('REDIS_SERVER') + self.redis_client = redis.Redis(host=host, port=port, db=db) + + @staticmethod + def get_redis_client(redis_instance: Optional[redis.Redis] = None, port: int = 6379, db: int = 0) -> 'RedisClientHandler': + return RedisClientHandler(redis_instance, port, db) + + def push_message(self, queue_name: str, message: Any) -> bool: + """ + Push a message to a specified Redis queue. + + :param queue_name: Name of the queue + :param message: Message to be pushed (will be JSON serialized) + :return: True if successful, False otherwise + """ + try: + serialized_message = json.dumps(message, default=str) + self.redis_client.rpush(queue_name, serialized_message) + return True + except Exception as e: + print(f"Error pushing message to queue {queue_name}: {e}") + raise Exception("FAILED TO SEND REDIS MESSAGE") + + def read_message(self, queue_name: str, timeout: int = 0) -> Optional[Any]: + """ + Read a message from a specified Redis queue. + + :param queue_name: Name of the queue + :param timeout: Time to wait for a message (0 means indefinite) + :return: Deserialized message if available, None otherwise + """ + try: + # BRPOP returns a tuple (queue_name, message) + result = self.redis_client.brpop([queue_name], timeout) + if result: + message = result[1] # Get the message part + return json.loads(message) + return None + except Exception as e: + print(f"Error reading message from queue {queue_name}: {e}") + raise Exception("FAILED TO READ REDIS MESSAGE FROM QUEUE") + + def get_queue_length(self, queue_name: str) -> int: + """ + Get the current length of a queue. + + :param queue_name: Name of the queue + :return: Length of the queue + """ + return self.redis_client.llen(queue_name) + + def clear_queue(self, queue_name: str) -> bool: + """ + Clear all messages from a queue. + + :param queue_name: Name of the queue + :return: True if successful, False otherwise + """ + try: + self.redis_client.delete(queue_name) + return True + except Exception as e: + print(f"Error clearing queue {queue_name}: {e}") + raise Exception("FAILED TO CLEAR REDIS QUEUE") + + def get_all_messages(self, queue_name: str) -> List[Any]: + """ + Get all messages from a queue without removing them. + + :param queue_name: Name of the queue + :return: List of all messages in the queue + """ + try: + messages = self.redis_client.lrange(queue_name, 0, -1) + return [json.loads(message) for message in messages] + except Exception as e: + print(f"Error getting all messages from queue {queue_name}: {e}") + return [] + + +# Usage example +if __name__ == "__main__": + import dotenv + + dotenv.load_dotenv() + redis_handler = RedisClientHandler() + redis_handler.clear_queue("telegram_send_message") + message1 = redis_handler.read_message("telegram_send_message") + message1 = redis_handler.read_message("telegram_send_message") + message1 = redis_handler.read_message("telegram_send_message") + message1 = redis_handler.read_message("telegram_send_message") + message1 = redis_handler.read_message("telegram_send_message") + message1 = redis_handler.read_message("telegram_send_message") + message1 = redis_handler.read_message("telegram_send_message") + message1 = redis_handler.read_message("telegram_send_message") + + # Push messages + redis_handler.push_message("my_queue", {"key": "value1"}) + redis_handler.push_message("my_queue", {"key": "value2"}) + + # Read messages + message1 = redis_handler.read_message("my_queue") + message2 = redis_handler.read_message("my_queue") + + print(f"Read messages: {message1}, {message2}") + + # Get queue length + length = redis_handler.get_queue_length("my_queue") + print(f"Queue length: {length}") + + # Get all messages without removing them + all_messages = redis_handler.get_all_messages("my_queue") + print(f"All messages: {all_messages}") + + # Clear the queue + redis_handler.clear_queue("my_queue") diff --git a/src/shared/setup_logger.py b/src/shared/setup_logger.py index d70807c..e471c9f 100644 --- a/src/shared/setup_logger.py +++ b/src/shared/setup_logger.py @@ -1,9 +1,10 @@ # SPDX-License-Identifier: GPL-3.0-or-later # SPDX-FileCopyrightText: 2023 Digital CUBE +import logging import os + import redis -import logging class RedisHandler(logging.Handler): @@ -40,7 +41,7 @@ def setup_file_logger(service: str): logger = logging.getLogger(f'{service}_logger') logger.setLevel(logging.INFO) - handler = logging.FileHandler(f'/var/log/opencon/{service}.log') + handler = logging.FileHandler(f'/var/log/opencon/svc_{service}.log') formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - XXX - %(message)s') handler.setFormatter(formatter) diff --git a/src/tests/assets/sfs2023streaming.yaml b/src/tests/assets/sfs2023streaming.yaml index 71c229e..b43c57c 100644 --- a/src/tests/assets/sfs2023streaming.yaml +++ b/src/tests/assets/sfs2023streaming.yaml @@ -1,15 +1,13 @@ -Main track: https://www.youtube.com/live/pGB4IRIEOTA?si=YMjmXNOneReYwl86 -Artificial Intelligence track: https://www.youtube.com/live/a3Z99yOEBeE?si=w0lZi35XHBs-Ifwb -Community track: https://www.youtube.com/live/m8AMmQrwPAQ?si=HAxXi2zida3HfzpT -Cybersecurity track: https://www.youtube.com/live/dyckcGuKMig?si=WzyZN1xNAuNj_XIP -Developers track: https://www.youtube.com/live/PoaUQyaQVJE?si=aGZD9Js0MMvVScv9 -Legal track: https://www.youtube.com/live/QvwZW5urLEM?si=liltKJU92_13usuj -OW2 track: https://www.youtube.com/live/m8AMmQrwPAQ?si=HAxXi2zida3HfzpT -Public Money Public Code & Open Data track: https://www.youtube.com/live/RDxExYDZ-qo?si=QoEsWZrl29j564iv -Data4SmartHealth: https://www.youtube.com/live/qcAhs07jits?si=pWLF-3JeJvGB_neW -ZOOOM project track: https://www.youtube.com/live/0gOWmZ1Yvlc?si=e0XCplDci5wSQvQR -Open Data & Open Hardware track: https://www.youtube.com/live/qejn68tzrd0?si=2PRfjevKpnpHmUEJ -Side Event - Hackathon: https://sfscon.it -Side Event - School Reading: https://sfscon.it -Closing - with a Tale of Software, Skateboards, and Raspberry Ice Cream: https://sfscon.it -Side Event - FSFE - Italian community meeting: https://www.youtube.com/live/YdqEpBv5J9Y?si=xtr0zGotO8nwP8xR +Main Track: Seminar https://maps.sfscon.it/l/sem1/ +Ethics, Policy, Legal & Economics: Seminar 1 - https://maps.sfscon.it/l/sem1/ +Data Spaces: Seminar 2 - https://maps.sfscon.it/l/sem2/ +Open Hardware: Seminar 3 - https://maps.sfscon.it/l/sem3/ +Developers: Seminar 4 - https://maps.sfscon.it/l/sem4/ +Crane Hall BOF meetings: Crane Hall - https://maps.sfscon.it/l/kranhalle/ +Community Building: Friday - Seminar 2 - https://maps.sfscon.it/l/sem2/ +DevOps: Seminar 3 - https://maps.sfscon.it/l/sem3/ +Cybersecurity: Seminar 3 - https://maps.sfscon.it/l/sem3/ +OW2: Seminar 4 - https://maps.sfscon.it/l/sem4/ +Women* in tech: Seminar 2 - https://maps.sfscon.it/l/sem2/ +FSFE Italian Community Meeting: Seminar 3 - https://maps.sfscon.it/l/sem3/ +Fediverse: Seminar 2 - https://maps.sfscon.it/l/sem2/ \ No newline at end of file diff --git a/src/tests/assets/sfs2024.10.14.json b/src/tests/assets/sfs2024.10.14.json new file mode 100644 index 0000000..2c84c38 --- /dev/null +++ b/src/tests/assets/sfs2024.10.14.json @@ -0,0 +1,3660 @@ +{ + "conference": { + "acronym": "sfscon-2024", + "title": "SFSCON 2024" + }, + "tracks": { + "track": [ + { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + { + "@color": "#49a834", + "#text": "Data Spaces" + }, + { + "@color": "#c62ecc", + "#text": "Open Hardware" + }, + { + "@color": "#c48c2d", + "#text": "Developers" + }, + { + "@color": "#6b6b6b", + "#text": "Community Building" + }, + { + "@color": "#d31d4e", + "#text": "Cybersecurity" + }, + { + "@color": "#34ad16", + "#text": "Fediverse" + }, + { + "@color": "#aa2727", + "#text": "DevOps" + }, + { + "@color": "#a8a8a8", + "#text": "Side Event - Hackathon" + }, + { + "@color": "#a8a8a8", + "#text": "Side Event - School Reading" + }, + { + "@color": "#a8a8a8", + "#text": "Side Event - MiniNOI x SFSCON" + }, + { + "@color": "#b7d631", + "#text": "OW2" + }, + { + "@color": "#f427c8", + "#text": "Side Event - Women* in tech" + }, + { + "@color": "#1e73be", + "#text": "Side Event - Crane Hall BOF meetings" + }, + { + "@color": "#49e547", + "#text": "Side Event - FSFE - Italian community meeting" + } + ] + }, + "day": [ + { + "@date": "2024-11-08", + "room": [ + { + "@name": "NOI Techpark", + "event": { + "@id": "670d1b59a3c5cbef13fe69044b9f040f25623a9417923", + "@unique_id": "2024day1event98", + "@bookmark": "0", + "@rating": "0", + "start": "08:30", + "duration": "00:30", + "title": "Check-in SFSCON 2024", + "language": null, + "track": "SFSCON - Main track", + "category": "SFSCON - Main track", + "type": "SFSCON,Main track", + "bookmark": "0", + "rating": "0" + } + }, + { + "@name": "Seminar 1", + "event": [ + { + "@id": "670d1b59a4603ca90b84f7d36580a42b9819cd6de35f2", + "@unique_id": "2024day1event91", + "@bookmark": "1", + "@rating": "1", + "start": "09:00", + "duration": "00:10", + "title": "Welcome SFSCON 2024", + "url": "https://www.sfscon.it/talks/welcome-sfscon-2024/", + "language": null, + "track": "SFSCON - Main track", + "category": "SFSCON - Main track", + "type": "SFSCON,Main track", + "persons": { + "person": { + "@id": "4704", + "@organization": "NOI Techpark", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2017/07/Patrick_Ohnewein.png", + "@socials": "[{\"twitter\":\"https:\\/\\/twitter.com\\/ohnewein\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/ohnewein\\/\"}]", + "@bio": "\"Team leader of project managers with specialization in the coordination of various European Research & Development Projects in the field of SMART Tourism, SMART Mobility, SMART Energy and SMART Food. He and his team promote a strategy for innovation build on top of Open Data, Open Standards and Free Open Source Software.\\r\\nHonorary dedicated to the build-up of a Free Software community in South Tyrol since the mid of the 90ties, co-founder of the Linux User Group Bozen-Bolzano-Bulsan (http:\\/\\/lugbz.org\\/<\\/a>), organizes the annual South Tyrol Free Software Conference (http:\\/\\/sfscon.it<\\/a>). Involved as IT-expert in various work-groups and committees for Free Software and for the IT-Community, member of the core team of the Free Software Foundation Europe (http:\\/\\/fsfe.org\\/about\\/team.html<\\/a>), Patrick Ohnewein formerly worked for many years as software developer and multiplier in the software area.\"", + "@url": "https://www.sfscon.it/speakers/patrick-ohnewein/", + "#text": "Patrick Ohnewein" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59a4be132bfb0474f9b283501bcf120cbcdf225", + "@unique_id": "2024day1event1", + "@bookmark": "1", + "@rating": "1", + "start": "09:10", + "duration": "00:05", + "title": "Opening SFSCON 2024", + "url": "https://www.sfscon.it/talks/opening-sfscon-2024/", + "language": null, + "description": "

Opening SFSCON 2024

", + "track": "SFSCON - Main track", + "category": "SFSCON - Main track", + "type": "SFSCON,Main track", + "persons": { + "person": { + "@id": "7351", + "@organization": "Autonomous Province of Bolzano/Bozen – South Tyrol (Italy)", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/10/Philipp_Achammer.jpg", + "@bio": "\"Councilor for German Education and Culture, for the Promotion of Education, Cultural Assets, Innovation, Research, Universities and Museums\"", + "@url": "https://www.sfscon.it/speakers/philipp-achammer/", + "#text": "Philipp Achammer" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59a518e21f7e43aed7a1ef851f4f6a9b4b5e898", + "@unique_id": "2024day1event92", + "@bookmark": "1", + "@rating": "1", + "start": "09:15", + "duration": "00:05", + "title": "Greetings from NOI", + "url": "https://www.sfscon.it/talks/greetings-from-noi/", + "language": null, + "track": "SFSCON - Main track", + "category": "SFSCON - Main track", + "type": "SFSCON,Main track", + "persons": { + "person": { + "@id": "5660", + "@organization": "NOI Techpark", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2021/11/Vincent-Mauroit2.jpg", + "@bio": "\"Vincent Mauroit was born and raised in the Flemish jewel town of Ghent in Belgium and holds an academic Master of Science degree in electromechanical engineering from the University of Ghent and an Executive MBA in general management from the University of Mannheim and the ESSEC Business School in Paris. Vincent is a management and leadership professional with hands-on experience in the areas of driving product innovation, managing operations, quality management, identifying sales opportunities, leading teams, and developing strategies that achieve optimum growth and revenue. He lead the Innovation, product management and advanced development activities of a renowned German automotive Tier1 supplier where he was responsible for the innovation management process and the business development of new products for several car manufacturers including BMW, Daimler, VW\\/Audi, Porsche and car manufacturers in the US (Ford, GM, Tesla, etc\\u2026) and China (BYD, FAW, NIO, etc\\u2026) and he is also a mentor and co-founder of several start-up companies. Vincent has an overall passion for innovation and especially for technological innovations which contribute to a better and more sustainable world and have the potential to make major\\u00a0contributions\\u00a0in solving the big challenges the world is currently facing.\"", + "@url": "https://www.sfscon.it/speakers/vincent-mauroit/", + "#text": "Vincent Mauroit" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59a570158c628a74d3e2883d21e673b4d97a96f", + "@unique_id": "2024day1event93", + "@bookmark": "1", + "@rating": "1", + "start": "09:20", + "duration": "00:05", + "title": "Greetings from Gruppo FOS", + "url": "https://www.sfscon.it/talks/greetings-from-gruppo-fos/", + "language": null, + "track": "SFSCON - Main track", + "category": "SFSCON - Main track", + "type": "SFSCON,Main track", + "persons": { + "person": { + "@id": "4536", + "@organization": "FOS Spa", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2019/08/Giorgio_Allasia.png", + "@bio": "\"Master Degree in Electronic Engineering - 30 years of professional experience.\\r\\nIn FOS Spa since 2005, Giorgio Allasia is currently COO of a Business Unit employing more than 30 people covering the following areas:\\r\\n\\u2022 Engineering and Technology Transfer\\r\\n\\u2022 Research and Development (National and International)\\r\\n\\u2022 Value-added services\\r\\n\\r\\nMain fields of experience:\\r\\n\\u2022 definition of the guidelines and objectives for the development of R&D and Engineering activities\\r\\n\\u2022 managing the work of the BU team to achieve the business and budget objectives of the Business Unit\\r\\n\\u2022 develop Technology Transfer activities at national and international level\\r\\n\\r\\nAdditional roles:\\r\\n\\u2022 Member of the Technical and Scientific Committee of the Start4.0 Competence Center\\r\\n\\u2022 Member of the Technical and Scientific Committee of DIH Liguria\\r\\n\\u2022 Member of the Board of Directors of 3 Business Networks created within the SIIT \\u2013 District of Integrated Intelligent Systems based in Genoa\"", + "@url": "https://www.sfscon.it/speakers/giorgio-allasia/", + "#text": "Giorgio Allasia" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59a5c883309bce0c20e6b5f0a987ca277b8b7b0", + "@unique_id": "2024day1event94", + "@bookmark": "1", + "@rating": "1", + "start": "09:25", + "duration": "00:05", + "title": "Greetings from Telmekom", + "url": "https://www.sfscon.it/talks/greetings-from-telmekom/", + "language": null, + "track": "SFSCON - Main track", + "category": "SFSCON - Main track", + "type": "SFSCON,Main track", + "persons": { + "person": { + "@id": "7358", + "@organization": "Telmekom", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/10/Sergio_Vemic.jpg", + "@url": "https://www.sfscon.it/speakers/sergio-vemic/", + "#text": "Sergio Vemic" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59a611e3b7709c738d05fd184e877e3e3448941", + "@unique_id": "2024day1event2", + "@bookmark": "0", + "@rating": "0", + "start": "09:30", + "duration": "00:30", + "title": "Keynote speaker – coming soon", + "language": null, + "track": "SFSCON - Main track", + "category": "SFSCON - Main track", + "type": "SFSCON,Main track", + "bookmark": "0", + "rating": "0" + }, + { + "@id": "670d1b59a65eeddd03cc1e1da0b09d345507de5819ae7", + "@unique_id": "2024day1event3", + "@bookmark": "0", + "@rating": "0", + "start": "10:00", + "duration": "00:15", + "title": "European SFS Award 2024", + "language": null, + "abstract": "Free Software Foundation Europe (FSFE) and Linux User Group Bozen-Bolzano-Bulsan assign the “European SFS Award”", + "subtitle": "Free Software Foundation Europe (FSFE) and Linux User Group Bozen-Bolzano-Bulsan assign the “European SFS Award”", + "description": "

The award is given to a person who contributed to the introduction of the culture of Free Software.

", + "track": "SFSCON - Main track", + "category": "SFSCON - Main track", + "type": "SFSCON,Main track", + "bookmark": "0", + "rating": "0" + }, + { + "@id": "670d1b59a6aac602400012808810c5aa8b639452fc242", + "@unique_id": "2024day1event89", + "@bookmark": "0", + "@rating": "0", + "start": "10:15", + "duration": "00:15", + "title": "SFS Award 2024", + "language": null, + "abstract": "Linux User Group Bozen-Bolzano-Bulsan assigns the “South Tyrol Free Software Award”", + "subtitle": "Linux User Group Bozen-Bolzano-Bulsan assigns the “South Tyrol Free Software Award”", + "description": "

Every year the Linux User Group Bozen-Bolzano-Bulsan assigns the “South Tyrol Free Software Award” (SFS Award). The award is given to a person who contributed to the introduction of the culture of Free Software in the Province of Bolzano.

", + "track": "SFSCON - Main track", + "category": "SFSCON - Main track", + "type": "SFSCON,Main track", + "bookmark": "0", + "rating": "0" + }, + { + "@id": "670d1b59a756bfc97ec1c1cbe3e99cafaa34579ed18e4", + "@unique_id": "2024day1event95", + "@bookmark": "1", + "@rating": "1", + "start": "10:30", + "duration": "00:10", + "title": "AlmaLinux in brief", + "url": "https://www.sfscon.it/talks/almalinux-in-brief/", + "language": null, + "description": "

In this quick chat, benny will summarize 20 years of context and 4 years of growth in just 10 minutes by highlighting the major points that brought AlmaLinux to the world, how the project has adjusted for each challenge along the way, and what they’re planning next.

", + "track": "SFSCON - Main track", + "category": "SFSCON - Main track", + "type": "SFSCON,Main track", + "persons": { + "person": { + "@id": "7344", + "@organization": "AlmaLinux OS Foundation", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/10/benny_Vasquez_670ab8727de09670abede00c79.jpeg", + "@socials": "[{\"mastodon\":\"https:\\/\\/social.linux.pizza\\/@benny\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/bennyvasquez\\/\"},{\"twitter\":\"https:\\/\\/twitter.com\\/bennyvasquez\"}]", + "@bio": "\"benny is currently the Chair of the AlmaLinux OS Foundation, has a long history in business and community building, and a long and idealistic love of open source.\"", + "@url": "https://www.sfscon.it/speakers/benny-vasquez/", + "#text": "benny Vasquez" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59a7a673b7709c738d05fd184e877e3e3448941", + "@unique_id": "2024day1event4", + "@bookmark": "0", + "@rating": "0", + "start": "10:40", + "duration": "00:20", + "title": "Keynote speaker – coming soon", + "language": null, + "track": "SFSCON - Main track", + "category": "SFSCON - Main track", + "type": "SFSCON,Main track", + "bookmark": "0", + "rating": "0" + }, + { + "@id": "670d1b59a805b91261e6acff65b5273307ce314f6d6b3", + "@unique_id": "2024day1event5", + "@bookmark": "1", + "@rating": "1", + "start": "11:00", + "duration": "00:15", + "title": "Let’s all get over the CRA!", + "url": "https://www.sfscon.it/talks/lets-all-get-over-the-cra/", + "language": null, + "abstract": "how I stopped worrying about the consequences of the CRA for Open Source innovation in Europe and moved to something else", + "subtitle": "how I stopped worrying about the consequences of the CRA for Open Source innovation in Europe and moved to something else", + "description": "

The adoption of the CRA (Cyber Resilience Act) has caused some real anxiety among the FOSS ecosystem. Even in its amended form, many questions remain opened and debated, and more to the point, a lot of uncertainty still surrounds it, not just at the level of its general architecture but also at the implementation level.
\nIt is perhaps fair to mention that the CRA itself does not exist in a void and is building on already existing regulations and ideas. However, it should be explained how the CRA itself was not born inside the institutions of the European Union but is an almost pure product of governmental cyber security circles and agencies. Because of that, the digital ecosystem at large is at pain understanding some of its logic. This talk will start with what we know and what we can infer from the CRA, and how it fits within the general regulatory framework of the European Union. We will thus clarify the following points:

\n

– what does the CRA mean in terms of software security assessment and certification – and how that plays a key role in understanding what the CRA is and what it is not
\n– CRA within the European regulatory framework
\n– CRA implementation: the bad, the ugly, and the unknown

\n

We will then discuss what the concerns are for the FOSS communities. Most notably:

\n

– barriers of entry for Free Software companies, esp. the small and medium ones
\n– legal inability to develop Free and Open Source Software
\n– what will Free and Open Source software foundations do in edge cases and what are they expected to bring in terms of guidance to the companies contributing to their projects

\n

It will then discuss how we can best prepare for it, and make some suggestions on how to solve FOSS specific challenges related to CRA. In particular the talk will explore the following possibilities:

\n

– evolving the role or cross project security teams
\n-promoting best practices in development (CI CD, code auditability) turning the CRA against proprietary software practices
\n– Pooling security audits
\n– Better release management

\n

Last but not least, this talk will discuss the economics behind the CRA and why this may not end up being less of a problem than we think.

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": { + "@id": "4899", + "@organization": "Vates - Xen Project", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/form-speakers/charles-h-schulz-b2685f4ed2dd00e01f75cbae14a2d6dc.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/www.vates.fr\"},{\"twitter\":\"https:\\/\\/www.twitter.com\\/ch_s\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/charlesschulz\"}]", + "@bio": "\"Charles-H. is a French technologist and a Free Software and Open Standards advocate. A long-time contributor to free and open source projects and co-founder of the Document Foundation and LibreOffice, he is considered a renowned expert promoting the adoption of the OpenDocument Format standard. A former director of the OASIS Consortium, he has engaged in various digital public policy debates at the European level. After 6 years working in national security and cybersecurity for the French government, Charles is now in charge of the strategy and partnerships for Vates, a French open source virtualization software vendor.\"", + "@url": "https://www.sfscon.it/speakers/charles-h-schulz/", + "#text": "Charles-H. Schulz" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59a9cedacbbb27690a11ddf87dce9d0c911eaeb", + "@bookmark": "1", + "@rating": "1", + "start": "11:20", + "duration": "00:15", + "title": "Ensuring fair behavior among Autonomous Vehicles", + "url": null, + "language": null, + "description": "

The rapid evolution of autonomous systems is leading to the formation of Autonomous Ecosystems, complex networks of machines with their own governance challenges. A good example of such ecosystem could be a city with Autonomous Vehicles. A key issue in these ecosystems is to ensure that machines behave fairly towards each other. This talk proposes a novel interdisciplinary approach by utilizing blockchain technology to monetize fairness. By creating fairness tokens, the fair behavior of machines becomes a quantifiable, incentivized metric. Fair behavior can be rewarded with these tokens, which can also be used to purchase fairness within the ecosystem. This approach not only encourages equitable machine interactions but also offers a self-regulating mechanism for the maintenance and governance of these ecosystems.

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": [ + { + "@id": "6945", + "@organization": "Masaryk University", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/David_Halasz_666b11632696e666c529f5d6de.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/www.skateman.eu\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/skateman\\/\"},{\"twitter\":\"https:\\/\\/twitter.com\\/halaszdavid\"}]", + "@bio": "\"I am a Pincipal Software Engineer and Team Lead at Red Hat, working on security compliance as a service. Outside of my working hours I am a researcher at Masaryk University, focusing on trust-based adaptive safety in Autonomous Ecosystems. In any free time that is left, I like playing table tennis, build stuff with my 3D printer(s) or travel around the world.\"", + "@url": "https://www.sfscon.it/?post_type=speaker&p=6945", + "#text": "David Halasz" + }, + { + "@id": "6946", + "@organization": "Masaryk University", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Dasa_Kusnirakova_666b28ba10ba3666c53812c6ba.jpeg", + "@bio": "\"PhD candidate at Masaryk University, Brno, Czechia. My research area centers around the Governance of Smart Dynamic Ecosystems using Trust Management and Ethical Considerations.\"", + "@url": "https://www.sfscon.it/?post_type=speaker&p=6946", + "#text": "Dasa Kusnirakova" + } + ] + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59ab3440ee6770ffb385ea9dbc7c387691214ef", + "@unique_id": "2024day1event13", + "@bookmark": "1", + "@rating": "1", + "start": "11:40", + "duration": "00:15", + "title": "CRA & PLD Liability rules and Software Freedom", + "url": "https://www.sfscon.it/talks/cra-pld-liability-rules-and-software-freedom/", + "language": null, + "description": "

With CRA and PLD liability rules for software have been introduced with a broad exception for Free Software. After long and intense debates individual developers and non for profit work are safeguarded. I will shed light on those new rules.

\n

Already at an early stage, the FSFE argued in a hearing in the EU Parliament, for the inclusion of clear and precise exemptions for Free Software development in the legislation and for liability to be transferred to those who significantly financially benefit from it on the market.

\n

In the future, individual developers and non-profit development of Free Software will be exempt from the CRA and the PLD. Nevertheless, the wording in both the regulations are different and a standardisation processes and guidelines are still being drawn up.

\n

In this talk I will discuss what this new regulation means for software freedom in future and what happens at this stage and how to be involved in implementation.

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": { + "@id": "4360", + "@organization": "FSFE - Free Software Foundation Europe", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2018/10/Alexander_Sander.jpg", + "@socials": "[{\"site\":\"https:\\/\\/fsfe.org\\/about\\/sander\\/sander.de.html\"},{\"twitter\":\"https:\\/\\/twitter.com\\/lexelas\"}]", + "@bio": "\"Alexander has studied politics in Marburg and later has been an MEP Assistant in Brussels for three years and the General Manager of Digitale Gesellschaft e.V. in Berlin for four years. Furthermore he is the founder of NoPNR!, a campaign against the retention of travel data.\\r\\nHe is also a Member of the Advisory Board of the ZMI Gie\\u00dfen and the Initiative gegen Total\\u00fcberwachung.\"", + "@url": "https://www.sfscon.it/speakers/alexander-sander/", + "#text": "Alexander Sander" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59ac8bef45238c6497fc0f80ba0d1ac911a7c4a", + "@unique_id": "2024day1event17", + "@bookmark": "1", + "@rating": "1", + "start": "12:00", + "duration": "00:15", + "title": "Cyber Resilience Act, already too late to comply?", + "url": "https://www.sfscon.it/talks/cyber-resilience-act-already-too-late-to-comply/", + "language": null, + "abstract": "Compliance is dead, long live compliance", + "subtitle": "Compliance is dead, long live compliance", + "description": "

If you are taking your decisions now for complying with all the requirements of CRA, you might be too late to find adequate external resources to comply , although — at submission time — it is not yet in force. So what are you gonna do? Being open source would help only to a certain point, if you monetize the software. Some guidance tips for Open Source projects and businesses.

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": [ + { + "@id": "776", + "@organization": "Array", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Carlo_Piana_6489f71d13e89667a95e8d1a6b.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/array.eu\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/carlopiana\\/\"},{\"twitter\":\"https:\\/\\/twitter.com\\/carlopiana\"}]", + "@bio": "\"Chair of the Open Source Initiative (OSI) and member of the Board, founding partner at Array. A long standing Free and open source software advocate, Carlo is a lawyer in private practice in Milano, Italy. His practice covers almost exclusively IT law with an emphasis on software licensing, antitrust, procurement, service agreements, contracts and privacy. Former General Counsel to the Free Software Foundation Europe, he has been involved in a decade-long litigation in Europe on protocols and antitrust laws in one of the largest cases ever. Editor of the Journal of Law, Technology, & Society (formerly, International Free and Open Source Software Law Review), he is member of the IP & OS advisory group of the United Nations Technology Innovation Laboratories and a partner of OpenChain in Europe.\\r\\nMember of the Steering Committee of the Eclipse Oniro Working Group.\"", + "@url": "https://www.sfscon.it/speakers/carlo-piana/", + "#text": "Carlo Piana" + }, + { + "@id": "5051", + "@organization": "Array", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2020/09/alberto_pianon.jpg", + "@bio": "\"A long standing activist and user of Free and Open Source Software, Alberto is a qualified lawyer in private practice in Vicenza, Italy. His practice covers intellectual property, cyberlaw and copyright law, with a particular focus on open source licensing and compliance, especially in the embedded\\/IoT field. He is member of the Legal Network of the FSFE and partner of OpenChain in Europe together with Carlo Piana (Array). Supporter of FSFE's Free Your Android initiative and advocate of private cloud and self-hosting solutions. Used to read (and sometimes write) code in Python, PHP, JS, shell scripting, Java, C.\"", + "@url": "https://www.sfscon.it/speakers/alberto-pianon/", + "#text": "Alberto Pianon" + } + ] + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59ae4e98fcfbca80a3f045ac26e0563377f0df9", + "@unique_id": "2024day1event21", + "@bookmark": "1", + "@rating": "1", + "start": "12:20", + "duration": "00:15", + "title": "AI no-code for marketing", + "url": "https://www.sfscon.it/talks/ai-no-code-for-marketing/", + "language": null, + "abstract": "How artificial intelligence can really help create a marketing strategy", + "subtitle": "How artificial intelligence can really help create a marketing strategy", + "description": "

The process of creating a Marketing strategy and the subsequent steps of drafting editorial calendars, selecting channels, designing, and publishing advertising campaigns, is a complex journey.
\nMarketers have always dedicated a lot of time and resources to creating the most effective strategy for a brand’s success and translating it into concrete actions.
\nToday, is it possible to use artificial intelligence as a tangible support for the development of the strategic, technical, and operational assets necessary to create a successful marketing plan?
\nLet’s discover ATENA together, a methodology and an easy process through which you can simplify, accelerate, and enhance the quality of your marketing strategy, thanks to the practical support of AI.

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": { + "@id": "7285", + "@organization": "Symphonie Prime", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/10/Alessandro_Agnati_66fe94937b26366fe990f979b7.jpeg", + "@bio": "\"I am a Senior Executive and digital passionate with 20+ years of experience in international contexts, with a solid background in digital strategy, business development, team management, digital marketing, creativity and brand engagement.\\r\\n\\r\\nDuring my career in the world of digital agencies, I led teams with vertical skills in user experience design, branding, digital advertising, web and mobile development, always focused on creating successful experiences for customers, quality projects and results, and timely delivery.\\r\\n\\r\\nI strongly believe that combining creativity and innovative technologies is the best way to create unique experiences and engagement for customers, always focusing on people's needs and their relationship with the real world.\\r\\n\\r\\nI strive every day on creating an inclusive and collaborative work environment, where people can feel comfortable and bring out their best qualities to achieve personal satisfaction and professional goals.\"", + "@url": "https://www.sfscon.it/speakers/alessandro-agnati/", + "#text": "Alessandro Agnati" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b018f72987e25c60caa8d41e9367c54d1b22f", + "@unique_id": "2024day1event25", + "@bookmark": "1", + "@rating": "1", + "start": "12:40", + "duration": "00:15", + "title": "For the Right of General Purpose Computers", + "url": "https://www.sfscon.it/talks/for-the-right-of-general-purpose-computers/", + "language": null, + "abstract": "Breaking lock-ins over devices with Free Software", + "subtitle": "Breaking lock-ins over devices with Free Software", + "description": "

Our smartphones, tablets, laptops, and other connected devices are general purpose computers. That means we can potentially run any software we want to make full use of the hardware. This potential is fostered by Free Software.

\n

However, device manufacturers, vendors, and internet platforms have been restricting software freedom by exercising their monopolistic control over end-user equipment. This power is used over key features and components of devices such as operating systems, browsers, and app stores.

\n

Basic freedoms such as installing and uninstalling software are being unfairly limited by these companies, commonly referred to as “gatekeepers”, because of their monopolistic control over devices.

\n

As a concrete example, this talk will present the policy and legal work of FSFE in denouncing the detrimental commercial practices of a worldwide known gatekeeper: Apple.

\n

Apple’s monopolistic power over its devices is detrimental to Free Software and a high risk for the right of general purpose computers. The company’s “notarization”, its barriers to software freedom and lack of interoperability are highly negative to Free Software.

\n

In conclusion, this talk will present Device Neutrality as a policy solution to enable end-users to bypass gatekeepers in order to run Free Software independently of the control exercised by hardware manufacturers, vendors, and platforms. Device Neutrality can enable end–users to regain control over their devices.

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": { + "@id": "4709", + "@organization": "FSFE - Free Software Foundation Europe", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2019/10/Lucas_Lasota.png", + "@socials": "[{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/lucas-lasota\\/\"}]", + "@bio": "\"Lucas Lasota is an international legal counsel with background in Contract and Technology Law. In Brazil and Russia he was practising the field of e-commerce, transfer of technology, telecommunications and arbitration. Over the years he got experience in the academic sector as well, achieving a Master and PhD in law. For him Free Software is a precondition for a safe, neutral and healthy digital environment. At the FSFE, he has been dealing with FOSS legal aspects, helping people to maintain control over technology.\"", + "@url": "https://www.sfscon.it/speakers/lucas-lasota/", + "#text": "Lucas Lasota" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b1ef35ba70f023718184001ba50fca03670d6", + "@unique_id": "2024day1event29", + "@bookmark": "1", + "@rating": "1", + "start": "13:00", + "duration": "00:15", + "title": "25 Years of Copyleft Enforcement: The Road Ahead for Defending Software Rights", + "url": "https://www.sfscon.it/talks/25-years-of-copyleft-enforcement-the-road-ahead-for-defending-software-rights/", + "language": null, + "description": "

In 1999, I worked my first GPL enforcement matter: a large storage had made proprietary modifications to GNU tar and failed to release the complete, corresponding source code to its customers. In early 2000, I did my first “CCS check” (complete, corresponding sourcecode check) — wherein one attempts to build the “CCS candidate” provided by the vendor to investigate whether the CCS candidate is actually complete, and whether it corresponds to the binaries that were distributed.

\n

In those days, violations of copyleft licenses were rare, and once uncovered, companies eventually corrected their behavior. Yet, even then, it took years of work to convince the company to comply. And often, by the time compliance was achieved, a new generation of the product was released.

\n

25 years later, we face the same problems with nearly every vendor.
\nAlmost every product on the market today contains Linux, BusyBox, the GNU C Library, GNU Bash, and dozen other packages licensed under the GPL and/or LGPL. Almost none of these companies, even if an offer for source code is made, provide CCS.

\n

This talk will look both to the past and future as we investigate software rights and freedoms of the average consumer, and how we reached this difficult situation. Attendees can learn the history of copyleft and its enforcement, and leave with an understanding of how much work remains and what individuals can do to make a real impact on the rights of users under copyleft.

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": { + "@id": "6385", + "@organization": "Software Freedom Conservancy", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2023/06/Bradley_Kuhn_649e2b82f09ef649f346522a1c.jpeg", + "@bio": "\"Bradley M. Kuhn is the Policy Fellow and Hacker-in-Residence at Software Freedom Conservancy (SFC). Kuhn began his work in the software freedom movement as a volunteer in 1992, as an early adopter of Linux-based systems and contributor to various FOSS projects, including Perl. He worked during the 1990s as a system administrator and software developer for various companies, and taught AP Computer Science at Walnut Hills High School in Cincinnati. Kuhn\\u2019s non-profit career began in 2000, when he was hired by the Free Software Foundation (FSF). As FSF\\u2019s Executive Director from 2001\\u20132005, Kuhn led FSF\\u2019s GPL enforcement, launched its Associate Member program, and invented the Affero GPL. Kuhn began as SFC\\u2019s primary volunteer from 2006\\u20132010, and became its first staff person in 2011. Kuhn's work at SFC focuses on enforcement of the GPL agreements, FOSS licensing policy, and non-profit infrastructural solutions for FOSS. Kuhn holds a summa cum laude B.S. in Computer Science from Loyola University in Maryland, and an M.S. in Computer Science from the University of Cincinnati. Kuhn\\u2019s Master\\u2019s thesis discussed methods for dynamic interoperability of Free Software programming languages. Kuhn received the Open Source Award in 2012, and the Award for the Advancement of Free Software in 2021 \\u2014 both in recognition for his lifelong policy work on copyleft licensing and its enforcement.\"", + "@url": "https://www.sfscon.it/speakers/bradley-kuhn/", + "#text": "Bradley Kuhn" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b36b97c9ca8a4d757cfd6acacd15f203d3629", + "@unique_id": "2024day1event33", + "@bookmark": "1", + "@rating": "1", + "start": "13:20", + "duration": "00:15", + "title": "SPDXv3: Advancing Transparency in Software", + "url": "https://www.sfscon.it/talks/spdxv3-advancing-transparency-in-software/", + "language": null, + "abstract": "A newly released standard for complete information", + "subtitle": "A newly released standard for complete information", + "description": "

SBOMs are a crucial tool for understanding the composition of software, which is particularly important in the context of managing security risks and licensing compliance. Recent regulatory efforts from, among others, the US and the EU, explicitly move towards requiring SBOM for each software delivery.
\nSPDX (System Package Data Exchange) is a freely available ISO standard that provides a set of specifications for communicating SBOM information. It offers a common format for companies and organizations to share important data accurately and efficiently.

\n

This presentation will delve into the details of the newly released version of SPDX, providing a comprehensive understanding of their importance in the software industry.

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": { + "@id": "4781", + "@organization": "Intel Corp.", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2019/11/Alexios_Zavras-1.jpg", + "@bio": "\"Alexios Zavras (zvr) is the Senior Open Source Compliance Engineer of Intel Corp. He has been involved with Free and Open Source Software since 1983, and is an evangelist for all things Open. Besides his duties in Intel, he is an active participant in a number of industry-wide efforts around compliance issues, like SPDX and OpenChain. He has presented in a number of national and international conferences, including Linux Foundation events like Open Source Leadership Summit and Open Source Summit, FOSDEM, CopyleftConf, academic conferences, etc.\\r\\n\\r\\nHe has a PhD in Computer Science after having studied Electrical Engineering and Computer Science in Greece and the United States.\"", + "@url": "https://www.sfscon.it/speakers/alexios-zavras/", + "#text": "Alexios Zavras" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b4ec2bcacd2a9c7dcd448844bb32e1f941734", + "@unique_id": "2024day1event37", + "@bookmark": "1", + "@rating": "1", + "start": "13:40", + "duration": "00:15", + "title": "(re)classifying FOSS licenses", + "url": "https://www.sfscon.it/talks/reclassifying-foss-licenses/", + "language": null, + "abstract": "New strategy for classifying licenses in a better way", + "subtitle": "New strategy for classifying licenses in a better way", + "description": "

There are many efforts trying to classify licenses, for different use cases such as checking compatibility or for complying with the license terms. Most of these efforts seem to, explicitly or implicitly, have a certain use case in mind.

\n

This project sets out to:
\nConsider provisioning case – how is the software provided to your user (e.g. binary distribution, SaaS, Web UI)
\nConsider use case – how is the software used (e.g. compiler, library)
\nTrust model – why should you trust the contributor of a classification or you should be able to exclude a contributor’s work etc
\nIdentify and generalize FOSS license clauses
\nIdentify and generalize when a clauses is triggered
\nDetermine how clauses are compatible with each other (a license clause matrix)
\nIdentify the clauses and triggers for each license

\n

Keeping track of how 100 licenses are compatible with each other will result in a matrix with 10 000 (100 x 100) values. This is hard to maintain. Extending to 200 licenses requires 40 000 values. By instead looking at the license clauses we will end up with a much smaller problem, assuming we identify 20-30 of them, which will result in a matrix of 400-900 values. This is big, but maintainable. Adding a new license will not increase the size of the (license clause) matrix, which means that our approach scales much better. From the license definitions and license clause matrix we can compile a license compatibility matrix (for fast compatibility lookup).

\n

This project sets out to provide to users:
\nA license obligation checklist for each provisioning case – for making compliance checks easy
\nA license compatibility matrix for each provisioning case – for fast compatibility lookup

\n

All data and source code will be released under FOSS licenses.

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": { + "@id": "962", + "@organization": "Software Compliance Academy & Sandklef GNU Labs", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2013/10/Henrik_Sandklef.jpg", + "@bio": "\"Henrik has been engaged, in various roles, in the Free and Open Source communitity for some 20 years. He has long experience in telecom, embedded and atuomotive industry as well as teaching at universities but now works only with FOSS.\"", + "@url": "https://www.sfscon.it/speakers/henrik-sandklef/", + "#text": "Henrik Sandklef" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b6b019cc331da4fa85549da2f8e1f08c0e157", + "@unique_id": "2024day1event41", + "@bookmark": "1", + "@rating": "1", + "start": "14:00", + "duration": "00:15", + "title": "Lessons from the EU’s Next Generation Internet Initiatives", + "url": "https://www.sfscon.it/talks/lessons-from-the-eus-next-generation-internet-initiatives/", + "language": null, + "abstract": "What We've Learnt From Looking At 500 Free Software Projects", + "subtitle": "What We've Learnt From Looking At 500 Free Software Projects", + "description": "

The FSFE is a consortium member of the EU’s Next Generation Internet initiatives (https://fsfe.org/activities/ngi/ngi.en.html). As part of our work there over the past 6 years, we have looked at hundreds of participating Free Software projects, to assist them with their legal and licensing questions, as well as to help them become REUSE compliant.

\n

This talk will speak about some simple trends in Free Software legal and licensing that we’ve observed over the years in independent Free Software projects and their developers, and how these affect aspects of the Free Software ecosystem.

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": { + "@id": "6064", + "@organization": "FSFE - Free Software Foundation Europe", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/form-speakers/gabriel-ku-wei-bin-f07d5b2b1edff04bfbca76cbfca2ec46.jpeg", + "@bio": "\"Gabriel Ku Wei Bin is a Legal Programme Manager at the Free Software Foundation Europe. Originally from Singapore, Gabriel is a former human rights and constitutional law researcher, as well as a former commercial lawyer. At the FSFE, Gabriel manages the FSFE\\u2019s legal projects, including its involvement in a number of European Commission funded projects and FSFE\\u2019s Legal Network of lawyers around the world involved in Free Software.\"", + "@url": "https://www.sfscon.it/speakers/gabriel-ku-wei-bin/", + "#text": "Gabriel Ku Wei Bin" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b820f887827b8689859e87cfad9eceedf5f28", + "@unique_id": "2024day1event45", + "@bookmark": "1", + "@rating": "1", + "start": "14:20", + "duration": "00:15", + "title": "The ZOOOM project: final results and future outlooks", + "url": "https://www.sfscon.it/talks/the-zooom-project-final-results-and-future-outlooks/", + "language": null, + "description": "

The ZOOOM project, concluding in Sept 2024, aimed to raise awareness about the role of open licenses (open source software, open hardware, and open data – 3Os) in intellectual property valorization. In this talk, we’ll summarize key results, share recommendations for businesses leveraging 3Os, and demonstrate tools developed to aid knowledge generators and supporting organizations in navigating the legal and business implications of 3Os. Additionally, we’ll discuss the future of ZOOOM and its potential impact on the industry and research.

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": { + "@id": "6981", + "@organization": "Fondazione Hub Innovazione Trentino", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Elisa_Morganti_66754f545a83a667553c87549e.jpeg", + "@socials": "[{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/elisa-morganti\\/\"}]", + "@bio": "\"Elisa Morganti, PhD, is a forward-thinking professional specializing in innovation and technology transfer. With expertise in bproject management, she contributes in driving research and innovation by facilitating technology transfer, fostering startup growth, and advancing research projects. As leader of the ZOOOM Project, she builds impactful collaborations and transforms ideas into tangible results. Her background includes a PhD in ICT and research in microfluidics and microsystems. Since 2013, she has managed research and innovation projects, focusing on knowledge transfer, and obtained the Project Manager qualification from ISIPM in 2018. Her experience includes preparing and managing European projects, innovation practices and links creation\"", + "@url": "https://www.sfscon.it/speakers/elisa-morganti/", + "#text": "Elisa Morganti" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b99099a666e3e43560c7fadd01a1c71f7d2c2", + "@unique_id": "2024day1event49", + "@bookmark": "1", + "@rating": "1", + "start": "14:40", + "duration": "00:15", + "title": "AI Law & Ethics: developing responsible AI systems", + "url": "https://www.sfscon.it/talks/ai-law-ethics-developing-responsible-ai-systems/", + "language": null, + "description": "

The aim of this talk is to explore AI law and ethics in developing responsible AI systems. It covers the forthcoming AI Act and EU regulations, focusing on accountability, risk management, and privacy-by-design. Through use cases, it shows how developers can ensure AI transparency, fairness, and compliance, balancing innovation with ethics. Attendees will gain insights for creating sustainable, ethical AI solutions.

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": [ + { + "@id": "5341", + "@organization": "PANETTA Studio Legale", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2021/09/Federico-Sartore.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/www.panetta.net\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/federico-sartore-85b1ab136\\/\"}]", + "@bio": "\"Partner at PANETTA Law Firm, CIPP\\/E, is a lawyer specialized in the field of IT and Technology Law, in particular with regard to Privacy & Data Protection aspects. Other main areas of activity consist in Cybersecurity, e-Identification and trust services, as well as technological development of undertakings. He regularly assists important national companies and multinational groups in structuring and managing complex personal data flows and architectures, advanced marketing and profiling programs, implementation of Big Data and Artificial Intelligence technologies, smart environments projects, biometrics data used for facilitative purposes. He also actively participated in specific projects in banking and finance, biomedical, media, prize draws and competitions and telecommunications. Associate and then Senior Associate of Panetta, Federico cooperates with the LawTech research group of Trento University and attends as speaker conferences and seminars on European Data Protection Law and legal issues of Big Data technologies. He currently provides his contribution to several law reviews and journals. He graduated with the thesis \\u201cBig Data: Privacy and Intellectual Property in a comparative perspective\\u201d. The thesis granted him the 1st price for the call IEEE Smart Cities Trento 2015.\"", + "@url": "https://www.sfscon.it/speakers/federico-sartore/", + "#text": "Federico Sartore" + }, + { + "@id": "7276", + "@organization": "Panetta Consulting Group - DEXAI", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/10/Francesco_Vadori_66fe4f642ee2366fe7b121c5bc.jpeg", + "@bio": "\"Francesco is an expert in criminal law, artificial intelligence, project management, and the socio-legal implications of new technologies, he plays a key role in developing and optimizing internal processes at Panetta Group. His focus extends to artificial intelligence and cybersecurity, and since 2023, he has been collaborating with DEXAI.\\r\\n\\r\\nIn addition to supporting management in the operations of Panetta Consulting\\u2019s affiliated companies and the development of the group's digital products, he collaborates with major multinational groups in the development and management of complex personal data flows and architectures, as well as technologies based on artificial intelligence and big data analytics.\\r\\n\\r\\nOver the years he has presented three research projects: the first on the application of complex systems theory to develop a scientific definition of law; the second on the development of AI-based systems for calculating the effectiveness of a legal system; and the third on robotics and the adoption of "tokku zones" for the revival of underdeveloped areas.\\r\\n\\r\\nHe loves music, cinema, gaming, sports, and is deeply fascinated by robotics, aerospace, and artificial intelligence.\"", + "@url": "https://www.sfscon.it/speakers/francesco-vadori/", + "#text": "Francesco Vadori" + } + ] + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59baf9af0e92818e9032f40ce86324132f1286f", + "@unique_id": "2024day1event53", + "@bookmark": "1", + "@rating": "1", + "start": "15:00", + "duration": "00:15", + "title": "Impact and Innovation: The Crucial Role of OSPOs in Shaping a More Sustainable Capitalism", + "url": "https://www.sfscon.it/talks/impact-and-innovation-the-crucial-role-of-ospos-in-shaping-a-more-sustainable-capitalism/", + "language": null, + "description": "

In an era where sustainability and responsible innovation are not just valued but expected, Open Source Program Offices (OSPOs) stand at the forefront of a transformative wave that merges open innovation with sustainable business practices. This session explores the pivotal role of OSPOs in fostering open innovation environments that not only drive technological advancement but also align with the principles of impact-oriented capitalism

\n

We will delve into how OSPOs can leverage open source ecosystems to catalyze change within their organizations, promoting not just compliance and security but also environmental, social, and governance (ESG) goals. Through case studies and practical insights, attendees will learn how integrating OSPO strategies with corporate sustainability objectives can create a powerful synergy that propels companies toward a more ethical and profitable future.

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": { + "@id": "4062", + "@organization": "Seacom Srl", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2017/10/Stefano_Pampaloni.jpg", + "@socials": "[{\"site\":\"http:\\/\\/www.seacom.it\\/\"}]", + "@bio": "\"He has created its first Internet Service Provider in 1995, implementing the entire infrastructure for delivering services through Open Source software. Over the years he founded several \\\"Internet Company\\\" including a telephone company. Thanks to these experiences he has gained a wealth of technical and managerial knowledge, especially in the field of communication and collaboration systems on IP networks. Since 2005 he has been a director of Seacom srl, who has become a distributor for Zimbra Italy and one of Europe's most accredited companies for the implementation of this solution in a few years. As an ever-convincing free software supporter, it has a pragmatic vision of OS software-related business models that best combine the benefits of collaborative development with the needs in Business scope.\"", + "@url": "https://www.sfscon.it/speakers/stefano-pampaloni/", + "#text": "Stefano Pampaloni" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59bc5c59fab1d32f25c7ee965881e6e3c478e35", + "@unique_id": "2024day1event57", + "@bookmark": "1", + "@rating": "1", + "start": "15:20", + "duration": "00:15", + "title": "From Personalized to Programmed", + "url": "https://www.sfscon.it/talks/from-personalized-to-programmed/", + "language": null, + "abstract": "The Dilemma of AI Customization", + "subtitle": "The Dilemma of AI Customization", + "description": "

When considering the core values of mass customization, such as individual expression, fun in co-creating, and creativity, AI may introduce disadvantages, potentially leading to the homogenization of experiences. This lightning talk aims to explore the potential risks and drawbacks of utilizing AI in mass customization, highlighting the tension between leveraging technology for customization and preserving the unique human elements that form the foundation of personalized experiences. Could the reliance on algorithms diminish the consumer’s role in the creative process? If so, it might challenge the essence of what makes mass customization truly unique and innovative.

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": { + "@id": "6376", + "@organization": "South Tyrol Business School", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2023/06/Thomas_Aichner_649dfb2c80e4c649dfc11df940.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/www.business-school.bz\\/\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/aichner\\/\"}]", + "@bio": "\"Prof. Dr. Thomas Aichner currently serves as the Scientific Director of South Tyrol Business School. Before taking on this position, he spent three years as Assistant Professor at Alfaisal University in Riyadh, and two years as Associate Professor at John Cabot University in Rome. He holds a joint PhD in Management Engineering from the University of Padova and a Dr. rer. pol. in Business Administration with a focus on Marketing from Berlin\\u2019s ESCP Business School, with the special mention of Doctor Europaeus. His research is primarily focused on country of origin, mass customization, digital management, and artificial intelligence.\"", + "@url": "https://www.sfscon.it/speakers/thomas-aichner/", + "#text": "Thomas Aichner" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59bdbb943402cda919397682bc66902b6081c7e", + "@unique_id": "2024day1event61", + "@bookmark": "1", + "@rating": "1", + "start": "15:40", + "duration": "00:15", + "title": "Fostering Innovation in IT Businesses through Open Source Software Involvement", + "url": "https://www.sfscon.it/talks/fostering-innovation-in-it-businesses-through-open-source-software-involvement/", + "language": null, + "description": "

All IT companies depend on free and open source software to some extent. Once they reach a certain size, they spontaneously become supporters of the projects on which they base their business. This happens because of first order consequences: my business depends on it, if I help it strive, my business will benefit.
\nIn this talk, we will address the second-order consequences of software engineers interacting with open source projects, and show why dedicating internal resources to this activity is an effective strategy for enabling the discovery of new or modified (software) entities, which is the prerequisite for innovation.
\nThe benefits are visible for companies of any size, even if their business does not depend on a specific project to which they could contribute: compelling arguments will be presented to motivate business owners to encourage their IT staff to engage in open source activities (and to developers to convince their bosses).

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": { + "@id": "889", + "@organization": "Freelancer", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2013/10/Daniele_Gobbetti_col.jpg", + "@socials": "[{\"site\":\"https:\\/\\/danielegobbetti.it\\/\"}]", + "@bio": "\"Daniele Gobbetti is a freelancer who works with small and medium-sized IT companies to help them manage complex technical projects. He's an information engineer with several years of experience in CTO and CEO roles.\\r\\nA passionate open source developer and curious person, he's happy to be called a hacker. He is an active member of the Gadgetbridge core development team and co-ordinated the project response to a DMCA complaint.\"", + "@url": "https://www.sfscon.it/speakers/daniele-gobbetti/", + "#text": "Daniele Gobbetti" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59bf1b14e7550db263ff8a4c2618502fcc85f1b", + "@unique_id": "2024day1event65", + "@bookmark": "1", + "@rating": "1", + "start": "16:00", + "duration": "00:15", + "title": "Tackling Openwashers, Freeloaders and Cuckoos", + "url": "https://www.sfscon.it/talks/tackling-openwashers-freeloaders-and-cuckoos/", + "language": null, + "abstract": "How to safeguard the Free Software market against unfair competition", + "subtitle": "How to safeguard the Free Software market against unfair competition", + "description": "

Companies that produce and sell Free Software face a problem: some competitors use unethical and destructive means to compete, making their products cheaper and winning bids. This kind of market behaviour is increasingly becoming a problem for Free Software producers.

\n

Destructive practices include marketing proprietary software under the guise of being Free Software, whether by using free/open wording, by introducing new licences that falsely appear to be free, or by imposing additional barriers that make it more difficult to use the freedoms offered by Free Software.

\n

Other competitors sell Free Software products without contributing to their development and maintenance, profiting from the work of others but giving nothing back to the community. This allows them to offer low prices while raising the costs of maintenance for the original manufacturers. For some players, there seems to be no limit to their creativity when it comes to undercutting competitors and winning bids.

\n

The Free Software Foundation Europe has been analysing these and other problematic market practices over the last few years. In this talk we will take a closer look at them and show why they harm Free Software manufacturers and the Free Software ecosystem. We will then discuss ways to limit the success of such practices.

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": { + "@id": "6622", + "@organization": "FSFE - Free Software Foundation Europe ", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2023/10/Johannes_Naeder.png", + "@bio": "\"Johannes N\\u00e4der works with the Free Software Foundation Europe, contributing to the Public Money? Public Code! framework.\\r\\nJohannes holds a M.A. in Literature and History and is part of the Free Software Foundation Europe's policy team. He researched and published a book on Open Access and free licensing in the scientific community. Johannes has worked as a net politics referent for several Members of Parliament with a focus on digital freedom, privacy and Free Software. He is also experienced in historical-political education. At FSFE, he contributes to the Public Money? Public Code! framework as Senior Policy Project Manager.\"", + "@url": "https://www.sfscon.it/speakers/johannes-nader/", + "#text": "Johannes Näder" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c0770d7a063acca1f818bd281920b63f64cee", + "@unique_id": "2024day1event69", + "@bookmark": "1", + "@rating": "1", + "start": "16:20", + "duration": "00:15", + "title": "Web Accessibility is actually well-forgotten old", + "url": "https://www.sfscon.it/talks/web-accessibility-is-actually-well-forgotten-old/", + "language": null, + "description": "

Trends are cyclical, even in the tech world. A few years ago, everyone was talking about D&I in the workplace. This season, web accessibility absolutely occupies the first lines of code. How is it shown? Let’s talk about it – many do not understand how to implement it in their project.

\n

First, relax. This is a really complex topic that requires not only a well-created website, but also communication with real users who cannot fully use the Internet, for example, without a screen reader.

\n

A checklist that will convince you to try implementing WA into your application:

\n

◦ What can be adapted for WA?
\n◦ How is WA testing done?
\n◦ How to use AI in WA?

\n

If we haven’t convinced you, then look at WA from the point of view of strengthening your personal brand in the market.

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": [ + { + "@id": "6937", + "@organization": "Selfemployment", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Sofia_Etingof_66646aeec895466646fdd93dce.jpeg", + "@bio": "\"My name is Sofia. I have a bachelor's degree in sociology.\\r\\n\\r\\nI have been researching D&I for more than five years, worked in various social projects in Moscow, as a content manager on Instagram and a journalist:\\r\\n\\r\\n\\u2043 conducted interviews with top managers of large companies on the topic of supporting women in the workplace. For example, Boiron, L'Or\\u00e9al, Cartier, Philip Morris International.\\r\\n\\r\\n\\u2043 helped in organising one of the largest forums about women, Woman Who Matters\\r\\n\\r\\n\\u2043 helped organise a children's lecture on the topics of inclusivity, tolerance and equality for children at Kidzania as part of the first diversity and inclusion association in Russia.\"", + "@url": "https://www.sfscon.it/speakers/sofia-etingof/", + "#text": "Sofia Etingof" + }, + { + "@id": "5797", + "@organization": "Red Hat", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/form-speakers/juri-solovjov-99470f10372f7fce2d8b7a2c1bb75a79.jpeg", + "@socials": "[{\"facebook\":\"https:\\/\\/www.facebook.com\\/juras08\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/juri-solovjov\\/\"}]", + "@bio": "\"

ISTQB certified Software Quality Engineer with 4 years experience at Red Hat<\\/p>\\r\\nPreviously worked as a Front-End Developer\\r\\n\\r\\nOriginally came from Estonia, currently located in Brno, Czechia.\\r\\n\\r\\nStudied Telecommunications and Telecommunication Services at Tallinn University of Technology\"", + "@url": "https://www.sfscon.it/speakers/juri-solovjov/", + "#text": "Juri Solovjov" + } + ] + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c1d5ceac7e61662a2fdc5880356a97fe5a3ad", + "@unique_id": "2024day1event73", + "@bookmark": "1", + "@rating": "1", + "start": "16:40", + "duration": "00:15", + "title": "LibreOffice as JavaScript idiomatic WebWidget + Library", + "url": "https://www.sfscon.it/talks/libreoffice-as-javascript-idiomatic-webwidget-library/", + "language": null, + "abstract": "Making LibreOffice a native part of the web, using FOSS for highly customizable office document handling in the browser, based on WASM.", + "subtitle": "Making LibreOffice a native part of the web, using FOSS for highly customizable office document handling in the browser, based on WASM.", + "description": "

LibreOffice can be highly integrated into desktop and server applications and we wanted to make this also possible for web apps. Running fully client side with Web Assembly, LibreOffice can now be used and customized by a JavaScript idiomatic API, becoming an easy usable component for web development. With this Free Software opens the door to a completely different approach for bringing office document handling into the browser, then from what’s known from Google Docs and Co.. Use cases may be the integration of widgets with rich text documents, including classic desktop macros, into browser based applications or enabling JavaScript to interact live with values in spreadsheets. But LibreOffice can also work as background WASM library, converting documents from and to all supported formats like ODF (ODT, …), MS formats (DocX, XlsX, Doc, …), PDF or HTML, while applying custom conversion filters for things like macro sanitization.

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": { + "@id": "7047", + "@organization": "allotropia software GmbH", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Moritz_Duge_667ed46099254667ed5fa8b6dc.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/blog.allotropia.de\\/\"},{\"mastodon\":\"https:\\/\\/norden.social\\/@kolAflash\\/\"},{\"twitter\":\"https:\\/\\/twitter.com\\/AllotropiaEN\"}]", + "@bio": "\"Moritz is working at Allotropia as Senior Developer & Relations Lead for ZetaOffice-JS, to bring LibreOffice into web development. Free Software communities, hacker culture & conferences have been a part of his life since 20+ years and he has an extensive history of DevOps and multilingual programming experience. He likes to use his favorite rock solid Debian GNU\\/Linux to do everything from running webservers to development to gaming, including SuperTuxKart ;-) And as a student researcher in Hamburg he build multicast technology on OpenWRT. Also he's worked many years with all kinds of FOSS as Leading Developer & Technical Product Manager for IT security solutions, so he also has a strong focus towards keeping systems safe.\"", + "@url": "https://www.sfscon.it/speakers/moritz-duge/", + "#text": "Moritz Duge" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c3393b866dee417ceabc9040eb559b34ff325", + "@unique_id": "2024day1event77", + "@bookmark": "1", + "@rating": "1", + "start": "17:00", + "duration": "00:15", + "title": "Using software tools and AI to audit e-commerce food regulations", + "url": "https://www.sfscon.it/talks/using-software-tools-and-ai-to-audit-e-commerce-food-regulations/", + "language": null, + "description": "

Selling food products on a website or e-commerce platform in Italy is subject to the Food Information of Consumers (FIC) regulations. These regulations dictate mandatory information that must be communicated on the product page, with fines for non-compliance. In this talk, we will cover the key guidelines and legal requirements, and demonstrate how we can use software tools and artificial intelligence to check large quantities of product listings for discrepancies. Join us to learn how to streamline the process of verifying food information and enhance consumer trust.

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": { + "@id": "1666", + "@organization": "Catch Solve", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2013/10/davide_montesin.jpg", + "@socials": "[{\"linkedin\":\"www.linkedin.com\\/in\\/davidemontesin\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/company\\/catch-solve\"},{\"facebook\":\"https:\\/\\/www.facebook.com\\/CatchSolve\"},{\"site\":\"https:\\/\\/www.catch-solve.tech\\/\"}]", + "@bio": "\"

Davide Montesin is the CEO of a Start-up called Catch Solve, which is situated in NOI Techpark in Bolzano Bozen, South Tyrol. The Start-up - founded in 2019 - is an integrated platform that monitors the quality of apps, websites and digital services and to find useful resources to solve software bugs easily, quickly and time efficiently.<\\/p>\\r\\n

The South Tyrol native, currently living in Bolzano \\u2013 Bozen, has a great passion for programming and open source \\/ free software and has a 20 year-long experience in participating and leading software projects for the public administration, private companies and the tourism sector.<\\/p>\"", + "@url": "https://www.sfscon.it/speakers/davide-montesin/", + "#text": "Davide Montesin" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c4b55ffa99770eee4de91ff503bfba55dc288", + "@unique_id": "2024day1event81", + "@bookmark": "1", + "@rating": "1", + "start": "17:20", + "duration": "00:15", + "title": "Tag manager", + "url": "https://www.sfscon.it/talks/tag-manager/", + "language": null, + "description": "

Presentation of our tool, which is an free alternative to Google Tag Manager and also helps manage cookie banners.

\n

Features:
\n– code injector
\n– code templating
\n– cookie banner manger

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": { + "@id": "7043", + "@organization": "Qbus", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Sandro_Antonucci_667ec273eacc0667ecbaae4ff1.jpeg", + "@bio": "\"I have a degree in Geology, over the years I became passionate about computer science, studying as a freelancer until it became my profession. For years I have been collaborating with Qbus srl as a web developer. In addition to this, I specialized in PHP and Python languages where I gained experience in various open-source projects.\"", + "@url": "https://www.sfscon.it/speakers/sandro-antonucci/", + "#text": "Sandro Antonucci" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c63aaf9490baf651be4c8cf569d85160c172d", + "@unique_id": "2024day1event85", + "@bookmark": "1", + "@rating": "1", + "start": "17:40", + "duration": "00:15", + "title": "State of Microsoft Windows Refund (2024)", + "url": "https://www.sfscon.it/talks/state-of-microsoft-windows-refund-2024/", + "language": null, + "abstract": "Getting a Refund of your Microsoft Windows License - present and future", + "subtitle": "Getting a Refund of your Microsoft Windows License - present and future", + "description": "

If you are a lover of the Free Software movement you probably already tried something else than Microsoft Windows on a computer.

\n

What you may not know, is that computer resellers usually charge end-users with the Fee of the Microsoft Windows License, even before you accept the Microsoft Terms of Services, and even if you completely want to uninstall Windows from your computer.

\n

This is a critical Tech Neutrality issue that fuels non-European proprietary software houses. What to do?

\n

– heritage of Luca Bonissi against Big Tech(s)
\n– current status and problems
\n– opportunities in Europe, and partnership between Free Software Foundation Europe and Italian Linux Society.

\n

Thanksgiving to community members who tried the procedure, and simplifying that procedure.

", + "track": { + "@color": "#25a2ea", + "#text": "Ethics, Policy, Legal & Economics" + }, + "category": "Ethics, Policy, Legal & Economics", + "type": "Ethics, Policy, Legal & Economics", + "track-url": "https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/", + "persons": { + "person": { + "@id": "7266", + "@organization": "Italian Linux Society", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/09/Valerio_Bozzolan_66f6fafd7cc5666f70ce9ca62f.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/ils.org\\/info\\/\"},{\"mastodon\":\"https:\\/\\/mastodon.uno\\/@boz\"}]", + "@bio": "\"President of Italian Linux Society. Tech commission in Wikimedia Italy. Open source consultant for Wikimedia Switzerland. OpenStreetMap active contributor. Phorge.it (ex Phabricator) co-maintainer.\"", + "@url": "https://www.sfscon.it/speakers/valerio-bozzolan/", + "#text": "Valerio Bozzolan" + } + }, + "bookmark": "1", + "rating": "1" + } + ] + }, + { + "@name": "Auditorium (A2)", + "event": { + "@id": "670d1b59a6f8fa0f2cd9aa0468cf94be12dcf7ee72afb", + "@unique_id": "2024day1event97", + "@bookmark": "0", + "@rating": "0", + "start": "10:30", + "duration": "00:30", + "title": "Ada & Zangemann", + "language": null, + "track": { + "@color": "#a8a8a8", + "#text": "Side Event - School Reading" + }, + "category": "Side Event - School Reading", + "type": "Side Event,School Reading", + "bookmark": "0", + "rating": "0" + } + }, + { + "@name": "Seminar 2", + "event": [ + { + "@id": "670d1b59a8718ec06704ae106c6fe150d929e76e489a0", + "@unique_id": "2024day1event6", + "@bookmark": "1", + "@rating": "1", + "start": "11:00", + "duration": "00:15", + "title": "Open Access for Museum Collections and Research", + "url": "https://www.sfscon.it/talks/open-access-for-museum-collections-and-research/", + "language": null, + "description": "

The digital era has revolutionised the way we access information and interact with it. Museums, as custodians of cultural and historical artefacts, can benefit substantially from this transformation. Open Access and FOSS can greatly increase the potential of museums for public outreach: enhance their educational impact and inspire new forms of cultural engagement and knowledge discovery. For example, by digitising collections and enabling Open Access for diverse audiences, accessibility barriers are eliminated and thousands of hidden treasures become available to both researchers and the wider public. Additionally, innovative data visualisations via FOSS platforms can reveal compelling insights into object collections and the research associated with them; Open Access can thus make complex research accessible and engaging to a broader audience. Through such practices, museums can democratise their activities and enrich the visitor experience. The process is not without obstacles; common challenges museums face in adopting Open Access policies are copyright issues, data privacy, and resource limitations.

\n

The presentation will discuss the aforementioned opportunities and issues currently emerging in the museum sector. The talk will be illustrated with examples from the Deutsches Museum in Munich, the world’s largest museum of science and technology.

", + "track": { + "@color": "#49a834", + "#text": "Data Spaces" + }, + "category": "Data Spaces", + "type": "Data Spaces", + "track-url": "https://www.sfscon.it/tracks/data-spaces-track-2024/", + "persons": { + "person": { + "@id": "6984", + "@organization": "Deutsches Museum (Munich)", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Artemis_Yagou_66759ae892f3d667ea7818e514.jpeg", + "@bio": "\"Artemis Yagou (she\\/her), PhD, is a historian of design and technology. She is an Associate at the Research Institute for the History of Science and Technology of the Deutsches Museum (Munich). Her main interests are the cultural history of technology, digital humanities, horology, construction toys, and Greek material culture (18th\\u201321st centuries). Her publications include: Fragile Innovation: Episodes in Greek Design History (2011); the edited volume Technology, Novelty, and Luxury (2022); Products, Users, and Popular Luxury in Early Modern Greece (2024); and Construction Toys: Education, Politics, and Technology (forthcoming, 2025). Her personal website is www.yagou.gr\"", + "@url": "https://www.sfscon.it/speakers/artemis-yagou/", + "#text": "Artemis Yagou" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59aa264ee41a43132c98f639b0c805757c21225", + "@unique_id": "2024day1event10", + "@bookmark": "1", + "@rating": "1", + "start": "11:20", + "duration": "00:15", + "title": "Journeying through Data Spaces – New Path to Interoperability?", + "url": "https://www.sfscon.it/talks/journeying-through-data-spaces-new-path-to-interoperability/", + "language": null, + "description": "

Data spaces play a pivotal role in advancing digitalisation and interoperability within and across different business domains, both on a national level and cross-borders. However, it’s not a new concept since its roots date back to 2005. The definition has evolved over the years and today it covers all four layers of interoperability defined by the European Interoperability Framework (EIF).

\n

Today, the term data space has several different definitions depending on whom you ask. Also, multiple international initiatives are working on data spaces to create common governance models, specifications, reference implementations, etc. The aim of this talk is to discuss the data space concept, different actors working on data spaces and their roles and responsibilities, and available specifications and building blocks.

", + "track": { + "@color": "#49a834", + "#text": "Data Spaces" + }, + "category": "Data Spaces", + "type": "Data Spaces", + "track-url": "https://www.sfscon.it/tracks/data-spaces-track-2024/", + "persons": { + "person": { + "@id": "5299", + "@organization": "Nordic Institute for Interoperability Solutions (NIIS)", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/form-speakers/petteri-kivimaki-f57d9d00b074c6ef26ac151d52a4c6b0.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/niis.org\"},{\"twitter\":\"http:\\/\\/www.twitter.com\\/pkivima\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/pkivimaki\\/\"}]", + "@bio": "\"Petteri Kivim\\u00e4ki is the CTO of the Nordic Institute for Interoperability Solutions (NIIS). NIIS is a non-profit association with the mission to ensure the development and strategic management of X-Road\\u00ae and other cross-border components for digital government infrastructure. The republics of Estonia, Finland and Iceland are members of NIIS.\\r\\n\\r\\nBefore joining the NIIS, Petteri worked as a technology architect in a leading global professional services company. From 2014 to 2017 Petteri worked at the Population Register Centre of Finland as an information systems manager. He was the technical lead of X-Road implementation project in Finland and was coordinating the joint open source development of the X-Road solution between Finland and Estonia.\\r\\n\\r\\nPetteri holds a Bachelor of Science in Software Engineering from the Metropolia University of Applied Sciences, Finland.\"", + "@url": "https://www.sfscon.it/speakers/petteri-kivimaki/", + "#text": "Petteri Kivimäki" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59ab8b6c9b475f096136c06c0d65d2405a73c6c", + "@unique_id": "2024day1event14", + "@bookmark": "1", + "@rating": "1", + "start": "11:40", + "duration": "00:15", + "title": "DOOF – an Open Source Orchestration Framework for Decentralized Consent Management", + "url": "https://www.sfscon.it/talks/doof-an-open-source-orchestration-framework-for-decentralized-consent-management/", + "language": null, + "description": "

DOOF stands for Data Ownership Orchestration Framework. It is a framework developed for NGI Trustchain Project within a broader Next Generation Internet scheme of the EU in order to address a lack of decentralization in consent management regarding users’ sharing of their data. The aim of DOOF is to revolutionize personal data governance and normalise the deployment of consent management and privacy enhancing technologies. It uniquely enables individuals to control their rights over data sharing, fostering greater trust and regulatory compliance, essential for building a resilient and transparent data economy.
\nDOOF targets the gap in current centralized consent management, where GDPR and Data Act demand seamless data exchange and regulatory compliance. Yet the sharing and consent management regarding users’ data is centralized – a responsibility of the data intermediary – which comes with great costs and liabilities.
\nWith DOOF, Ecosteer aims to separate and decouple the layer of physical data transferring from the layer of consent management. DOOF offers companies a framework that allows them to easily adopt Privacy Enhancing Technologies (PETs) for the actual sharing of data and enforcement of users’ decisions.
\nThe framework consists of a set of SDKs, libraries and a Smart Contract for decentralised consent management. The main component of the framework is a worker pipeline, consisting of extensible, plug-in processors. This pipeline contributes to the low-code movement, offering a framework that can be easily adapted to different business needs. Companies can easily build verticals on this existing framework by just extending some of its functionalities.
\nThis talk will focus on the concept of decentralized consent management as well as pipeline-based orchestration framework, outlining the process of creating a novel, re-usable and extensible open-source project.

", + "track": { + "@color": "#49a834", + "#text": "Data Spaces" + }, + "category": "Data Spaces", + "type": "Data Spaces", + "track-url": "https://www.sfscon.it/tracks/data-spaces-track-2024/", + "persons": { + "person": { + "@id": "7015", + "@organization": "Ecosteer", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Georgiana_Bud_667d76fcbf776667d7c1ea1bcd.jpeg", + "@bio": "\"Georgiana Bud is a software engineer passionate about secure distributed systems and resilient software. She holds the position of software developer at Ecosteer and is responsible for Ecosteer\\u2019s middleware components. With a Master\\u2019s Degree in Computer Science, she combines software development skills with a detail-oriented, analytical mindset. She has contributed to Ecosteer\\u2019s Open Source software in the domain of embedded software and in the DOOF project.\"", + "@url": "https://www.sfscon.it/speakers/georgiana-bud/", + "#text": "Georgiana Bud" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59acecdc03325da9f5417728e733031c0e882bd", + "@unique_id": "2024day1event18", + "@bookmark": "1", + "@rating": "1", + "start": "12:00", + "duration": "00:15", + "title": "Accelerating territory’s development through Open Data", + "url": "https://www.sfscon.it/talks/accelerating-territorys-development-through-open-data/", + "language": null, + "abstract": "Open Data Hub and south tyrolean examples", + "subtitle": "Open Data Hub and south tyrolean examples", + "description": "

In recent years, Open Data has revolutionized the way governments, companies and individuals access and use information. The openness of public and private data represents a milestone on the path towards a more transparent, participatory and competitive society.
\nOpen Data represent a resource for society and businesses and contribute to the development of a territory. This added value manifests itself in various forms, including transparency and democratic participation, technological innovation, economic development and improved services.
\nThe talk will focus on specific case studies from the Open Data Hub in the Autonomous Province of Bolzano, a region which has shown a strong commitment to the adoption and promotion of Open Data.
\nThrough the analysis of these cases, the aim is to demonstrate how the initiatives based on Open Data have led to concrete and tangible results, offering useful and applicable insights also in extra-regional contexts.

", + "track": { + "@color": "#49a834", + "#text": "Data Spaces" + }, + "category": "Data Spaces", + "type": "Data Spaces", + "track-url": "https://www.sfscon.it/tracks/data-spaces-track-2024/", + "persons": { + "person": { + "@id": "7145", + "@organization": "NOI Techpark", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/07/Luisa_Marangon_66a76ef939ad166a774689cd37.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/www.instagram.com\\/biondomelograno\\/\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/luisamarangon\\/\"}]", + "@bio": "\"Luisa Marangon is responsible for Customer Management & Cooperations at NOI Techpark.\\r\\nShe is the bridge between potential new clients, partners, and network members, both locally and globally.\\r\\nWith a background in multilingual communication in NPOs and a Degree in business administration, her 10+ years expertise spans european project management, internationalization, customer care, event management, hackathons, and digitalization.\"", + "@url": "https://www.sfscon.it/speakers/luisa-marangon/", + "#text": "Luisa Marangon" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59aeb90a7ca5894f62ee981f08dbcca40a0117f", + "@unique_id": "2024day1event22", + "@bookmark": "1", + "@rating": "1", + "start": "12:20", + "duration": "00:15", + "title": "Sensor Things API QGIS core provider", + "url": "https://www.sfscon.it/talks/sensor-things-api-qgis-core-provider/", + "language": null, + "description": "

Sensor Things API (STA, in short), is an OGC specification for storing and retrieving (timeseries of) Sensor Observations.

\n

FROST-Server, developed by Fraunhofer IOSB, is one of the most consolidated implementations of STA with a very detailed documentation and a lot of background information. The implementation includes a REST endpoint to insert, modify and retrieve STA entities with a query language based on OASIS Odata URL patterns and query options.

\n

A QGIS experimental plugin, developed by Deda Next srl in 2022 and implemented in python within the EU project Air-Break, is currently available to connect to STA-compliant endpoints and retrieve sensor data (e.g. European Air Quality data from this endpoint). The plugin has an embedded data provider which is currently designed to retrieve sensors’ locations as geometrical features and then request the time series of observations for specific locations.

\n

However, in order to offer support to a wider range of use cases and more complex queries on STA model entities, Faunalia and DedaNext (funded by BRGM) started to plan for a dedicated STA data provider for GIS: a development group was set up involving the QGIS community, formal acceptance of the proposal was sought within the QGIS community (QEP #257) and possible development options for the provider (ex: python vs C++) were analyzed. As STA is an OGC standard, it seemed appropriate to implement it in C++ as a core element of QGIS.

\n

Development has therefore been carried out in close interaction with the QGIS developer community with the focus on supporting complex STA queries, implementing among other things:

\n

– expansion of relations among model entities;
\n– independent attribute filtering and sorting on all entities;
\n– efficient data caching to limit unnecessary data transfers;

\n

This new core element is available from QGIS version 3.37 (currently only available as nightly release).

\n

Finally, plans are underway to develop a new version of the QGIS STA plugin (originally developed by Deda Next within project AirBreak) focused on data exploration and analysis that will be able to leverage on the newly released core STA data provider to support a wider range of use cases, such as:

\n

– Time series analysis: This is the case of the old STA plugin. Fetch Locations, show them on the map. Then, upon selection of one location, fetch all related Things and Datastreams, and finally, fetch the Observations of the desired Datastream to be shown in a table or plot;
\n– Space-time series analysis: Given a selected set of Datastreams from a moving sensor, get all the FeaturesOfInterest of those Datastreams and plot them on the map, so to have a view of the path of the moving sensor and a hold on its values on every part of that path;
\n– Monitoring and inspection: Fetch all the latest observations of all Datastreams (or a selection based on the ObservedProperty) and show these at their Locations, styled by the result of the latest Observation of a given ObservedProperty. Then, in a second phase (eg. if a value is over a threshold), inspect the full timeseries of that one Datastream.
\n– Tracking of moving things: Show all Things with their current Location and their HistoricalLocations with the Temporal Controller (time slider).

", + "track": { + "@color": "#49a834", + "#text": "Data Spaces" + }, + "category": "Data Spaces", + "type": "Data Spaces", + "track-url": "https://www.sfscon.it/tracks/data-spaces-track-2024/", + "persons": { + "person": [ + { + "@id": "4960", + "@organization": "Faunalia", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2020/10/matteo-ghetta.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/www.faunalia.eu\\/en\\/intro\"},{\"facebook\":\"https:\\/\\/www.facebook.com\\/faunaliagis\\/\"},{\"twitter\":\"https:\\/\\/twitter.com\\/ghtmtt\\/\"}]", + "@bio": "\"Matteo Ghetta is a python developer of Faunalia, a company based in Tuscany entirely focused on Open Source, especially on GIS software.\\r\\n\\r\\nHe has worked as python developer at Scuola Superiore Sant'Anna in Pisa within the FREEWAT project. He is currently the coordinator of the QGIS documentation team and actively collaborates with many Open Source communities.\"", + "@url": "https://www.sfscon.it/speakers/matteo-ghetta/", + "#text": "Matteo Ghetta" + }, + { + "@id": "6985", + "@organization": "Deda Next Srl", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/09/Luca_Giovannini_6675a48c0f2aa66e93d24ac8d7.jpeg", + "@socials": "[{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/lucagio\"}]", + "@bio": "\"I am passionate for data elaboration, analysis and visualization, especially if related to maps and geospatial data!\\r\\nI have an international work experience and I am sociable, curious, result-driven and inquisitive by nature.\"", + "@url": "https://www.sfscon.it/speakers/luca-giovannini/", + "#text": "Luca Giovannini" + } + ] + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b07a45a182a6a4e175fb98f9ace32c1945ee3", + "@unique_id": "2024day1event26", + "@bookmark": "1", + "@rating": "1", + "start": "12:40", + "duration": "00:15", + "title": "EO4MULTIHAZARDS Web Application", + "url": "https://www.sfscon.it/talks/eo4multihazards-web-application/", + "language": null, + "description": "

The EO4MULTIHA project (https://eo4multihazards.gmv.com/), funded by the European Space Agency, aims at developing an open database gathering and harmonizing event information coming from already existing event databases to support multi-hazard(-risk) research.
\nTo pursue this aim, this project which has been developed in the EURAC research, Center for Sensing Solutions, presents a comprehensive web application designed to analyze and visualize multi-hazard events, developed using Django and PostgreSQL. Leveraging the strengths of open-source technologies, the application provides a robust platform for researchers, policymakers, and the public to access and understand the complexities of multi-hazard scenarios. The main parts of this web application is explained in the following paragraphs:

\n

(i) The core of the application is built with Django, a high-level Python web framework known for its rapid development capabilities and clean, pragmatic design. PostgreSQL, a powerful and scalable open-source relational database system, ensures efficient data storage and management. Together, these technologies offer a reliable and flexible foundation for handling diverse and large datasets.

\n

(ii) To visualize the events, Leaflet Map which is an open source contributor to the OpenStreet Map has been used.

\n

(iii) To populate the database, the application exploits various RESTful APIs, integrating data from multiple sources, including satellite imagery, climatological records, in-situ measurements, and relevant statistical data. This multi-source approach allows for a comprehensive characterization of risks, exposures, and susceptibilities associated with multi-hazard events benefiting from the Open Data Standards such as OGC Standard.

\n

(iiii)Key features of the application include spatial and temporal filtering of events, cross-linking of data sets for enhanced reusability, and compliance with open standards such as RESTful APIs and OGC standards. The platform is designed to be expandable, with the potential to incorporate additional locations and datasets in the future.

\n

By providing an accessible online platform, this web application aims to support the understanding and analysis of multi-hazard events, facilitating informed decision-making and effective disaster management strategies. The use of open-source technologies and the integration of diverse data sources underscore the project’s commitment to innovation, scalability, and community-driven development.

", + "track": { + "@color": "#49a834", + "#text": "Data Spaces" + }, + "category": "Data Spaces", + "type": "Data Spaces", + "track-url": "https://www.sfscon.it/tracks/data-spaces-track-2024/", + "persons": { + "person": { + "@id": "7046", + "@organization": "Eurac Research, Center for Sensing Solutions", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Mahtab_Niknahad_667ecf6d476cf667ee40d8e71f.jpeg", + "@socials": "[{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/mahtab-niknahad-729443a8\\/\"}]", + "@bio": "\"Mahtab obtained her BSc degree in Computer Engineering from Isfahan University in Iran in 2016. In 2019, she moved to Italy to pursue a Master's degree at the Polytechnic University of Turin, specializing in Computer Engineering with a focus on Data Analytics. She completed her Master's thesis at the University of Tulsa in the United States, where she explored integrating deep metric learning into predictive models.\\r\\n\\r\\nWith three years of experience in software engineering, Mahtab has developed expertise in creating web and Android applications. After earning her Master's degree, she sought to blend her software engineering skills with her knowledge of machine learning and artificial intelligence. This led her to undertake an internship as a machine learning engineer at Primo Caredent Group in Turin.\\r\\n\\r\\nCurrently, Mahtab works as a junior researcher at EURAC Research, where she focuses on applying novel predictive and classifying machine learning models in the agricultural and environmental fields.\\r\\n\\r\\nTechnical Skills: Python, Django, Scikit-learn, PyTorch, TensorFlow, NumPy, Pandas, Java, Android, React.js\"", + "@url": "https://www.sfscon.it/speakers/mahtab-niknahad/", + "#text": "Mahtab Niknahad" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b25220fd8b2a2edf2ded6a8dc3e7b79ef22ec", + "@unique_id": "2024day1event30", + "@bookmark": "1", + "@rating": "1", + "start": "13:00", + "duration": "00:15", + "title": "BASIC CORE South Tyrol", + "url": "https://www.sfscon.it/talks/basic-core-south-tyrol/", + "language": null, + "abstract": "A project to solve the topographical complexity of the National Spatial Data Catalogue", + "subtitle": "A project to solve the topographical complexity of the National Spatial Data Catalogue", + "description": "

The project has its roots in a precise and simplified cartographic updating methodology introduced by the Consortium of Municipalities of the Province of Bolzano in the early 2000s. This methodology, which was consolidated over the years, could no longer be applied following the adoption of the Territorial Data Catalogue (Ministerial Decree 10.11.2011 “Technical rules for defining the content specifications of geotopographic databases” and subsequent amendments) due to the complexity and articulation of the new national model. The primary objective of the project was to research and define a minimum set of information that could adequately describe the territory within the typical use context of the public administration, ensuring its sustainability in terms of the ability to keep it updated and aligned with the transformations of the territory. Simplifying the definition and understanding of the basic technical layer that every public administration producing geographic data must guarantee within their institutional activities for geotopographic databases is a fundamental step to adequately support territorial management. Lightened of the informational content already managed by the Provincial Administration within archives or sectoral Information Systems, and consequently already included in existing and consolidated maintenance and updating flows, as well as everything that can be considered three-dimensional data nowadays obtainable through faster and more accurate systems, the Basic Core (BC) specification was produced by reorganizing and simplifying the information levels contained in the National Territorial Data Catalogue with reference to the identified minimum subset of required information known as the National Core (NC). To make it practically usable, only the themes considered objectively useful and easily updatable were included in the Basic Core. Our presentation will outline the key points that enabled the design of the Basic Core content specification and illustrates the technological tools developed, as well as the automatic transformation and simplification procedures that led to the significant reduction in the number of object classes provided by the National Core (from 59 to only 23), demonstrating that the Basic Core project is not a merely theoretical exercise, but a practical and concrete application currently tested and successfully used in South Tyrol. The specifically developed Dashboard for managing, correcting and updating the provincial Geotopographic Database, built on the basis of this new simplified specification, will be explained in detail. This dashboard allows effective operation on every management aspect, including the crucial task of sharing maintenance responsibilities between the Provincial and Municipal levels, thus ensuring the full efficiency of this fundamental geographic base. Particular attention will be given to illustrating the guided editing functionality available directly from the online interface, as well as the options for creating and exporting QGIS projects. QGIS projects are designed to perform the most significant and advanced corrections and/or updates. We will conclude the overview of this innovative system with a demonstration of the processes for reimporting and validating the updated data. Finally, practical cases in which the Basic Core has been used will be presented, as well as future developments, already planned and those still under evaluation, that the system will receive in order to refine and make its use more robust.

", + "track": { + "@color": "#49a834", + "#text": "Data Spaces" + }, + "category": "Data Spaces", + "type": "Data Spaces", + "track-url": "https://www.sfscon.it/tracks/data-spaces-track-2024/", + "persons": { + "person": { + "@id": "6327", + "@organization": "Consorzio dei Comuni della Provincia di Bolzano", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2023/06/Edoardo_Scepi_649be56920cd2649be8920d87e.jpeg", + "@bio": "\"With a degree in Environmental Biology, I have worked for over 15 years in the international development cooperation sector in projects for environmental protection and systemic management of endangered natural areas. My main goal in any project in which I have participated has always been to use the data collected in the only (for me) useful and smart way. That is, draw practical and concrete information that would allow any \\\"system\\\" to be effectively managed and monitored. I dedicated myself to research and data collection activities in the field, development of relational databases, creation of decision support systems, software development and teaching\\/training of many stakeholders who could then continue and effectively replicate the various management approaches implemented. Thus, making the projects self-sustainable. My education as a biologist also enabled me to translate the \\\"scientific mindset\\\" so that more technical\\/managerial members, such as policymakers, for example, could concretely understand the results obtained and use them as a robust and solid basis for their final decisions. I have worked in many countries around the world, and this has allowed me to relate with so many different characters, but especially in regard to this I have realized my ability to work with the most diverse types of people and in the most diverse situations possible. I am curious beyond measure; for me, the most important thing is to understand the \\\"working mechanism\\\" of what I am dedicated to. Regardless of the topic or field. I am also sometimes a bit \\\"lunatic\\\", but very logical. I like to work together with a wide range of professionality and personalities, and I consider myself a good communicator. Furthermore, I am passionate about so many things, for sure too many, engineering, mechanics, computer science, photography, new technologies in general, but above all there is in me an absolute love for the nature that surrounds us. A source of calm as well as deep inspiration.\"", + "@url": "https://www.sfscon.it/speakers/edoardo-scepi/", + "#text": "Edoardo Scepi" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b3c1b02340e86f617d537e18a3bedd3650d4d", + "@unique_id": "2024day1event34", + "@bookmark": "1", + "@rating": "1", + "start": "13:20", + "duration": "00:15", + "title": "Sharing Connects People", + "url": "https://www.sfscon.it/talks/sharing-connects-people/", + "language": null, + "abstract": "The experience of Think Open at CIMeC", + "subtitle": "The experience of Think Open at CIMeC", + "description": "

Think Open is an Open Science initiative born within CIMeC in 2018 whose goal is to build a virtual space within which researchers at the Center can share different kinds of outputs from research, integrating and merging information from different sources and stages of the knowledge-building process. A number of achievements have been made over the years, both from the point of view of training (seminars, hands-on, courses for doctoral students, awards, etc.) and implementation of best practices (code and data sharing, adoption of free-software tools, etc.). Here we will describe how sharing open practices in everyday working routines foster connections between people, creating practice-based communities.

", + "track": { + "@color": "#49a834", + "#text": "Data Spaces" + }, + "category": "Data Spaces", + "type": "Data Spaces", + "track-url": "https://www.sfscon.it/tracks/data-spaces-track-2024/", + "persons": { + "person": { + "@id": "6974", + "@organization": "University of Trento", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Vittorio_Iacovella_6673f70abc3ed6673fc4f5bcf4.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/viacovella.github.io\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/vittorioiacovella\\/\"},{\"twitter\":\"https:\\/\\/x.com\\/V_Iacovella\"}]", + "@bio": "\"I work as full-stack technician for Think Open, the open science initiative of CIMeC - Center for Mind \\/ Brain Sciences at the University of Trento. There, I develop, promote and disseminate the adoption of open science practices within CIMeC cognitive neuroscience research community. I work to reduce the gap between the adoption of technical tools and the scientific purposes.\"", + "@url": "https://www.sfscon.it/speakers/vittorio-iacovella/", + "#text": "Vittorio Iacovella" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b54e56b76ae52f83ed15cf75879584e82d108", + "@unique_id": "2024day1event38", + "@bookmark": "1", + "@rating": "1", + "start": "13:40", + "duration": "00:15", + "title": "Hacking your (electric) car: the importance of Open Data", + "url": "https://www.sfscon.it/talks/hacking-your-electric-car-the-importance-of-open-data/", + "language": null, + "abstract": "Gathering information from the OBD (On Board Diagnostic) port of your car could be challenging", + "subtitle": "Gathering information from the OBD (On Board Diagnostic) port of your car could be challenging", + "description": "

Any car has a diagnostic connector from which you can gather and/or set data from the various ECU (Engine Control Unit) that are present in your car, such as odometer, temperatures, motor rotation speed, accelerator depression percentage, wheel angle, lights, and – in an electric car – information about battery, remain energy, charging/discharging power, etc.
\nThe big challenge is that the meaning of fathered data is usually not known and car manufacturers are reluctant to share this information.
\nThis talk will illustrate how to scan the available data and make reverse engineering in order to try to create a shared database containing (useful) car data and PIDs (Parameter IDs) from ECUs of your car.

", + "track": { + "@color": "#49a834", + "#text": "Data Spaces" + }, + "category": "Data Spaces", + "type": "Data Spaces", + "track-url": "https://www.sfscon.it/tracks/data-spaces-track-2024/", + "persons": { + "person": { + "@id": "6443", + "@organization": "Bonnix di Bonissi Luca", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2023/07/Luca_Bonissi_64a458f0ab1ce64a45c4406b45.jpeg", + "@bio": "\"Programmer and Free Software enthusiast. FSFE volunteer.\\r\\n\\r\\nHe graduated in computer science, focusing on low-level programming (embedded microcontroller, assembly, etc.). He approached to Free Software in 1996, with the VIM text editor, and later, he began experimenting with various distributions (Phat Linux, Red Hat, Knoppix) and eventually focused on Slackware, feeling it perfect either to better understand GNU\\/Linux systems or because it has by default everything needed for programming. Actually he is the maintainer of BonSlack distribution, a Slackware porting to various CPUs\\/systems (ARM, Alpha, HPPA, LoongArch64, MIPS, OpenRISC, PowerPC, RISC-V, S\\/390x, SH4, SPARC64), and he is a translator volunteer for the FSFE community.\"", + "@url": "https://www.sfscon.it/speakers/luca-bonissi/", + "#text": "Luca Bonissi" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b707665419bd3524cf3fe7b13200efd97691e", + "@unique_id": "2024day1event42", + "@bookmark": "1", + "@rating": "1", + "start": "14:00", + "duration": "00:15", + "title": "The Innovation Paradox", + "url": "https://www.sfscon.it/talks/the-innovation-paradox/", + "language": null, + "abstract": "Do you really know how to unleash and manage innovation?", + "subtitle": "Do you really know how to unleash and manage innovation?", + "description": "

In the era of the Fifth Industrial Revolution, leaders, innovators and pioneers design, generate, and shape future-proof organizations, driven by a meaningful purpose promoting social impacts, combining emerging technologies and new ways of collaborating and conceiving work. While the “why” is clear and quite declared by many, the “what” to do and the “how” to do it remain very nebulous and, in some cases, obscure. Those ones who lead innovation within an organization suffer the innovation paradox: must innovate without knowing what and how. Innovators and pioneers are often alone, without a framework and processes for an open innovation execution. How can we unlock and unleash innovation, ensuring that the actions taken are always driven by what is truly needed to evolve your organization?

", + "track": { + "@color": "#49a834", + "#text": "Data Spaces" + }, + "category": "Data Spaces", + "type": "Data Spaces", + "track-url": "https://www.sfscon.it/tracks/data-spaces-track-2024/", + "persons": { + "person": { + "@id": "6492", + "@organization": "Seedble / Symphonie Prime", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Andrea_Solimene_64ebb4482e10b667a85bc0f083.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/www.seedble.com\\/\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/andreasolimene\\/\"}]", + "@bio": "\"Strategy & Open Innovation Enabler | TEDx speaker | Ecosystem Builder | Startup Mentor | New Ways of Working expert | CoFounder blendX.io | Advisory Board Member Business Innovation Hub Impresapiens | CoDirector Founder Institute Italy | Lecturer | Writer | coAuthor Coalescence Innovation Framework |\"", + "@url": "https://www.sfscon.it/speakers/andrea-solimene/", + "#text": "Andrea Solimene" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b87a38cd1a13c976d89c13cfb25b74874213a", + "@unique_id": "2024day1event46", + "@bookmark": "1", + "@rating": "1", + "start": "14:20", + "duration": "00:15", + "title": "The FSFE Italy Project from Understanding to Testing", + "url": "https://www.sfscon.it/talks/the-fsfe-italy-project-from-understanding-to-testing/", + "language": null, + "abstract": "How I applied design-thinking to re-design the Italian Free Software Community", + "subtitle": "How I applied design-thinking to re-design the Italian Free Software Community", + "description": "

The role of Deputy Coordinator Italy within the Free Software Foundation Europe (FSFE) was born in 2022 out of the need of re-establishing the presence of the Foundation on the territory. I designed this three years experimental project together with the Free Software Lab of NOI Techpark with the value proposition of (re)designing the FSFE Italian Community.

\n

The project followed a human centric approach, moving along the five core stages of design-thinking. The goal of my talk is to describe the FSFE Italy project and the design-thinking approach adopted.

\n

The first year (Y1) served as the understanding phase: I got involved as an FSFE representative in the main communication channels used by the Free Software (FS) community on the territory. I conducted interviews with volunteers, associations’ heads and enthusiasts, took part into the main FS events organized on the territory, mapped all stakeholders (understanding-observing) and created my own point of view (POV). By the end of 2022 I had already became an established FSFE representative on the territory, having gathered inputs and ideas on how to kick off the community into year two (Y2). The goal of year two was to build on these new ideas (ideation) and put these thoughts into action (prototyping) by finding common goals and activities with the main FS associations active on the territory and signing Memorandum of Understandings, preparing the ground to test it in the third year (Y3). Guess what was the result?

", + "track": { + "@color": "#6b6b6b", + "#text": "Community Building" + }, + "category": "Community Building", + "type": "Community Building", + "track-url": "https://www.sfscon.it/tracks/community-building-track-2024/", + "persons": { + "person": { + "@id": "5960", + "@organization": "FSFE - Free Software Foundation Europe ", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/form-speakers/marta-andreoli-fa9c0b907059fd5f818d4012846bb14e.jpeg", + "@bio": "\"Marta is an experienced event, marketing & communications leader. She has an extensive background in events coordination & planning, agency management, and campaign development having worked for international brands in the cultural and outdoor sector.\\r\\n\\r\\nShe is currently collaborating with the Free Software Foundation Europe (FSFE) as the Deputy Coordinator Italy, focusing on strenghtening the existing Italian free software community and fostering its growth.\\r\\n\\r\\nMarta\\u2019s core competencies are based on combining people centric, innovative and a human centred approaches within an environment of radical collaboration. She is currently furthering her studies in this field of Design Thinking at Hasso-Plattner-Institut in Berlin.\\r\\n\\r\\nShe values free software due the integration of ideas of critical consumption, minimalism and sustainability. She believes that the choices we make in the fundamental issues of freedom in software are fundamental issues in our lives and in the way we are shaping the future of our society.\\r\\n\\r\\nHer outgoing personality and the experience developed in forging relationships in her previous roles underpins her approach as Community Manager.\\r\\n\\r\\nDue to her strong interests in sustainability and ecology, Marta is especially interested in the interplay of Free Software with other fields such as ecology and one of her future goals would be to conduct a research project about the impact of digital technologies on the physical environment and its contribution to the so called Sustainable Development Goals.\\r\\n\\r\\n\\u201cLittle drops make the mighty ocean\\u201d (sono le gocce che fanno il mare) is her motto.\"", + "@url": "https://www.sfscon.it/speakers/marta-andreoli/", + "#text": "Marta Andreoli" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b9ebab56265693ebdef42993aad09f2ef52d4", + "@unique_id": "2024day1event50", + "@bookmark": "1", + "@rating": "1", + "start": "14:40", + "duration": "00:15", + "title": "How to Create a Fearless Open Source Community", + "url": "https://www.sfscon.it/talks/how-to-create-a-fearless-open-source-community/", + "language": null, + "abstract": "Empowering Open Source through Psychological Safety", + "subtitle": "Empowering Open Source through Psychological Safety", + "description": "

In the fast-evolving landscape of open source projects, traditional norms of conformity often stifle innovation. The culture of “fitting in” and “going along” suppresses new ideas and critical perspectives. Drawing on my decade of community management experience, I will share how to eliminate fear and aggression, fostering psychological safety where creativity can thrive.

\n

Creating a sense of community is essential. When people feel welcomed, they are more likely to stay and contribute. Inclusivity is key to building a positive atmosphere. By making everyone feel valued, we can encourage collaboration and idea-sharing.

\n

We must move beyond the “Read the Manual” culture and establish a “No Stupid Questions” rule. This embraces curiosity and eliminates the stigma of asking questions, especially for newcomers. When people feel safe to ask questions without fear, they engage more deeply and contribute meaningfully.

\n

Creating a safe space for expression involves fostering a culture where it’s okay to share half-finished thoughts, ask unconventional questions, and admit mistakes without fear. When members feel they can be open, they are more likely to share innovative ideas.

\n

Constructive dissent is crucial for innovation. Encouraging respectful disagreement and valuing different perspectives drives the community forward and prevents stagnation.

\n

Avoiding the “ivory tower effect” is also important. Promoting transparency in the development process by openly communicating project goals, decisions, and challenges helps build trust and encourages participation.

\n

This session will provide practical insights and strategies to transform your open source community into a fearless hub of innovation. Together, we can create a culture where expressing ideas, asking questions, and admitting mistakes are safe, fostering an environment where creativity can flourish.

", + "track": { + "@color": "#6b6b6b", + "#text": "Community Building" + }, + "category": "Community Building", + "type": "Community Building", + "track-url": "https://www.sfscon.it/tracks/community-building-track-2024/", + "persons": { + "person": { + "@id": "6259", + "@organization": "Nethesis", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2023/06/Alessio_Fattorini_649160be773b36491626adab0e.jpeg", + "@bio": "\"I am a community manager who writes, particularly drawn to everything that encourages people to work and collaborate together \\u2764\\ufe0f\\r\\nAt Nethesis, I create communities to support business by connecting people and companies.\\r\\n- I am an evangelist and public speaker in Italy and abroad. I provide training on Corporate Leadership, Open Source, Community Management, and Teamwork.\\r\\n- Leveraging my experience with Digital Heroes Community and the NethServer project, I am especially focused on creating customer and product-oriented communities.\\r\\n- I work closely with developers and users, utilizing my technical background as a Linux SysAdmin and Support Specialist.\"", + "@url": "https://www.sfscon.it/speakers/alessio-fattorini/", + "#text": "Alessio Fattorini" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59bb4f9e4e3c860fdea7f57c1d3f6a6b50b514f", + "@unique_id": "2024day1event54", + "@bookmark": "1", + "@rating": "1", + "start": "15:00", + "duration": "00:15", + "title": "What the open source community means to me", + "url": "https://www.sfscon.it/talks/what-the-open-source-community-means-to-me/", + "language": null, + "abstract": "Some very personal thoughts on why contributing can enrich your life", + "subtitle": "Some very personal thoughts on why contributing can enrich your life", + "description": "

Everytime I tell my friends about my hobby which noawadays has also become my job, I face lots of questions. A worldwide community? Contributors around the globe? An open source community? What is this all about?

\n

In this talk, I’d like to share my very personal view about what the open source community means to me, how to grow from user into community member, how the credit of trust helps you to discover your own skills, how to make friends around the world and why it’s not only fun to get active in a community, but also a big benefit for your whole life that can help you to broaden your mind.

", + "track": { + "@color": "#6b6b6b", + "#text": "Community Building" + }, + "category": "Community Building", + "type": "Community Building", + "track-url": "https://www.sfscon.it/tracks/community-building-track-2024/", + "persons": { + "person": { + "@id": "4932", + "@organization": "The Document Foundation", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/form-speakers/florian-effenberger-d0252ec75d2d897983e1937ddd628001.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/effenberger.org\"},{\"facebook\":\"https:\\/\\/www.facebook.com\\/floeff\"},{\"mastodon\":\"https:\\/\\/mastodon.social\\/@floeff\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/floeff\"},{\"twitter\":\"https:\\/\\/twitter.com\\/floeff\"}]", + "@bio": "\"Florian has been a free and open source enthusiast since 2004. He works for The Document Foundation, the nonprofit behind LibreOffice and previously volunteered in marketing and infrastructure. As a student, he designed educational computer systems for schools, including software deployment based on free software and was a frequent contributor to a variety of professional magazines worldwide on topics such as free software, open standards and legal matters. A proud uncle, he loves to spend time with the family and occasionally blogs about various topics, including community building, free and open source software and computer networks. Based around Munich, he helped to create the local open source meetings and shaped the tasty idea of open source cooking.\"", + "@url": "https://www.sfscon.it/speakers/florian-effenberger/", + "#text": "Florian Effenberger" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59bcb536cc86f4091ba8be0a644c81843b9d98e", + "@unique_id": "2024day1event58", + "@bookmark": "1", + "@rating": "1", + "start": "15:20", + "duration": "00:15", + "title": "A Journey of Contribution and Collaboration in Open Source", + "url": "https://www.sfscon.it/talks/a-journey-of-contribution-and-collaboration-in-open-source/", + "language": null, + "abstract": "Why Foundations are Essential", + "subtitle": "Why Foundations are Essential", + "description": "

Have you ever worked on a project that didn’t use any open source tools, libraries, or products? Didn’t think so…Using open source has been such an integral part of our daily work life that we don’t even think about it. We just expect it to be available, secure, stable, and bug-free. But how many of you are actually contributing back to an open source project?

\n

This session will go through a couple of the aspects to consider when you are embarking on your open source journey. We will look at different kinds of open source projects, and what the open source foundations bring to the table.

", + "track": { + "@color": "#6b6b6b", + "#text": "Community Building" + }, + "category": "Community Building", + "type": "Community Building", + "track-url": "https://www.sfscon.it/tracks/community-building-track-2024/", + "persons": { + "person": { + "@id": "7036", + "@organization": "Eclipse Foundation", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Ivar_Grimstad_667ea1bc78e64667ea2bd0fe32.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/agilejava.eu\"},{\"mastodon\":\"https:\\/\\/mastodon.social\\/@ivar_grimstad\"},{\"linkedin\":\"https:\\/\\/x.com\\/ivar_grimstad\"},{\"twitter\":\"https:\\/\\/x.com\\/ivar_grimstad\"}]", + "@bio": "\"Ivar Grimstad is the Jakarta EE Developer Advocate at Eclipse Foundation. He is a Java Champion and JUG Leader based in Sweden.\\r\\n\\r\\nBesides advocating the Jakarta EE technologies, Ivar is contributing to the Jakarta EE specifications as well as being the PMC Lead for Eclipse Enterprise for Java (EE4J). He is also one of the specification leads for Jakarta MVC and represents Eclipse Foundation on the JCP Executive Committee.\\r\\n\\r\\nIvar is also involved in various other open-source projects and communities. He is a frequent speaker at International developer conferences.\"", + "@url": "https://www.sfscon.it/speakers/ivar-grimstad/", + "#text": "Ivar Grimstad" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59be11a988d2172f15827aa3c317e4df0ba2738", + "@unique_id": "2024day1event62", + "@bookmark": "1", + "@rating": "1", + "start": "15:40", + "duration": "00:15", + "title": "Jakarta EE: Why and how to get involved in Open Source Software?", + "url": "https://www.sfscon.it/talks/jakarta-ee-why-and-how-to-get-involved-in-open-source-software/", + "language": null, + "description": "

In this session you will learn how to become part of an open source community, how to get involved and most importantly why you need to do it! You will learn about the Jakarta EE and its plans for the future, so you can start right away! This presentation will also provide you with key insights into the industry-wide, open source collaboration to modernize Java enterprise systems for cloud-centric use cases.

", + "track": { + "@color": "#6b6b6b", + "#text": "Community Building" + }, + "category": "Community Building", + "type": "Community Building", + "track-url": "https://www.sfscon.it/tracks/community-building-track-2024/", + "persons": { + "person": { + "@id": "7079", + "@organization": "Eclipse Foundation", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Tanja_Obradovic_668176bca009d6681782b56685.jpeg", + "@bio": "\"Tanja Obradovi\\u0107 is Senior Manager, Java Programs at the Eclipse Foundation. Having been involved with Java and Java EE for quite some time, with various companies and in various roles (development, consulting, management) revitalizing Enterprise Java with Jakarta EE and other Java open source specifications and projects at the Eclipse Foundation, making them relevant and the technology of choice for cloud-native application development is my particular interest.\"", + "@url": "https://www.sfscon.it/speakers/tanja-obradovic/", + "#text": "Tanja Obradovic" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59bf7182cce14462e150a69a5c414a56113a742", + "@unique_id": "2024day1event66", + "@bookmark": "1", + "@rating": "1", + "start": "16:00", + "duration": "00:15", + "title": "From Concept to Camp: Project Management Strategies for IT Education Events", + "url": "https://www.sfscon.it/talks/from-concept-to-camp-project-management-strategies-for-it-education-events/", + "language": null, + "description": "

In today’s fast-paced technological landscape, the need for immersive and hands-on educational experiences is more crucial than ever. “From Concept to Camp: Project Management Strategies for IT Education Events” delves into the meticulous process of organizing successful IT camps from a project management perspective.

\n

Join us as we explore the comprehensive journey of bringing an IT camp from initial concept to a fully realized event. We will cover essential project management strategies, including planning, scheduling, resource allocation, risk management, and post-event evaluation. Participants will gain insights into: Defining Objectives and Scope; Budgeting and Resource Management; Team Collaboration and Leadership; Marketing and Participant Recruitment; Logistics and Event Planning; Evaluation and Feedback.

\n

Through real-world examples and practical advice based on the Red Hat Summer Camp Brno project, this talk will equip you with the tools and knowledge needed to transform your vision of an IT camp into a reality.

\n

Whether you’re planning your first event or looking to enhance your current approach, this session will provide valuable takeaways to elevate your project management skills and deliver exceptional educational experiences.

", + "track": { + "@color": "#6b6b6b", + "#text": "Community Building" + }, + "category": "Community Building", + "type": "Community Building", + "track-url": "https://www.sfscon.it/tracks/community-building-track-2024/", + "persons": { + "person": [ + { + "@id": "5797", + "@organization": "Red Hat", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/form-speakers/juri-solovjov-99470f10372f7fce2d8b7a2c1bb75a79.jpeg", + "@socials": "[{\"facebook\":\"https:\\/\\/www.facebook.com\\/juras08\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/juri-solovjov\\/\"}]", + "@bio": "\"

ISTQB certified Software Quality Engineer with 4 years experience at Red Hat<\\/p>\\r\\nPreviously worked as a Front-End Developer\\r\\n\\r\\nOriginally came from Estonia, currently located in Brno, Czechia.\\r\\n\\r\\nStudied Telecommunications and Telecommunication Services at Tallinn University of Technology\"", + "@url": "https://www.sfscon.it/speakers/juri-solovjov/", + "#text": "Juri Solovjov" + }, + { + "@id": "5985", + "@organization": "Red Hat", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2022/10/Yuliia_Kliuchnikova.png", + "@bio": "\"Previously an active member of international youth-run, non-governmental, and not-for-profit organizations such as AIESEC and ESN.\\r\\nAt the present time, I am Project Manager in Red Hat with 3+ years of experience.\\r\\nOriginally came from Ukraine, currently located in Brno, Czech Republic.\\r\\nStudied Management and Ecology at the Donetsk State University of Management in Ukraine.\"", + "@url": "https://www.sfscon.it/speakers/yuliia-kliuchnikova/", + "#text": "Yuliia Kliuchnikova" + } + ] + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c0d037bd17ed11c5a420ff5a4a7356f979c8c", + "@unique_id": "2024day1event70", + "@bookmark": "1", + "@rating": "1", + "start": "16:20", + "duration": "00:15", + "title": "Building the Public Interest Desktop", + "url": "https://www.sfscon.it/talks/building-the-public-interest-desktop/", + "language": null, + "abstract": "Our experience organizing GNOME's Sovereign Tech Fund project", + "subtitle": "Our experience organizing GNOME's Sovereign Tech Fund project", + "description": "

The Sovereign Tech Fund is a new funding program for critical free software infrastructure by the German government. As part of this, members of the GNOME community have been working on fixing important issues across the free desktop stack. This includes security, accessibility, maintainability, hardware support, and more.

\n

In this talk Sonny and Tobias will give an overview of how we organized the project, the work done as part of it, and the massive impact a relatively small amount of public money can have on making the free desktop better.

", + "track": { + "@color": "#6b6b6b", + "#text": "Community Building" + }, + "category": "Community Building", + "type": "Community Building", + "track-url": "https://www.sfscon.it/tracks/community-building-track-2024/", + "persons": { + "person": [ + { + "@id": "5854", + "@organization": "GNOME", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/form-speakers/tobias-bernard-a69efe2d7457361a0a4bd764355e2d20.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/tobiasbernard.com\"},{\"twitter\":\"https:\\/\\/twitter.com\\/tobias_bernard\"}]", + "@bio": "\"Tobias is an Italian interaction designer based in Berlin. He's a member of the GNOME design team and works for Purism on the Librem 5 team. When he's not doing GNOME stuff, he's working to avoid climate disaster through mass civil resistance.\"", + "@url": "https://www.sfscon.it/speakers/tobias-bernard-2/", + "#text": "Tobias Bernard" + }, + { + "@id": "7091", + "@organization": "GNOME", + "@bio": "\"Sonny is a software and organization engineer. He's been working in software for 15+ years and has been contributing to the GNOME project for the last 5 years.\"", + "@url": "https://www.sfscon.it/speakers/sonny-piers/", + "#text": "Sonny Piers" + } + ] + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c22f30d8c38ec4a884a84da999c04fc1a2e8e", + "@unique_id": "2024day1event74", + "@bookmark": "1", + "@rating": "1", + "start": "16:40", + "duration": "00:15", + "title": "Let’s share our love for Free Software", + "url": "https://www.sfscon.it/talks/lets-share-our-love-for-free-software/", + "language": null, + "abstract": "I love Free Software Day 2025", + "subtitle": "I love Free Software Day 2025", + "description": "

We often underestimate the power of a simple Thank You. Free Software contributors do important work for our society and the “I Love Free Software Day” on 14 February is the perfect opportunity for you to express your special gratitude. Since 2010, we have celebrated this wonderful annual event with an ever-growing and diverse community. ♥

", + "track": { + "@color": "#6b6b6b", + "#text": "Community Building" + }, + "category": "Community Building", + "type": "Community Building", + "track-url": "https://www.sfscon.it/tracks/community-building-track-2024/", + "persons": { + "person": { + "@id": "7139", + "@organization": "FSFE - Free Software Foundation Europe", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/09/Ana_Galan_6693a1c2d138466f28f659d425.jpeg", + "@bio": "\"Ana has a background in communication and social sciences. After an internship at FSFE, she continued her career in Berlin and Madrid with various journalistic, communication and production-related experiences, and has been back at FSFE since 2022. There she focuses on communication outreach tasks as well as helping to manage the FSFE community and related events.\"", + "@url": "https://www.sfscon.it/speakers/ana-galan/", + "#text": "Ana Galan" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c399e36461c6618539787cfbb52b2d0b5e150", + "@unique_id": "2024day1event78", + "@bookmark": "1", + "@rating": "1", + "start": "17:00", + "duration": "00:15", + "title": "MoodleXR: A Next-Generation Open-Source Platform for Immersive Learning", + "url": "https://www.sfscon.it/talks/moodlexr-a-next-generation-open-source-platform-for-immersive-learning/", + "language": null, + "description": "

This project aims to develop a state-of-the-art Learning Management System (LMS) based on Moodle, optimized for delivering Virtual Reality (VR) and Augmented Reality (AR) learning modules.

\n

By leveraging the open-source nature of Moodle and integrating advanced immersive technologies, the project seeks to create an innovative educational platform that transforms traditional learning experiences.

\n

The LMS will incorporate open-source VR/AR tools and libraries, such as A-Frame, AR.js, and Blender, enabling educators to seamlessly integrate and manage immersive content. It will support various VR headsets and AR devices, ensuring broad accessibility. The platform will feature interactive learning modules, robust analytics, and scalable infrastructure, all built on open-source technologies like Kubernetes and Matomo.

\n

Additionally, the project will emphasize accessibility and privacy compliance, utilizing tools like WAVE and Let’s Encrypt.

\n

By fostering a community-driven development model, this LMS will offer a flexible, cost-effective solution that revolutionizes education through experiential learning, making it more engaging, interactive, and effective for students and educators alike.

", + "track": { + "@color": "#6b6b6b", + "#text": "Community Building" + }, + "category": "Community Building", + "type": "Community Building", + "track-url": "https://www.sfscon.it/tracks/community-building-track-2024/", + "persons": { + "person": { + "@id": "5556", + "@organization": "Gruppo FOS", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2021/09/Luca_Bagna.png", + "@socials": "[{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/lucabagna\\/\"}]", + "@bio": "\"Luca Bagna is an accomplished digital and learning executive with over 20 years of experience in driving strategic growth and operational excellence. Currently serving as the Chief Operating Officer for the Digital Learning Business Line at Gruppo FOS SpA, Luca has a proven track record of leading high-performance teams to deliver innovative learning solutions.\\r\\n\\r\\nLuca\\u2019s deep understanding of emerging technologies and industry trends has enabled him to create competitive advantages for his organizations, particularly in the development of comprehensive learning strategies that enhance employee performance and drive business results. His leadership has been instrumental in achieving steady annual profit growth by optimizing resources, fostering strategic alliances, and expanding training services.\\r\\n\\r\\nThroughout his career, Luca has managed and executed numerous large-scale digital learning projects across diverse sectors, including aerospace, automotive, finance, healthcare, and luxury retail. His expertise in LMS development, instructional design, and project management has been recognized in both the public and private sectors, where he has led the creation of customized learning ecosystems for organizations ranging from regional academies to global corporate giants.\"", + "@url": "https://www.sfscon.it/speakers/luca-bagna/", + "#text": "Luca Bagna" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c514bdfab4418da1c9cccbe1395c5e1ddbbc2", + "@unique_id": "2024day1event82", + "@bookmark": "1", + "@rating": "1", + "start": "17:20", + "duration": "00:15", + "title": "Implementing digital examinations in free software systems", + "url": "https://www.sfscon.it/talks/implementing-digital-examinations-in-free-software-systems/", + "language": null, + "description": "

In Finnish upper secondary schools course and final exams have been digital for some years now. Ordinary student laptops are routinely booted from USB flash drives to a special operating system, which provides a restricted environment allowing students to take an exam with no distractions or tools to cheat. Up to these days, this was implemented with Debian GNU/Linux, also meaning that student laptops must be Linux-compatible.

\n

This is now changing. Not every modern laptop can simply boot from a USB drive to run Linux, these including chromebooks, Apple laptops and some new Windows laptops. Some schools may want to buy these devices and do not want a separate set of computers only for examinations. The current system is being replaced by an exam application, meant to run on different operating systems, which are to provide guarantees that no cheating can occur. The exam application activates the “assessment mode”, provided by operating system vendors, and this mode should provide a safe place where no cheating can occur, even on computers owned by the students.

\n

Does that even make sense? Can that really be done, and with free software? In this presentation we take a peek at some technologies in Linux systems that can be used to secure a computer against an attacker with a physical access to the machine. We will also look at possible ways to implement an “assessment mode” in Linux desktops.

", + "track": { + "@color": "#6b6b6b", + "#text": "Community Building" + }, + "category": "Community Building", + "type": "Community Building", + "track-url": "https://www.sfscon.it/tracks/community-building-track-2024/", + "persons": { + "person": { + "@id": "6961", + "@organization": "Opinsys", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Juha_Erkkila_66727fef28526667284bbf1788.jpeg", + "@bio": "\"I am a programmer at Opinsys. Opinsys is a company that manages many thousands of student laptops in Finland and Germany, all using Debian GNU\\/Linux. Our free software project is called Puavo, see https:\\/\\/puavo.org.\\r\\n\\r\\nMy university years were spent as a free software hobbyist from 1999 onwards, using Linux and BSD Unix systems, while graduating later with a master's degree on software development. I have been working professionally with free software since 2008. I find the traditional unix tools seductive, lament why people have never heard of Tcl (the programming language!) and pick up shell whenever it can solve a problem.\"", + "@url": "https://www.sfscon.it/speakers/juha-erkkila/", + "#text": "Juha Erkkilä" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c699ef7566e17ca847eb6bae9c03baa38a34b", + "@unique_id": "2024day1event86", + "@bookmark": "1", + "@rating": "1", + "start": "17:40", + "duration": "00:15", + "title": "Let’s spark children’s interest in coding", + "url": "https://www.sfscon.it/talks/lets-spark-childrens-interest-in-coding/", + "language": null, + "abstract": "Our experiences and how you can contribute", + "subtitle": "Our experiences and how you can contribute", + "description": "

Today it is impossible to imagine daily life without software. The majority of us can’t spend a single day without using it. People use software in the workplace, on laptops, and on mobile phones. Software is also found in less obvious places however: in trains, cars, televisions, washing-machines, fridges, and many other devices. None of these devices could function without software. Without software we couldn’t write e-mails, make phone calls, go shopping, or travel as we are accustomed to. Software is our society’s central tool. How do we ensure that the next generation is motivated and capable of shaping technology for society’s benefits?

\n

The Free Software Foundation Europe’s volunteers and staff have interacted with over 1700 children between 6 to 10 years in the past months. Children, especially girls, afterwards were motivated to start experimenting with hardware and software. In the discussions we saw that they realise how crucial technology will be for them. Furthermore with the FSFE’s coding competition “Youth Hacking 4 Freedom” we gathered experiences working with teenagers who program, tinker, and have fun with software.

\n

Learn more about the experiences how the FSFE sparks children’s and teenagers interest to tinker, experiment and program. Furthermore you will see how fulfilling those activities can be for yourself.

", + "track": { + "@color": "#6b6b6b", + "#text": "Community Building" + }, + "category": "Community Building", + "type": "Community Building", + "track-url": "https://www.sfscon.it/tracks/community-building-track-2024/", + "persons": { + "person": { + "@id": "4358", + "@organization": "FSFE - Free Software Foundation Europe", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2018/10/Matthias_Kirschner-1.jpg", + "@socials": "[{\"twitter\":\"https:\\/\\/twitter.com\\/kirschner\"},{\"site\":\"ttps:\\/\\/fsfe.org\\/about\\/kirschner\"}]", + "@bio": "\"Matthias Kirschner is President of FSFE. In 1999 he started using GNU\\/Linux and realised that software is deeply involved in all aspects of our lives. Matthias is convinced that this technology has to empower society not restrict it. While studying Political and Administrative Science he joined FSFE in 2004.\\r\\nHe helps other organisations, companies and governments to understand how they can benefit from Free Software -- which gives everybody the rights to use, understand, adapt and share software - and how those rights help to support freedom of speech, freedom of press or privacy.\\r\\nMatthias loves playing with his children, and in his spare time assists in wilderness first aid seminars, enjoys comics like XKCD and Transmetropolitan; and Die \\u00c4rzte.\"", + "@url": "https://www.sfscon.it/speakers/matthias-kirschner/", + "#text": "Matthias Kirschner" + } + }, + "bookmark": "1", + "rating": "1" + } + ] + }, + { + "@name": "Seminar 3", + "event": [ + { + "@id": "670d1b59a8ec35e3e4ab0e4be4924544813945267c986", + "@unique_id": "2024day1event7", + "@bookmark": "1", + "@rating": "1", + "start": "11:00", + "duration": "00:15", + "title": "Open-source silicon chips", + "url": "https://www.sfscon.it/talks/open-source-silicon-chips/", + "language": null, + "description": "

We have all heard that there is ‘Intel inside’, but what is inside Intel? Almost all integrated circuits today are literally black boxes. They may contain unwanted or malicious features and, most importantly, they do not encourage reuse, nor do they allow it. The two main causes of such secrecy are: 1. standard design tools explicitly forbid the publication of any output, and 2. most foundries disallow disclosing technology details. Designers moreover face additional problems: The licence cost of standard design tools is unaffordable for most SMEs (unless questionable discount policies are applied), and lock-in threats arise at many levels, from IP blocks to foundry details to file formats. Yet exceptional progress has been made in recent years: Hundreds of silicon chips have been designed using free and open-source tools, and three foundries have made details of their processes public: The doors to free silicon are open! Hence how is politics reacting? What are the next steps to be taken? What are the opportunities for users, society and companies?

", + "track": { + "@color": "#c62ecc", + "#text": "Open Hardware" + }, + "category": "Open Hardware", + "type": "Open Hardware", + "track-url": "https://www.sfscon.it/tracks/open-hardware-track-2024/", + "persons": { + "person": { + "@id": "7288", + "@organization": "F-Si - Free Silicon Foundation", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/10/Luca_Alloatti_66ffa9ba2dd5a66ffac46a3f60.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/f-si.org\"},{\"mastodon\":\"https:\\/\\/mastodon.luca-alloatti.eu\\/@luca\"}]", + "@bio": "\"Luca Alloatti is the president of the Free Silicon Foundation (f-si.org) which promotes the freedom of silicon integrated circuits similarly to the Free Software Foundation which promotes the freedom of software.\\r\\nHe has a background in physics (diploma at SNS.it) and in electrical engineering (PhD at KIT.edu). At MIT, he demonstrated the first microprocessor with optical interconnects. He is currently involved in two European projects to promote open silicon in Europe [1] and to fund free software\\/hardware projects [2]. Most recently, he co-organised the 2024 Free Silicon Conference [3] and co-authored a roadmap for the European Commission [4].\\r\\n\\r\\n[1] GoIT proposal: https:\\/\\/wiki.f-si.org\\/index.php?title=Horizon_2021_Coordination_and_Support_Action_(CSA)_proposal\\r\\n[2] NGI0 Commons Fund announcement: https:\\/\\/nlnet.nl\\/press\\/20240109-NGI0-CommonsFund-unveiled.html\\r\\n[3] FSiC2024: https:\\/\\/wiki.f-si.org\\/index.php\\/FSiC2024\\r\\n[4] Roadmap for the EC: https:\\/\\/wiki.f-si.org\\/index.php?title=Recommendations_and_roadmap_for_the_development_of_open-source_silicon_in_the_EU\"", + "@url": "https://www.sfscon.it/speakers/luca-alloatti/", + "#text": "Luca Alloatti" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59aa81c1d2f2514f94265c7294cb92c7bb81a8f", + "@unique_id": "2024day1event11", + "@bookmark": "1", + "@rating": "1", + "start": "11:20", + "duration": "00:15", + "title": "Opt out? Opt in? Opt Green! Bringing Free Software To Eco-Consumers", + "url": "https://www.sfscon.it/talks/opt-out-opt-in-opt-green-bringing-free-software-to-eco-consumers/", + "language": null, + "description": "

Free Software gives consumers what they want, but many don’t know it … yet! We aim to change that by reaching out directly to eco-consumers in the “Opt Green” project, a new KDE Eco initiative funded by the German Environmental Agency.

\n

Consumers want sustainable software: in a recent European poll 50% of respondents say the two primary reasons they purchase a new device are non-functioning software and software performance issues. This is as good a time as ever for an “Opt Green” message. In the next couple of years Windows 10 end-of-life and the phasing out of Intel-based macOS support will make e-waste out of hundreds of millions of computers. Functioning but vendor-abandoned devices can stay out of the landfill and in use for many years to come. With software designed for users’ needs, not vendors’, it is possible to run software on the devices one already owns. Lean, efficient Free Software even runs on devices that are decades old. This is good for users, and better for the environment!

\n

In this lightning talk I will provide an overview of the whys and hows of KDE Eco’s “Opt Green” initiative. Through campaigns and workshops over the next 2 years, we will raise awareness about environmental issues driven by software and demonstrate the power of Free Software to drive down resource use and keep devices running smoothly for years beyond official vendor support. This is all possible because Free Software *is* right-to-repair software: it removes vendor dependencies and guarantees transparency and user autonomy, providing full control over software, and thus hardware. I will describe the ways we plan to reach our target audience, including materials designed for eco-consumers and events well outside usual tech circles, such as open-air organic, artisanal, and fair trade markets, cultural centers, and others. These activities give us the opportunity to align our values in the Free Software community with those in allied communities striving for a sustainable modern lifestyle.

", + "track": { + "@color": "#c62ecc", + "#text": "Open Hardware" + }, + "category": "Open Hardware", + "type": "Open Hardware", + "track-url": "https://www.sfscon.it/tracks/open-hardware-track-2024/", + "persons": { + "person": { + "@id": "5500", + "@organization": "KDE e.V.", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/form-speakers/joseph-p-de-veaugh-geiss-9f305bd1653fc8285db6843a4cc7e04b.jpeg", + "@bio": "\"Joseph P. De Veaugh-Geiss is the project and community manager of KDE e.V.'s \\\"Blauer Engel 4 FOSS\\\" project since July 2021. He supports the project by collecting, summarizing, and spreading information about Blauer Engel eco-certification and resource efficiency as it relates to free software development.\"", + "@url": "https://www.sfscon.it/speakers/joseph-p-de-veaugh-geiss/", + "#text": "Joseph P. De Veaugh-Geiss" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59abdfb315c72f76d912c35cf79773d98f6f316", + "@unique_id": "2024day1event15", + "@bookmark": "1", + "@rating": "1", + "start": "11:40", + "duration": "00:15", + "title": "ClapMetrics: Decoding Users’ Gender and Age Through Smartwatch Gesture Dynamics", + "url": "https://www.sfscon.it/talks/clapmetrics-decoding-users-gender-and-age-through-smartwatch-gesture-dynamics/", + "language": null, + "description": "

In this presentation, we introduce ClapMetrics – an innovative and seamless method for deducing the gender and age of smartwatch users. This system ingeniously harnesses the capabilities of the smartwatch’s integrated 3D sensors — specifically, the accelerometer and gyroscope—to capture the wearer’s arm movements during a clapping action. ClapMetrics operates on the principle that each clap is a complex interplay of motion, unique to the individual, much like a fingerprint. By analyzing these movements, ClapMetrics can gather rich biometric data without any active input or effort from the user, making it a remarkably non-intrusive technology. We will delve into the specifics of how ClapMetrics processes sensor data to make its estimations. We will explore the Neural Network’s architecture, the training process, and how the model interprets the sensor data to make reliable predictions about the wearer’s gender and age.

", + "track": { + "@color": "#c62ecc", + "#text": "Open Hardware" + }, + "category": "Open Hardware", + "type": "Open Hardware", + "track-url": "https://www.sfscon.it/tracks/open-hardware-track-2024/", + "persons": { + "person": { + "@id": "5812", + "@organization": "Department of Environmental Sciences, Informatics, and Statistics, University of Venezia Ca Foscari, Venice", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2022/09/attaullah-buriro.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/sites.google.com\\/view\\/attaullah\\/\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/attaullah-buriro-phd-03651a52\\/\"}]", + "@bio": "\"Attaullah Buriro is currently an Assistant Professor at the Department of Environmental Sciences, Informatics, and Statistics, University of Venezia Ca Foscari, Italy. Before that, he was an Assistant Professor at the Faculty of Engineering, Free University of Bolzano-Bozen, Bolzano. Before being an Assistant Professor, he held a postdoctoral researcher position at UNIBZ (1st Sep. 2019 \\u2013 30th Aug. 2020) and DISI Security Lab, University of Trento (1st Mar. 2017 \\u2013 Aug. 30th 2019). He earned his Ph.D. degree in Information and Communication Technology (security and privacy) from the University of Trento, Italy, in February 2017. His research interests include biometrics, access control, Internet of Things (IoT), Computer Vision, machine learning, artificial intelligence, and data mining. He has developed several secure, user-friendly, and implicit behavioral biometric-based authentication solutions for smartwatches, smartphones, and critical infrastructures.\"", + "@url": "https://www.sfscon.it/speakers/attaullah-buriro/", + "#text": "Attaullah Buriro" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59ad5c96bd07e7a2a2b3addd4a61cbbe2e40b91", + "@unique_id": "2024day1event19", + "@bookmark": "1", + "@rating": "1", + "start": "12:00", + "duration": "00:15", + "title": "Adoption Determinants of Open Hardware Across Industries", + "url": "https://www.sfscon.it/talks/adoption-determinants-of-open-hardware-across-industries/", + "language": null, + "description": "

Open Hardware (OH) is revolutionizing the way we approach technology in several areas, such as agriculture and healthcare. These areas, which are fundamental to food availability and human well-being, are undergoing an important shift as open hardware licensing strategies, inspired by open-source software (OSS), make solutions more accessible, affordable, and customizable. In this talk, we review major factors determining the use and adoption of OH technologies, including economic advantages, opportunities, and challenges.
\nSimilar to OSS, OH applications are gaining momentum. In agriculture, farmers and researchers are turning to OH for precision farming tools, environmental monitoring, and robotics. These technologies not only reduce development costs but can be easily adapted to specific local needs, enhancing their effectiveness in diverse agricultural environments – crucial for small-scale farmers in developing countries and rural areas who face financial constraints. Likewise, the healthcare industry is benefiting from OH through the development of affordable medical devices, diagnostic tools, and treatment systems. The high costs and regulatory challenges associated with traditional medical devices often limit access to essential healthcare, especially in underdeveloped regions. Examples include open-source ventilators, syringe pumps, and diagnostic devices.
\nApplications of OH will be showcased through a comparative analysis of successful projects, particularly those with high engagement on platforms like GitHub, characterized by community engagement, active forums, and regular updates. Finally, we will draw conclusions about the potential of OH for industries beyond agriculture and healthcare, encouraging further innovation and collaboration in the open-source community.

", + "track": { + "@color": "#c62ecc", + "#text": "Open Hardware" + }, + "category": "Open Hardware", + "type": "Open Hardware", + "track-url": "https://www.sfscon.it/tracks/open-hardware-track-2024/", + "persons": { + "person": [ + { + "@id": "6597", + "@organization": "University of Trento", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2023/09/Seckin_Celik_6517eee9b54f26517f0fd01164.jpeg", + "@bio": "\"Seckin Celik is a Ph.D. student at the University of Trento, specializing in Economics and Management. With a background in Electrical Engineering and Business Administration B.Scs., along with a master\\u2019s in Management of Innovation and Entrepreneurship, Seckin explores research areas like open-source hardware, software, licensing strategies, innovation adoption, technology acceptance, managerial decision-making, and behavioral economics. His academic journey is marked by a diverse set of skills and a passion for understanding the intricacies of economics and management.\"", + "@url": "https://www.sfscon.it/speakers/seckin-celik/", + "#text": "Seckin Celik" + }, + { + "@id": "6594", + "@organization": "University of Milan", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2023/09/Davide_Serpico_6517e222442646517e478bcb2e.jpeg", + "@bio": "\"Davide Serpico is a philosopher of science particularly interested in biology, medicine, social sciences, cognitive science, technology, and open science. Davide got a Ph.D. in Philosophy from the University of Turin (2018). Between 2016 and 2023, he conducted research at the University di Exeter (UK), the Graduate University for Advanced Studies (Hayama, Japan), the University of Leeds (UK), the University of Cambridge (UK), the University of Genoa (Italy), the Jagiellonian University (Krakow, Poland), and the University of Trento. He is now a Postdoc at the University of Milan. His research was published in top-tier philosophy and social sciences journals, such as "The British Journal for the Philosophy of Science", "Biology and Philosophy", "History and Philosophy of the Life Sciences", and "Philosophical Psychology".\"", + "@url": "https://www.sfscon.it/speakers/davide-serpico/", + "#text": "Davide Serpico" + } + ] + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59af13d05f268b5481f4006e3d6b78c3179b2c2", + "@unique_id": "2024day1event23", + "@bookmark": "1", + "@rating": "1", + "start": "12:20", + "duration": "00:15", + "title": "Enabling global interoperability among smart devices is only possible through Open Source", + "url": "https://www.sfscon.it/talks/enabling-global-interoperability-among-smart-devices-is-only-possible-through-open-source/", + "language": null, + "abstract": "Oniro and OpenHarmony a cooperation to build a global ecosystem", + "subtitle": "Oniro and OpenHarmony a cooperation to build a global ecosystem", + "description": "

Global interoperability is probably the biggest problem that smart devices have been studied for more than 10 years. Multiple solutions have been proposed with different results, but none of them has established a reference framework and a global adoption. One of the main reasons for this to stay as a key element for research and investment is the diversity among the whole technology stack and geographical dispersion of device manufacturers. In the last years, there is a solution that is capturing the attention by demonstrating how an open source operating system can enable global interoperability in a huge domestic market like China. This solution is OpenHarmony and through a cooperation with Eclipse Foundation Oniro project, it is intended to use open source to drive interoperability and therefore solve one of the biggest challenges in the IoT and smart device industry. During the talk, it will be presented the approach followed by these two independent initiatives to cooperate while keeping the independence of the open source communities behind them.

", + "track": { + "@color": "#c62ecc", + "#text": "Open Hardware" + }, + "category": "Open Hardware", + "type": "Open Hardware", + "track-url": "https://www.sfscon.it/tracks/open-hardware-track-2024/", + "persons": { + "person": { + "@id": "7009", + "@organization": "Eclipse Foundation", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Juan_Rico_667c77b6d2821667c7e3760ae2.jpeg", + "@socials": "[{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/juanricofdez\\/\"},{\"twitter\":\"https:\\/\\/x.com\\/j_rico_\"}]", + "@bio": "\"Juan Rico is a Telecommunications Engineer and Master in ICT technologies who has been deeply involved in the technical development of R&I initiatives applied to multiple domains (avionics, cities, homes, industry and energy). With a strong Digital mindset, he has led and supported the deployment and adoption of IoT, cloud and data technologies to exploit connected assets. During the last 10 years, he has been combining technology and business development defining and deploying digital transformation strategies for energy, consumer devices and manufacturing companies. These challenges led him to specialise in Disruptive Strategy at Harvard Business School and Innovation management at Georgia Tech. He is currently Senior Manager for Oniro and Cloud Programs at Eclipse Foundation exploiting his background as a technologist and manager to push forward open source as the most effective way to democratise technology and make it interoperable.\"", + "@url": "https://www.sfscon.it/speakers/juan-rico/", + "#text": "Juan Rico" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b0da4e77787706db072d93ef706113db96c6d", + "@unique_id": "2024day1event63", + "@bookmark": "1", + "@rating": "1", + "start": "12:40", + "duration": "00:15", + "title": "Smart Werke Meran – Lorawan Use Cases", + "url": "https://www.sfscon.it/talks/smart-werke-meran-lorawan-use-cases/", + "language": null, + "abstract": "Our Use Cases realized with 100% Open Source", + "subtitle": "Our Use Cases realized with 100% Open Source", + "description": "

Stadtwerke Meran has had a Chripstack Lorawan server and 19 Lorawan gateways for a year now. Merano has a well-developed Lorawan network.

\n

We have realized the following use cases:

\n

Remote control of public lighting.
\nTemperature measurement ( Just Nature project)
\nSmart metering for our water customer
\nGPS tracking for waste compactors of our major customers

", + "track": { + "@color": "#c62ecc", + "#text": "Open Hardware" + }, + "category": "Open Hardware", + "type": "Open Hardware", + "track-url": "https://www.sfscon.it/tracks/open-hardware-track-2024/", + "persons": { + "person": { + "@id": "6318", + "@organization": "Stadtwerke Meran", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2023/06/Stefan_Mutschlechner_649b2d4992c69649b33830883d.jpeg", + "@socials": "[{\"site\":\"http:\\/\\/www.asmmerano.it\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/stefan-mutschlechner-bb343355?originalSubdomain=it\"}]", + "@bio": "\"I was working for years in the automation sector.\\r\\nfirst for Techno Alpin(2001-2007) in Bozen, Peter Warasin from Endian told me to use Open Source. I started to use Subversion....\\r\\nAfter I worked for BTS Biogas like Head of Automation department, we used Kubuntu for visualizzing PC, and Postres like Database. 50% Open Souce use.\\r\\nNow im working for Stadt Werke Meran, where we were able to create a Smart City Plattform with only Open Source Tools..\\r\\nChirpstack, Fiware, Postgres, .... and many more. Smart City Merano 100% Open Source.\"", + "@url": "https://www.sfscon.it/speakers/stefan-mutschlechner/", + "#text": "Stefan Mutschlechner" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b2aa8a0db4dedf1f4f1718fe808f7ba861f56", + "@unique_id": "2024day1event31", + "@bookmark": "1", + "@rating": "1", + "start": "13:00", + "duration": "00:15", + "title": "2025 scenario on OpenISA OpenPower Open Hardware computing", + "url": "https://www.sfscon.it/talks/2025-scenario-on-openisa-openpower-open-hardware-computing/", + "language": null, + "abstract": "2025 Real scenario on Open Hardware based on OpenISA OpenPower CPU", + "subtitle": "2025 Real scenario on Open Hardware based on OpenISA OpenPower CPU", + "description": "

We see on 2025 which OpenISA OpenPower low power chip will give life to new Open Hardware computers, we examine in detail which open hardware computers will be ready for 2025 based on these chips. It will be the first time that OpenPower OpenISA low power Chip will be produced, and what is more, it will be produced from other Silicon Companies different from IBM.
\nWe will see who are the GNU/Linux distros that support PPC64 and PPC64el and PowerPC architecture that runs on these computers and how you can join to experiment with it and push forward these architectures.

", + "track": { + "@color": "#c62ecc", + "#text": "Open Hardware" + }, + "category": "Open Hardware", + "type": "Open Hardware", + "track-url": "https://www.sfscon.it/tracks/open-hardware-track-2024/", + "persons": { + "person": { + "@id": "4289", + "@organization": "Power Progress Community", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2023/08/Roberto_Innocenti_64a00b190e0b564cc2dab0c666.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/www.powerprogress.org\\/\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/roberto-innocenti-2961069\\/\"}]", + "@bio": "\"Among the founders of the project Open Hardware PowerPC Notebook, presenter and ambassador of the project.\\r\\nPresident of the association Power Progress Community which deals with the promotion and dissemination of free software and open hardware.\\r\\nResponsible in humanist forums of the area \\u201cTechnology for improving the living conditions of mankind\\u201d.\\r\\nTech Leader - Solutions & Infrastructure Architect, Software Architect with Open Source tools, by profession.\"", + "@url": "https://www.sfscon.it/speakers/roberto-innocenti/", + "#text": "Roberto Innocenti" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b42a17dcc0de9fce26c8560c2422a768a1467", + "@unique_id": "2024day1event35", + "@bookmark": "1", + "@rating": "1", + "start": "13:20", + "duration": "00:15", + "title": "The SMART Box of AURA Project", + "url": "https://www.sfscon.it/talks/the-smart-box-of-aura-project/", + "language": null, + "description": "

AURA project centers on the development of “Green & Smart Urban Furniture,” a new generation of urban furniture that transcends traditional roles by incorporating eco-friendly and intelligent features. These urban elements are designed with bioabsorbent vegetation capable of mitigating atmospheric pollutants, making them environmentally sustainable. Furthermore, they are outfitted with advanced IoT sensors that monitor a range of environmental parameters, including climate data, urban pollution, and vehicular traffic.

\n

These smart urban furniture units not only establish an extensive urban monitoring network but also actively combat pollution through the sequestration and reduction of harmful substances via the integrated vegetation. The embedded IoT sensors provide innovative capabilities for tracking the impact of these elements on the surrounding urban environment, such as monitoring air pollution levels and assessing the effects of heat islands. Each furniture piece is equipped with a “smart box,” a hardware system constructed using low-cost commercial off-the-shelf (COTS) components. This system includes climate and environmental sensors, gas measurement devices, a processing unit, and a data transmission module. The accompanying software, developed from scratch, delivers localized information—such as CO2 sequestration, temperature, and humidity—and contributes to a comprehensive environmental monitoring network aimed at predictive analysis, including weather risks, heat wave alerts, and health risks associated with air pollution. The presentation will delve into the custom-developed software and its ability to meet the field-level requirements of the AURA Architecture, encompassing individual sensors, sensor nodes (smart-boxes within the furniture), and the broader network of these nodes. It will highlight the significant impact and benefits of utilizing free and open-source technologies throughout the development process. Key focus areas include the creation of drivers for individual sensors, with emphasis on the most representative examples, the development of software for sensor nodes—covering features like self-testing, over-the-air (OTA) updates, and MQTT communication—and the design of a dynamic web app for data presentation, leveraging JavaScript, Bootstrap, and a JSON Data Lake. This comprehensive approach underscores the importance of open technologies in accelerating innovation, ensuring flexibility, and delivering robust, scalable solutions for smart urban environments.

", + "track": { + "@color": "#c62ecc", + "#text": "Open Hardware" + }, + "category": "Open Hardware", + "type": "Open Hardware", + "track-url": "https://www.sfscon.it/tracks/open-hardware-track-2024/", + "persons": { + "person": { + "@id": "7224", + "@organization": "FOS Spa", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/09/Angelo_Serino-1.png", + "@socials": "[{\"linkedin\":\"linkedin.com\\/in\\/angelo-serino-b474252b9\"}]", + "@bio": "\"Angelo Serino is a Software Engineer from Benevento, with a strong passion for sustainable innovation and environmentally-oriented technological solutions. He combines this interest with the development of solutions for projects in various fields, thus dedicating himself to initiatives that integrate technological efficiency and sustainability.\\r\\n\\r\\nHis passion for sustainability was born during his years of study in London, where he lived and actively participated in University projects based on IoT Edge technologies and distributed systems aimed at sustainable goals. Over time, he has become increasingly enthusiastic about the open-source movement, recognizing its immense potential for fostering sustainability through the sharing and continuous improvement of solutions. Angelo sees open-source as a versatile tool and he is particularly passionate about how open-source solutions, from sensor libraries to firmware, enhance interoperability and flexibility, enabling the rapid deployment of custom IoT softwares.\\r\\n\\r\\nThese experiences not only fueled his desire to explore innovative solutions in different contexts but also sharpened his technical skills and strategic vision, aimed at creating intelligent and sustainable systems capable of responding in real-time to environmental needs and changes. He envisions a future where technology becomes an increasingly effective tool for improving quality of life and reducing environmental impact, thus contributing to a greener and more responsible world.\\r\\n\\r\\nFollowing this direction, Angelo contributed to the development of AURA, an initiative of \\\"Green & Smart Urban Furniture\\\" aligned with many of his ideas, integrating advanced technology and ecological solutions to enhance the quality of life.\"", + "@url": "https://www.sfscon.it/speakers/angelo-serino/", + "#text": "Angelo Serino" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b5ace988c558f6cdd917655e3b611ded426f7", + "@unique_id": "2024day1event39", + "@bookmark": "1", + "@rating": "1", + "start": "13:40", + "duration": "00:15", + "title": "Raspberry Pi and Node-RED: Open Source Tools for Local Automation and Industrial IoT applications", + "url": "https://www.sfscon.it/talks/raspberry-pi-and-node-red-open-source-tools-for-local-automation-and-industrial-iot-applications/", + "language": null, + "description": "

This talk will explore how Raspberry Pi and Node-RED enable robust solutions for automation and control systems in both industrial and local applications. Leveraging open-source technology, these platforms can handle a wide range of tasks, from reading sensor data and managing actuators, to controlling devices through industrial communication protocols such as Modbus, RS485 ascii RTU etc. Node-RED’s message-driven architecture simplifies the creation of control logic, even for complex operations, while Raspberry Pi serves as a powerful and cost-effective alternative to traditional PLCs and IPCs. The integration of these tools allows for seamless data processing, remote communication, and the development of HMI interfaces both user-friendly or more traditiconal SCADA-like, making these technologies ideal for creating IIoT-native solutions. This presentation will focus on the technical capabilities, showing how these platforms can empower engineers and developers to build flexible and scalable automation solutions.

", + "track": { + "@color": "#c62ecc", + "#text": "Open Hardware" + }, + "category": "Open Hardware", + "type": "Open Hardware", + "track-url": "https://www.sfscon.it/tracks/open-hardware-track-2024/", + "persons": { + "person": [ + { + "@id": "7256", + "@organization": "FOS spa", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/09/Federico_Boero_66f5770f7c97c66f5778f9b7fc.jpeg", + "@bio": "\"Federico Boero is Head of Engineering at Gruppo FOS, where he manages and coordinates the technical development of engineering services and R&D projects while actively participating in technical advancements. An electronic engineer with extensive experience in analog and digital circuit design, system design for sensing and automation, and IT platforms for data acquisition and integration, his current research interests focus on the Internet of Things, RF systems, and IoT platforms for industrial and biomedical applications.\"", + "@url": "https://www.sfscon.it/speakers/federico-boero-2/", + "#text": "Federico Boero" + }, + { + "@id": "7255", + "@organization": "Gruppo FOS", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/09/alberto-nicoletti.png", + "@bio": "\"I am a creative and passionate learner, I always strive to improve myself both professionally and personally. I enjoy reading as well as trying to write books, I tend to be discrete and reserved, but can easily open up in a friendly environment. I am a passionate about games, both as the end-user as well as on the programmer side. Languages are my forte, if not even my obsession, and I am always willing to improve my proficiency by practising them actively.\"", + "@url": "https://www.sfscon.it/speakers/alberto-nicoletti/", + "#text": "Alberto Nicoletti" + } + ] + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b763f000d0d45d034ef0e1d9ac5a02316d41f", + "@unique_id": "2024day1event76", + "@bookmark": "1", + "@rating": "1", + "start": "14:00", + "duration": "00:15", + "title": "Approaches to Object Detection: Edge-Based and AI-Based", + "url": "https://www.sfscon.it/talks/approaches-to-object-detection-edge-based-and-ai-based/", + "language": null, + "description": "

This presentation explains why we passed to the expert system based on edge-based object detection on traditional image analysis techniques to the AI-based, leveraging advanced machine learning. The first method uses parameters derived from image analysis tools, focusing on attributes such as shape, size, and color of objects, informed by preliminary tests and expert data. The machine learning method employs a sophisticated algorithm that dynamically learns and identifies objects in images. We used both approaches using diverse datasets and measured their accuracy and efficiency under various conditions. The aim of this presentation is to show the improvement obtained by using the AI-based system applied for real-time detection and classification, offering insights into their practical strengths and applications.

", + "track": { + "@color": "#c62ecc", + "#text": "Open Hardware" + }, + "category": "Open Hardware", + "type": "Open Hardware", + "track-url": "https://www.sfscon.it/tracks/open-hardware-track-2024/", + "persons": { + "person": [ + { + "@id": "4476", + "@organization": "Gruppo FOS", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2019/08/Giovanni_Giannotta-1.png", + "@socials": "[{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/giannottagiovanni\\/\"}]", + "@bio": "\"He is an Electronics Engineer and ICT professional with over 10 Years of experience in managing and designing in the Engineering and R&D department of the Gruppo FOS. He managed various R&D projects, WEB projects and software projects for energy efficiency and intelligent monitoring systems. He is currently the Bozen office responsible and R&D manager of the Agritech technologies of the Gruppo FOS.\"", + "@url": "https://www.sfscon.it/speakers/giovanni-giannotta/", + "#text": "Giovanni Giannotta" + }, + { + "@id": "7231", + "@organization": "Gruppo FOS", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/09/Orneda_Lecini-1.png", + "@socials": "[{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/ornedalecini13111999\\/\"}]", + "@bio": "\"My curriculum includes courses such as Programming Languages, Database Systems, Analysis of Algorithms, Web Technologies, Software Engineering, and Networking. These have provided me with a strong foundation in Computer Science. I have a thorough understanding of computer hardware and software, as well as a solid background in mathematics, analysis, and problem-solving. I am skilled in several programming and web development languages and have considerable experience working on various projects. At the moment, I am working at Gruppo FOS as a software developer.\"", + "@url": "https://www.sfscon.it/speakers/orneda-lecini/", + "#text": "Orneda Lecini" + } + ] + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b8d4248fc147ccd31f546e7ecbdde02539ba7", + "@unique_id": "2024day1event67", + "@bookmark": "1", + "@rating": "1", + "start": "14:20", + "duration": "00:15", + "title": "Proxmox Backup Server: Backup for your Datacenter", + "url": "https://www.sfscon.it/talks/proxmox-backup-server-backup-for-your-datacenter/", + "language": null, + "description": "

Backups are an essential component of every IT infrastructure, from small scale businesses up to large datacenters, spanning multiple locations. With the Proxmox Backup Server a fully Free and Open Source backup solution is available, being highly integrated with the Proxmox Virtual Environment.
\nThis talk will present a short overview of the capabilites provided by Proxmox Backup Server, giving some insights into new and recently added features. Further, by peeking into the inner workings and the software design will show how fast, space efficient and reliable backups are created and how data consistency and integrity are guaranteed. Topics covered will include backups for Virtual Machines and Linux Containers running on top of Proxmox Virtual Environment as well as host level backups.

", + "track": { + "@color": "#aa2727", + "#text": "DevOps" + }, + "category": "DevOps", + "type": "DevOps", + "track-url": "https://www.sfscon.it/tracks/devops-track-2024/", + "persons": { + "person": { + "@id": "7135", + "@organization": "Proxmox Server Solutions GmbH", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/07/Christian_Ebner_66911d40d870766911f0d553d3.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/www.proxmox.com\"}]", + "@bio": "\"Christian Ebner is since 2019 a Linux Software Developer at Proxmox Server Solutions GmbH, focusing on development and implementation of backup technologies. After finishing his PhD in Physics at the University of Vienna and moving back to Bolzano, he gained additional experiences as researcher at the University of Bolzano and as software developer at teamblau Gmbh, before joining Proxmox again in 2023.\"", + "@url": "https://www.sfscon.it/speakers/christian-ebner/", + "#text": "Christian Ebner" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59ba425b268e4e4e120014f50bb1250bfd11260", + "@unique_id": "2024day1event51", + "@bookmark": "1", + "@rating": "1", + "start": "14:40", + "duration": "00:15", + "title": "Cloud Costs with ClickHouse and OpenCost", + "url": "https://www.sfscon.it/talks/cloud-costs-with-clickhouse-and-opencost/", + "language": null, + "description": "

Managing costs and billing across numerous Cloud-managed Kubernetes clusters presents significant challenges. In this talk, we’ll explore these challenges and discuss solutions using ClickHouse and OpenCost. Leveraging ClickHouse’s capabilities, we’ll demonstrate how it efficiently imports diverse Cloud billing data streams. Additionally, we’ll delve into how OpenCost addresses the complexities of real-time cost management within a multitenant architecture. Join us to uncover practical insights into optimizing cloud costs effectively.

", + "track": { + "@color": "#aa2727", + "#text": "DevOps" + }, + "category": "DevOps", + "type": "DevOps", + "track-url": "https://www.sfscon.it/tracks/devops-track-2024/", + "persons": { + "person": { + "@id": "7126", + "@organization": "Altinity", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/07/Denys_Kondtratenko_6687da7a049106687db7782380.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/denisok.github.io\\/\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/kondratenko\\/\"}]", + "@bio": "\"Denys Kondratenko is an Engineering Manager for Cloud at Altinity, where he serves as an architect specializing in platform development. With previous roles at Percona, SUSE, and Seagate, Denys brings a wealth of experience in databases and distributed storage. His past engagements include leading initiatives in monitoring and DBaaS at Percona, contributing to Ceph development at SUSE, and working on Luster at Seagate. A passionate Linux enthusiast, Denys has a longstanding commitment to open source projects, actively contributing to initiatives like openSUSEway. Additionally, he has been running full Wayland for many years, demonstrating his deep involvement in the Linux ecosystem.\"", + "@url": "https://www.sfscon.it/speakers/denys-kondratenko/", + "#text": "Denys Kondratenko" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59bba7fd51d5ee15f404c2f4f7863bebcde1fac", + "@unique_id": "2024day1event55", + "@bookmark": "1", + "@rating": "1", + "start": "15:00", + "duration": "00:15", + "title": "Ansible", + "url": "https://www.sfscon.it/talks/ansible/", + "language": null, + "abstract": "Lazy Engineer's Best Friend!", + "subtitle": "Lazy Engineer's Best Friend!", + "description": "

For a software engineer DRY is not only a washing machine progam, but it represents a deeply-held mantra: Don’t Repeat Yourself.

\n

To avoid repetitive manual work, automation tools like Ansible enable engineers to quickly configure infrastructure and easily deploy applications.

\n

In this talk, we will explore the key concepts and benefits of Ansible for configuration management, deployment and orchestration of remote devices. We will start with an overview of Ansible’s utility, how it works, and common use cases. We will see how YAML files describe configurations and playbooks define automated tasks and processes.

\n

Practical examples will show Ansible automation in action, including a quick introduction to initializing and keeping your operating system up to date by automating the installation and maintenance of system tools. We will also introduce the concept of dotfiles for configuration.

\n

What are you waiting for? Learn how to spend 30 minutes automating 5-second tasks with Ansible! (It’ll save you time in the long run, I promise!)

", + "track": { + "@color": "#aa2727", + "#text": "DevOps" + }, + "category": "DevOps", + "type": "DevOps", + "track-url": "https://www.sfscon.it/tracks/devops-track-2024/", + "persons": { + "person": { + "@id": "7083", + "@organization": "Amazon", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Marco_Lampis_66818907f075c66819d5261cf0.jpeg", + "@bio": "\"Born with a keyboard in hand, I've always been a tech enthusiast and a passionate all-rounder in the field of computer science. I'm actually working as a Software Engineer intern in Amazon Ireland and I'm studying Software Engineering at the Polytechnic University of Turin. I'm a strong advocate for free software as well as open source. In my free time, I brag to my friends about knowing how to exit Vim.\"", + "@url": "https://www.sfscon.it/speakers/marco-lampis/", + "#text": "Marco Lampis" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59bd0960575f49ea42034e2b332dd022deefe8c", + "@bookmark": "1", + "@rating": "1", + "start": "15:20", + "duration": "00:15", + "title": "Efficient Log Management in Large-Scale Kubernetes Clusters", + "url": null, + "language": null, + "description": "

Large Kubernetes clusters can generate significant volumes of logs, especially when housing thousands of running pods. This may demand substantial CPU, RAM, disk IO, and disk space for storing and querying large log volumes. In this talk, we will look into different strategies of storing those logs in ElasticSearch, Grafana Loki and VictoriaLogs and examine how we can save 10x or more on infrastructure costs.

\n

This talk presents real-world examples of efficient log management in large-scale Kubernetes clusters. It includes setup demonstrations, numerical data, and graphical representations from reproducible benchmarks.

", + "track": { + "@color": "#aa2727", + "#text": "DevOps" + }, + "category": "DevOps", + "type": "DevOps", + "track-url": "https://www.sfscon.it/tracks/devops-track-2024/", + "persons": { + "person": { + "@id": "7029", + "@organization": "VictoriaMetrics", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Aliaksandr_Valialkin_667e8bce024c4667e8d2039828.jpeg", + "@bio": "\"Aliaksandr is a co-founder and the principal architect of VictoriaMetrics. He is also a well-known author of the popular performance-oriented libraries: fasthttp, fastcache and quicktemplate. Prior to VictoriaMetrics, Aliaksandr held CTO and Architect roles with adtech companies serving high volumes of traffic. He holds a Master\\u2019s Degree in Computer Software Engineering. He decided to found VictoriaMetrics after experiencing the shortcomings of all available time series databases and monitoring solutions.\"", + "@url": "https://www.sfscon.it/?post_type=speaker&p=7029", + "#text": "Aliaksandr Valialkin" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59be665eca0dda5d40cf62b4a73c50deab2520c", + "@unique_id": "2024day1event43", + "@bookmark": "1", + "@rating": "1", + "start": "15:40", + "duration": "00:15", + "title": "KubeVirt", + "url": "https://www.sfscon.it/talks/kubevirt/", + "language": null, + "abstract": "making running virtual machines in a kubernetes cluster a mainstream activity", + "subtitle": "making running virtual machines in a kubernetes cluster a mainstream activity", + "description": "

KubeVirt is a Kubernetes addon for running virtual machines inside a Kubernetes cluster.

\n

Currently being in CNCF incubating state, it has a wide range of adopters by both vendors and end users, such as NVidia, Suse, ARM and Red Hat to name a few.

\n

This talk gives an overview of what is currently possible with KubeVirt on your cluster and what its future may look like. We will describe some of the features it supports, i.e. VM Import, LiveMigration, Snapshot/Restore and Monitoring.

\n

At the end of the talk attendees will have an idea of how they can use it to better integrate existing virtual machines with containers in their existing application landscape.

", + "track": { + "@color": "#aa2727", + "#text": "DevOps" + }, + "category": "DevOps", + "type": "DevOps", + "track-url": "https://www.sfscon.it/tracks/devops-track-2024/", + "persons": { + "person": { + "@id": "6251", + "@organization": "Red Hat GmbH", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2023/06/Daniel_Hiller_64896f4e6bd236489806c616f4.jpeg", + "@bio": "\"Daniel Hiller is a software engineer with more than 20 years of work experience. He strives to create software that is useful for people so they can do stuff that matters.\\r\\nHe\\u2019s currently part of the KubeVirt community. KubeVirt is a Kubernetes addon to run virtual machines on Kubernetes clusters. There he maintains, improves and automates CI and testing processes for the KubeVirt organization with Prow on Kubernetes.\"", + "@url": "https://www.sfscon.it/speakers/daniel-hiller/", + "#text": "Daniel Hiller" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59bfc6f719f3d60a65ab6db10db8ef7ae393939", + "@unique_id": "2024day1event47", + "@bookmark": "1", + "@rating": "1", + "start": "16:00", + "duration": "00:15", + "title": "Why free backup software matters", + "url": "https://www.sfscon.it/talks/why-free-backup-software-matters/", + "language": null, + "description": "

It is 2024, we’re in the middle of the cloud-era.
\nAlmost every service you desire is available in “the cloud”.
\nAt least some of your company’s critical data is stored at some cloud provider.
\nDoes your provider actually keep backups?
\nCan you live with their Recovery Time Objective (RTO)?
\nDo you believe they will actually meet the RTO?
\nMaybe you have another copy of your data?
\nIn a format that you can actually access and read?

", + "track": { + "@color": "#aa2727", + "#text": "DevOps" + }, + "category": "DevOps", + "type": "DevOps", + "track-url": "https://www.sfscon.it/tracks/devops-track-2024/", + "persons": { + "person": { + "@id": "7065", + "@organization": "Bareos GmbH &amp; Co. KG", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Andreas_Rogge_668077ffa0c2e66807bb40be2e.jpeg", + "@socials": "[{\"mastodon\":\"https:\\/\\/social.cologne\\/@arogge\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/andreas-rogge-6847bb249\\/\"}]", + "@bio": "\"I started using Linux in 1995 and still learn a new thing or two every day. Starting my carreer at a web company, I did a lot of webserver, database and networking things. After that I got into managed services and a lot of Linux consulting that provided insight into a lot of different companies and how they use free software. Nowadays I'm a developer at Bareos GmbH & Co. KG where I improve our software and provide technical support to customers.\"", + "@url": "https://www.sfscon.it/speakers/andreas-rogge/", + "#text": "Andreas Rogge" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c126dcdfc0428c8122c5d28e43e323648206a", + "@unique_id": "2024day1event71", + "@bookmark": "1", + "@rating": "1", + "start": "16:20", + "duration": "00:15", + "title": "Demystifying JWTs", + "url": "https://www.sfscon.it/talks/demystifying-jwts/", + "language": null, + "description": "

JSON Web Tokens (JWTs) have become a popular method for securely transmitting information between two parties. They are widely used in modern web applications for authentication and data exchange. However, their inner workings and security implications can be complex and often misunderstood by the developers.

\n

In this talk, we aim to demystify JWTs by exploring their structure, how they work, and the cryptographic mechanisms that ensure their integrity and confidentiality. We will discuss the components of a JWT, including headers, payloads, and signatures, and illustrate how they combine to form a token.

\n

Furthermore, we will dive into best practices for JWT usage, common pitfalls to avoid, and security considerations such as token expiration, payload size, and the choice of cryptographic algorithms. Finally, we will explore how a WebSocket connection can be secured with JWTs. Security is increasingly an overlooked necessity while utilizing a protocol that does not support authentication by default.

\n

By the end of the session, attendees will have a clear understanding of how JWTs operate, their advantages over traditional session-based authentication, and how to implement them securely in their own applications.

", + "track": { + "@color": "#d31d4e", + "#text": "Cybersecurity" + }, + "category": "Cybersecurity", + "type": "Cybersecurity", + "track-url": "https://www.sfscon.it/tracks/cybersecurity-track-2024/", + "persons": { + "person": { + "@id": "7114", + "@organization": "Microsoft", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/07/Dominika_Bobik_6682320cef6546682337f0175b.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/dominikabobik.com\\/\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/dominika-bobik\\/\"}]", + "@bio": "\"Dominika Bobik is a software engineer based in Seattle, Washington in the USA. She was born and raised in Poland and moved to the USA to pursue a Bachelor's degree in Computer Engineering. Upon graduation she started a full time position at Microsoft. She is working on Azure platform. Her focus lies all things cloud native. She is passionate about systems architecture, design and security. In her free time she enjoys scuba diving and alpine skiing.\"", + "@url": "https://www.sfscon.it/speakers/dominika-bobik/", + "#text": "Dominika Bobik" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c280f76e7ad42ec151a5330a249b18fb20353", + "@unique_id": "2024day1event75", + "@bookmark": "1", + "@rating": "1", + "start": "16:40", + "duration": "00:15", + "title": "Containerization and micro-services in real life change security and vulnerability management. Let’s Discuss.", + "url": "https://www.sfscon.it/talks/containerization-and-micro-services-in-real-life-chandge-security-and-vulnerability-management/", + "language": null, + "abstract": "Security Configuration for Containerization and micro-services applications", + "subtitle": "Security Configuration for Containerization and micro-services applications", + "description": "

Containerization and micro-services change the way software is deployed and used in production contexts. Re-evaluation of the criteria for secure development and above all for secure configuration of these solutions. It would probably be appropriate to implement security already during the creation of the solution itself.

", + "track": { + "@color": "#d31d4e", + "#text": "Cybersecurity" + }, + "category": "Cybersecurity", + "type": "Cybersecurity", + "track-url": "https://www.sfscon.it/tracks/cybersecurity-track-2024/", + "persons": { + "person": { + "@id": "5815", + "@organization": "Exprivia S.p.A.", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2022/09/carlo-falciola.jpg", + "@socials": "[{\"twitter\":\"https:\\/\\/twitter.com\\/CarloFalciola\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/carlo-falciola-6aa18a\"}]", + "@bio": "\"I'm Cybersecurity Delivery Services Manager for the Cybersecurity unit of Exprivia S.p.A.. my team is focused in Cybersecurity Governance and Prevention solutions ranging from Assessments, compliance, Identity Security, Attack Surface management, Data Protection.\"", + "@url": "https://www.sfscon.it/speakers/carlo-falciola/", + "#text": "Carlo Falciola" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c3f17232fb0e304a86aac50786d41376b9b15", + "@unique_id": "2024day1event79", + "@bookmark": "1", + "@rating": "1", + "start": "17:00", + "duration": "00:15", + "title": "Cyber Risk Management: let’s try to manage it with open source and free software", + "url": "https://www.sfscon.it/talks/cyber-risk-management-lets-try-to-manage-it-with-open-source-and-free-software/", + "language": null, + "abstract": "Open source solutions in the cybersecurity landscape, oriented to manage processes", + "subtitle": "Open source solutions in the cybersecurity landscape, oriented to manage processes", + "description": "

Cyber Risk Management is what you need to manage to ensure your business can operate being aware of threats, vulnerabilities, and to ensure that your business transactions and data are confidential, intact, available.

\n

Let’s discuss and explore solutions and resources coming from open source and free software that can help organization to manage their cybersecurity programs, with an approach that looks at sharing knowledge, adopt tools and pay attention to the budget.

", + "track": { + "@color": "#d31d4e", + "#text": "Cybersecurity" + }, + "category": "Cybersecurity", + "type": "Cybersecurity", + "track-url": "https://www.sfscon.it/tracks/cybersecurity-track-2024/", + "persons": { + "person": { + "@id": "7069", + "@organization": "Exprivia SpA", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Graziano_Specchierla_66811eb4643fe66812b31e0853.jpeg", + "@socials": "[{\"mastodon\":\"https:\\/\\/mastodon.uno\\/@ilgraz\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/grazianospecchierla\\/\"},{\"twitter\":\"https:\\/\\/twitter.com\\/ilgraz\"}]", + "@bio": "\"I am a security consultant in the areas of \\u200b\\u200bIT security and operations, and often I design and implement the project I started consulting on. I'm involved starting from the cybersecurity assessment and the establishment of cybersecurity operations in the customer\\r\\n\\r\\nI worked in a large enterprise service company of IT sector for many years , and I held various roles, so I have many years of experience not only in cybersecurity but also in design and implementation of systems for operations, in many industry sectors.\\r\\n\\r\\nI'm curious and the propensity to learn have always guided my professional growth, made up of skills but, above all, of experience in the field with customers.\"", + "@url": "https://www.sfscon.it/speakers/graziano-specchierla/", + "#text": "Graziano Specchierla" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c5708fd5132fb47f2da9e2bd1a0fe1412693b", + "@unique_id": "2024day1event83", + "@bookmark": "1", + "@rating": "1", + "start": "17:20", + "duration": "00:15", + "title": "IT Security – Don’t let Open Source Software become the next menace", + "url": "https://www.sfscon.it/talks/it-security-dont-let-open-source-software-become-the-next-menace/", + "language": null, + "abstract": "Criminals and Govs are levereging Open Source tools, libraries and software to break into organizations. Let's stop 'em.", + "subtitle": "Criminals and Govs are levereging Open Source tools, libraries and software to break into organizations. Let's stop 'em.", + "description": "

There is a prevalent myth that open source software is inherently secure. However, this is not true. Open source software is susceptible to vulnerabilities just like any other software. Moreover, the fact that anyone can review the code does not guarantee that the right people will do so. Open source software faces two important threats than not everybody are aware of:

\n

Vulnerabilities: Open source developers need to understand and communicate the security posture of their projects to users. They must adopt robust security practices. The Log4j incident in 2021, which led to the Log4Shell vulnerability, triggered a catastrophic wave of attacks due to inadequate support for the logging framework and its critical role in company procedures.

\n

Dev teams infiltration: Criminal organizations and government hacking teams are executing highly sophisticated social engineering operations to infiltrate understaffed open source projects. Their goal is to compromise development teams and insert backdoors into the software. The most recent attack on a significant project was discovered in April 2024.

\n

Objective of the Talk: Inform the community about these two security scenarios and demonstrate how to effectively address them.

", + "track": { + "@color": "#d31d4e", + "#text": "Cybersecurity" + }, + "category": "Cybersecurity", + "type": "Cybersecurity", + "track-url": "https://www.sfscon.it/tracks/cybersecurity-track-2024/", + "persons": { + "person": { + "@id": "6986", + "@organization": "Security Info", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Giancarlo_Calzetta_6676b1e5d305e6676bbc1c23ff.jpeg", + "@bio": "\"Born in 1971 (yes, I'm \\\"experienced\\\")\\r\\nPassionate in Tech since youngest age, I studied information technology, worked as a videogame programmer while studying and the started working as a journalist at 19.\\r\\nI got a big list of publications I worked for as contributor, editor and director in both consumer and B2B area.\\r\\nI actually work as\\r\\n\\r\\nDirector of Tom's Hardware (tech enthusiats site) B2B Channels,\\r\\nDirector of SecurityInfo (vertical website dedicated to IT Security)\\r\\nContributor for Il Sole 24 Ore (Most inlfuent italian financial newspaper) for technology topics.\\r\\nI'm also a trainer in IT Security topics (mainly B2B) and Digital transformation consultant.\\r\\n\\r\\nAs an hobby, with a friend I run a remote astronomical observatory in Canary Islands (Fuerteventura), available for free for school's projects.\\r\\n\\r\\nJournalist since 2000.\"", + "@url": "https://www.sfscon.it/speakers/giancarlo-calzetta/", + "#text": "Giancarlo Calzetta" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c6f43d5fb277af554585398edac26957b61aa", + "@unique_id": "2024day1event87", + "@bookmark": "1", + "@rating": "1", + "start": "17:40", + "duration": "00:15", + "title": "Biting the Apple", + "url": "https://www.sfscon.it/talks/biting-the-apple/", + "language": null, + "abstract": "MacBook Forensic with Fuji", + "subtitle": "MacBook Forensic with Fuji", + "description": "

Description: Fuji is a free software, licensed under GPL v3, that leverages Apple Software Restore (ASR) and Rsync to create forensic images of macOS systems. It operates on logged-in computers to efficiently capture disk images while maintaining data integrity.

\n

Bypassing encryption on Apple silicon processors presents significant challenges due to their advanced hardware encryption mechanisms and secure enclave protections. These processors employ complex security protocols that safeguard data at a hardware level, making unauthorized access and decryption extremely difficult. Without proper authentication or specific exploits, forensic imaging on these devices requires substantial technical expertise and often necessitates the cooperation of the device owner.

\n

We’ll see how to acquire forensically MacBook data with free software

", + "track": { + "@color": "#d31d4e", + "#text": "Cybersecurity" + }, + "category": "Cybersecurity", + "type": "Cybersecurity", + "track-url": "https://www.sfscon.it/tracks/cybersecurity-track-2024/", + "persons": { + "person": { + "@id": "4416", + "@organization": "D.S.A.", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2019/08/Alessandro_Farina.jpg", + "@bio": "\"Happy Father (13 year experience granted)\\r\\nAddicted to volunteering in CyberSecurity Awareness, HackInBo Main Staff member, RomHack Main Staff Member, CyberSaiyan.\\r\\nInformation Technology Expert \\u2013 Senior Project Manager, Working Partner of D.S.A. S.r.l.\\r\\nLinux and Free software early and happy adopter and developer.\\r\\nI\\u2019ve tried to spread the free software philosophy in every place where I\\u2019ve worked, sometimes achieving big successes.\\r\\nI\\u2019m a digital forensics expert, I work with Ministry of Justice Office of Public Prosecutor an almost all Italian Law Enforcement Agencies \\u2013 Private companies (names covered by NDA)\\r\\nI give support for IT security, Incident response e Cybercrime to medium to big public and private companies.\\r\\nI\\u2019ve been technical advisor for incident response and Computer Forensics with various Law firms. Law Enforcements assistant for inspections and searches.\"", + "@url": "https://www.sfscon.it/speakers/alessandro-farina/", + "#text": "Alessandro Farina" + } + }, + "bookmark": "1", + "rating": "1" + } + ] + }, + { + "@name": "Seminar 4", + "event": [ + { + "@id": "670d1b59a96246496fc52ef52a192483e2d3036f23e66", + "@unique_id": "2024day1event8", + "@bookmark": "1", + "@rating": "1", + "start": "11:00", + "duration": "00:15", + "title": "Apisense – Easily monitor and track your REST-API data quality", + "url": "https://www.sfscon.it/talks/apisense-easily-monitor-and-track-your-rest-api-data-quality/", + "language": null, + "abstract": "An easy and modular solution to faulty REST-API data developed in collaboration with the Open Data Hub", + "subtitle": "An easy and modular solution to faulty REST-API data developed in collaboration with the Open Data Hub", + "description": "

Ever had the issue of fetching invalid or faulty data from a REST-API and noticing only later, when everything broke down? Not anymore!

\n

Apisense was developed in collaboration with the Open Data Hub to be an easy and modular tool to fit every need possible used to ensure and monitor the availability, quality and correctness of data provided via REST-APIs.

\n

Sounds too good to be true? Tune in to find out how Apisense can help both producers and consumers of data to be aware of the quality and reliability of the data they provide/consume.

", + "track": { + "@color": "#c48c2d", + "#text": "Developers" + }, + "category": "Developers", + "type": "Developers", + "track-url": "https://www.sfscon.it/tracks/developers-track-2024/", + "persons": { + "person": [ + { + "@id": "6934", + "@organization": "Technical University of Munich", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Aurelio_Buonomo_66617a90ba47366617fc55df8e.jpeg", + "@bio": "\"Aurelio Buonomo was introduced to technology at a very young age. Due to his increasing passion he chose to attend the school \\\"TFO Max Valier\\\" in Bozen. There he was introduced to the world of free software by his very passionate teachers.\\r\\nAfter graduating high school, he enrolled at the Technical University of Munich where he currently is studying computer science.\\r\\nIn his free time, he always tinkers around with projects, keeping them free to use for everyone and striving to grow a project to be something big.\"", + "@url": "https://www.sfscon.it/speakers/aurelio-buonomo/", + "#text": "Aurelio Buonomo" + }, + { + "@id": "6944", + "@organization": "Technical University of Munich", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/09/Christian_Zanotti_6669a623e547e66ea8c8ebf608.jpeg", + "@bio": "\"After discovering an ever-growing interest for technology, Christian Zanotti decided to enrol in the school "TFO Max Valier" in Bozen. Attending the school for the following 5 years his passion for informatics grew steadily. Still hungry for knowledge after graduation he decided to enrol at the Technical University of Munich where he is currently studying computer science.\"", + "@url": "https://www.sfscon.it/speakers/christian-zanotti/", + "#text": "Christian Zanotti" + } + ] + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59aad45eff5d05607a8980057fb4c223254cace", + "@unique_id": "2024day1event12", + "@bookmark": "1", + "@rating": "1", + "start": "11:20", + "duration": "00:15", + "title": "MongoDB Alternatives: Is There A Need For A New Open Standard?", + "url": "https://www.sfscon.it/talks/mongodb-alternatives-is-there-a-need-for-a-new-open-standard/", + "language": null, + "description": "

This talk takes you on a journey through the history of SQL as an Open Standard, emphasizing its pivotal role in shaping the database industry. It also highlights the pressing need for a similar standard in MongoDB-compatible open databases. The presentation introduces FerretDB as a groundbreaking solution bridging MongoDB and open databases, ensuring seamless transitions without extensive application-level changes. This talk illuminates the importance of open standards and presents a path forward for enhanced compatibility and collaboration within the open-source database community.

", + "track": { + "@color": "#c48c2d", + "#text": "Developers" + }, + "category": "Developers", + "type": "Developers", + "track-url": "https://www.sfscon.it/tracks/developers-track-2024/", + "persons": { + "person": { + "@id": "7018", + "@organization": "FerretDB", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Peter_Farkas_667d822b61a5b667e59ca45dc2.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/www.ferretdb.io\\/\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/farkasp\\/\"},{\"twitter\":\"https:\\/\\/twitter.com\\/farkasp\"}]", + "@bio": "\"Peter has been building sustainable open-source projects and businesses for the last 14 years. He currently serves as the Co-Founder and CEO of FerretDB, the truly Open Source MongoDB Alternative, which helps users to use MongoDB drivers seamlessly with PostgreSQL as the database backend.\\r\\nPeter believes that open source is as sustainable in terms of product and revenue growth as proprietary solutions, and more and more entrepreneurs will work on open source projects.\"", + "@url": "https://www.sfscon.it/speakers/peter-farkas/", + "#text": "Peter Farkas" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59ac322670bd19b0441a1063b51c44490a7d5c6", + "@unique_id": "2024day1event16", + "@bookmark": "1", + "@rating": "1", + "start": "11:40", + "duration": "00:15", + "title": "MariaDB Vector: Why your AI data should be in an RDBMS", + "url": "https://www.sfscon.it/talks/mariadb-vector-why-your-ai-data-should-be-in-an-rdbms/", + "language": null, + "abstract": "Databases and AI: How to supercharge application development with MariaDB vector", + "subtitle": "Databases and AI: How to supercharge application development with MariaDB vector", + "description": "

As AI apps become mainstream, conventional IT wisdoms apply. AI apps must be no monoliths, but need to be logged, audited, and overall well integrated into normal IT. This means all AI data – vectors, input, output – is best stored in a normal RDBMS. Better still: In an open source database with performance, stability, and ease of use. Here is an overview of the AI opportunities, possibilities, methodologies, and features in MariaDB Server.

", + "track": { + "@color": "#c48c2d", + "#text": "Developers" + }, + "category": "Developers", + "type": "Developers", + "track-url": "https://www.sfscon.it/tracks/developers-track-2024/", + "persons": { + "person": { + "@id": "7035", + "@organization": "MariaDB Foundation", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Kaj_Arno_667e9bad69d51667f1ac972650.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/mariadb.org\"},{\"facebook\":\"https:\\/\\/www.facebook.com\\/mariadb.org\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/company\\/mariadb-foundation\\/\"},{\"twitter\":\"https:\\/\\/x.com\\/mariadb_org\"}]", + "@bio": "\"Kaj Arn\\u00f6 is a software industry generalist and currently the CEO of the MariaDB Foundation. MariaDB is the world's most popular Open Source database, of which Arn\\u00f6 has a long experience as the former Vice President of the MySQL Community at MySQL AB, Sun Microsystems and Oracle Corporation, and founder of MariaDB Corporation Ab. Arn\\u00f6 is also a prolific columnist contributing to several newspapers in Finland.\"", + "@url": "https://www.sfscon.it/speakers/kaj-arno/", + "#text": "Kaj Arnö" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59add1d2c660a48f92fa55cae9d79acfd0d21ac", + "@unique_id": "2024day1event20", + "@bookmark": "1", + "@rating": "1", + "start": "12:00", + "duration": "00:15", + "title": "1, 2, 3, Doc Kit!", + "url": "https://www.sfscon.it/talks/1-2-3-doc-kit/", + "language": null, + "abstract": "Automate the creation of software documentation", + "subtitle": "Automate the creation of software documentation", + "description": "

Doc Kit is an open source command line tool that automates the creation of software documentation and release notes.
\nIt can be used in conjunction with DocBook Authoring and Publishing Suite (DAPS) for quickly preparing the skeleton of professional looking software documentation.

\n

Doc Kit has been designed for initialising SUSE or openSUSE documentation repositories but in a few steps it can be re-used for other projects too.
\nThe tool consists of two parts:
\n1. a command-line tool called doc-kit that can download documentation boilerplate files
\n2. a repository of documentation boilerplate files, such as the SUSE/openSUSE book preface and entity files.

\n

The presentation will show how to use Doc Kit and how to customise the provided templates for creating a brand new documentation or release notes projects.

", + "track": { + "@color": "#c48c2d", + "#text": "Developers" + }, + "category": "Developers", + "type": "Developers", + "track-url": "https://www.sfscon.it/tracks/developers-track-2024/", + "persons": { + "person": { + "@id": "4324", + "@organization": "SUSE", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2018/10/Marina_Latini.png", + "@bio": "\"Marina Latini studied Computer Science at the University of Perugia, and is a free software advocate since 2007, promoting free software and open standards. In 2010, she was one of the first Italian members of the LibreOffice community and from 2016 until February 2020 she served as board member of The Document Foundation. From September 2020 she is a member of the Membership Committee of The Document Foundation. She has also been an active member of the Fedora Project from 2009 to 2013.\\r\\nMarina co-founded Associazione LibreItalia and has been involved in several events, migrations and training related to LibreOffice. She worked previously at Studio Storti and CIB at migrations and trainings to LibreOffice for the Italian Public Administrations and as a senior migrations and deployments engineer.\\r\\nSince 2020, Marina works at SUSE as a Software Release Engineer.\"", + "@url": "https://www.sfscon.it/speakers/marina-latini/", + "#text": "Marina Latini" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59afa843410334595ae50dbedaebc341dc52915", + "@unique_id": "2024day1event24", + "@bookmark": "1", + "@rating": "1", + "start": "12:20", + "duration": "00:15", + "title": "codEEmoji – Making code more informative with emojis", + "url": "https://www.sfscon.it/talks/codeemoji-making-code-more-informative-with-emojis/", + "language": null, + "description": "

This presentation focuses on the open-source project codEEmoji, an IDE plugin that adds additional information to the code through emojis. The talk starts by discussing the benefits of this approach compared to other ways to present information for the developer in IDEs. It follows by presenting the plugin and its main functionalities, which go from pointing out bad practices in method and variable naming to presenting modifiers and method characteristics in their usage. Next, it is presented how the plugin structure was designed to receive new contributions. The talk finishes by presenting some challenges and future features.

\n

https://github.com/codeemoji/codeemoji-plugin

\n

https://plugins.jetbrains.com/plugin/22416-codeemoji

", + "track": { + "@color": "#c48c2d", + "#text": "Developers" + }, + "category": "Developers", + "type": "Developers", + "track-url": "https://www.sfscon.it/tracks/developers-track-2024/", + "persons": { + "person": { + "@id": "5312", + "@organization": "Free University of Bozen-Bolzano", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/form-speakers/eduardo-guerra-7cfbcd8ccafbe709f6f4c90e65942e3d.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/www.unibz.it\\/it\\/faculties\\/computer-science\\/academic-staff\\/person\\/43879-eduardo-martins-guerra\"},{\"facebook\":\"https:\\/\\/www.facebook.com\\/profile.php?id=1639054168\"},{\"twitter\":\"https:\\/\\/twitter.com\\/emguerra\"}]", + "@bio": "\"Martins, Eduardo is a Researcher at the Free University of Bozen-Bolzano, Italy. The focus of Eduardo Guerra\\u2019s research can be defined as \\u201cfind better ways to develop software,\\u201d which can include programming approaches and processes to be used by the development team. He considers the principles of Agile Software Development the core guidance of his research since they share the goal to improve software quality, optimize development time, and increase software adaptability. Test-driven development (TDD) was the core of several works that focused on test code refactoring, application of TDD for specific kinds of software, and teaching and evaluating the technique. Also, in the scope of programming techniques, the usage of metadata and code annotations were the focus of several works that aimed to study them as an alternative to make the software more adaptable and improve the code quality.\"", + "@url": "https://www.sfscon.it/speakers/eduardo-guerra/", + "#text": "Eduardo Guerra" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b143ef85c83c18d03a3582a5673c4d9ed008e", + "@unique_id": "2024day1event27", + "@bookmark": "1", + "@rating": "1", + "start": "12:40", + "duration": "00:15", + "title": "Can Test Driven Development be speeded up with Generative AI?", + "url": "https://www.sfscon.it/talks/can-test-driven-development-be-speeded-up-with-generative-ai/", + "language": null, + "description": "

Generative AI tools, like ChatGPT, have shown remarkable capabilities in natural language processing. It is logical to explore their potential in programming, yet the quality of generated code raises concerns. Test-Driven Development (TDD) offers a promising approach to address these concerns. In this talk, we will explore how developers can effectively collaborate with generative AI tools to enhance TDD practices, ensuring higher code quality and streamlined development processes. To this aim, we will present two interaction patterns between a human and an AI.

", + "track": { + "@color": "#c48c2d", + "#text": "Developers" + }, + "category": "Developers", + "type": "Developers", + "track-url": "https://www.sfscon.it/tracks/developers-track-2024/", + "persons": { + "person": [ + { + "@id": "6365", + "@organization": "Free University of Bozen-Bolzano", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/05/Moritz_mock_649d8a99013416645d9ddae551.jpeg", + "@socials": "[{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/moritz-mock\\/\"},{\"twitter\":\"https:\\/\\/twitter.com\\/moritz_mock\"}]", + "@bio": "\"Moritz Mock is a PhD student in Advanced-Systems Engineering (ASE) at the Free University of Bozen-Bolzano. He holds a Master of Science in Software Engineering for Information Systems from the Free University of Bozen-Bolzano. His main research interest includes mining open-source projects to detect vulnerabilities utilizing static and machine-learning approaches. He is currently working with Prof. Barbara Russo's research group.\"", + "@url": "https://www.sfscon.it/speakers/moritz-mock/", + "#text": "Moritz Mock" + }, + { + "@id": "6368", + "@organization": "Free University of Bozen-Bolzano", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2023/09/Barbara_Russo_649d9728a287e64f7519c9e98c.jpeg", + "@bio": "\"I am full professor in Computer Science at the Faculty of Engineering of the Free University of Bozen-Bolzano. I havea PhD in pure mathematics from the university of Trento, Italy. I was visiting researcher at the Max Plan Institute for Mathematics, Bonn, Germany. I have published more than 150 articles in pure mathematics and computer science. Research interest is in software system engineering, software maintenance and security.\"", + "@url": "https://www.sfscon.it/speakers/barbara-russo/", + "#text": "Barbara Russo" + }, + { + "@id": "4993", + "@organization": "Free University of Bozen-Bolzano", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/form-speakers/jorge-melegati-xiaofeng-wang-a56004170c92e74fc704d0b9f0cf3e19.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/www.jmelegati.com\\/\"},{\"twitter\":\"https:\\/\\/x.com\\/JMelegati\"}]", + "@bio": "\"Jorge Melegati is a researcher at the Faculty of Engineering of the Free University of Bozen-Bolzano. His research focuses on improving software engineering considering human and process-related aspects, especially with the use of AI-based tools. He has published in several journals and conferences. Before joining academia, he has acted as a professional software developer for more than eight years.\"", + "@url": "https://www.sfscon.it/speakers/jorge-melegati/", + "#text": "Jorge Melegati" + } + ] + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b30af7bbe17ed948be5c9b8b2c2c9a9bced7b", + "@unique_id": "2024day1event32", + "@bookmark": "1", + "@rating": "1", + "start": "13:00", + "duration": "00:15", + "title": "ScrapeGraphAI", + "url": "https://www.sfscon.it/talks/scrapegraphai/", + "language": null, + "abstract": "you only scrape once", + "subtitle": "you only scrape once", + "description": "

ScrapeGraphAI is an innovative Python library designed to revolutionize the field of web scraping and in less than 4 months it collected over than 12k stars on Github and more than 100k downloads on pip. It allows to scrape which website you want with the knowledge of the HTML code and with the LLM models. By seamlessly integrating a natural language model within its architecture, ScrapeGraphAI enables the extraction of valuable information from websites with unparalleled flexibility and accuracy. Unlike traditional scraping tools that rely on rigid patterns or manual configuration, ScrapeGraphAI constructs a dynamic graph of operations to interrogate web pages, ensuring that relevant data is captured even in the face of changing website structures. This library’s unique fusion of language models and directed graph logic empowers developers to create sophisticated scraping workflows with minimal coding required, thereby streamlining the process of extracting valuable insights from online content. More info at this link: https://github.com/VinciGit00/Scrapegraph-ai

", + "track": { + "@color": "#c48c2d", + "#text": "Developers" + }, + "category": "Developers", + "type": "Developers", + "track-url": "https://www.sfscon.it/tracks/developers-track-2024/", + "persons": { + "person": { + "@id": "7084", + "@organization": "scrapegraphai", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/marco_Vinciguerra_66818de945d0d66819144447de.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/marco-vinciguerra-dev.onrender.com\\/\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/marco-vinciguerra-7ba365242\\/\"}]", + "@bio": "\"I am the founder of scrapegraphai, a python library that has more than 12k stars on gh and more than 100k downloads on pip\"", + "@url": "https://www.sfscon.it/speakers/marco-vinciguerra/", + "#text": "Marco Vinciguerra" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b4856e093dcbebb562a4b7731e7c08f0f707c", + "@unique_id": "2024day1event36", + "@bookmark": "1", + "@rating": "1", + "start": "13:20", + "duration": "00:15", + "title": "Software Engineering Automation: From early tools to Generative AI and beyond", + "url": "https://www.sfscon.it/talks/software-engineering-automation-from-early-tools-to-generative-ai-and-beyond/", + "language": null, + "description": "

The emergence of Generative AI tools, such as ChatGPT and Copilot, promises to disrupt knowledge-based work, including software development. However, these are not the first tools to support the automation of software engineering. From the early days, various tools have been developed to remove repetitive tasks, reduce workload, and consequently increase the abstraction of software development, such as auto-completion and automatic refactoring. In this talk, we present the different levels of the automation of software engineering. We will examine how past and present tools have achieved these levels, the current capabilities of Generative AI tools, and what we can expect for the future.

", + "track": { + "@color": "#c48c2d", + "#text": "Developers" + }, + "category": "Developers", + "type": "Developers", + "track-url": "https://www.sfscon.it/tracks/developers-track-2024/", + "persons": { + "person": { + "@id": "4993", + "@organization": "Free University of Bozen-Bolzano", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/form-speakers/jorge-melegati-xiaofeng-wang-a56004170c92e74fc704d0b9f0cf3e19.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/www.jmelegati.com\\/\"},{\"twitter\":\"https:\\/\\/x.com\\/JMelegati\"}]", + "@bio": "\"Jorge Melegati is a researcher at the Faculty of Engineering of the Free University of Bozen-Bolzano. His research focuses on improving software engineering considering human and process-related aspects, especially with the use of AI-based tools. He has published in several journals and conferences. Before joining academia, he has acted as a professional software developer for more than eight years.\"", + "@url": "https://www.sfscon.it/speakers/jorge-melegati/", + "#text": "Jorge Melegati" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b6099fe071b2dd58b07457a15d2dcfa5387d5", + "@unique_id": "2024day1event40", + "@bookmark": "1", + "@rating": "1", + "start": "13:40", + "duration": "00:15", + "title": "The Crucial Role of Openness in Modern Software Development", + "url": "https://www.sfscon.it/talks/the-crucial-role-of-openness-in-modern-software-development/", + "language": null, + "description": "

Developers and providers of software-based products as well as other new technologies for the global market know that the winning solutions for future-proof projects share one key feature: interoperability with products from other suppliers. Achieving this interoperability means relying on open standards, open-source technologies and establishing key partnerships with other industry players.

\n

In effect, openness principles are increasingly essential to software development. This talk will provide an in-depth analysis of how these concepts underpin interoperability, security and innovation in today’s technological landscape.

\n

It will discuss the importance of open standards in creating seamless integration between diverse systems and applications, ensuring that technological advancements remain accessible and adaptable. The session will also cover key strategies and best practices for the adoption of open solutions that drive compatibility and competitiveness.

\n

Finally, by examining Jakarta EE and the Payara Community, the talk will illustrate how these frameworks exemplify the power of open source in building innovative, scalable and future-oriented applications.

", + "track": { + "@color": "#c48c2d", + "#text": "Developers" + }, + "category": "Developers", + "type": "Developers", + "track-url": "https://www.sfscon.it/tracks/developers-track-2024/", + "persons": { + "person": [ + { + "@id": "6959", + "@organization": "Payara Services", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Chiara_Civardi_66706131e270e6673000483c03.jpeg", + "@bio": "\"Chiara is a Marketing Coordinator with over 10 years of experience in producing technical content on open technologies and standards. Her expertise includes open-source software, open network technologies for industrial communications, automation. Chiara has a passion for sharing knowledge about efficient and innovative solutions for smart factories and the digital transformation of businesses. She holds a PhD for ETH Zurich and a MSc from the University of Southampton.\"", + "@url": "https://www.sfscon.it/speakers/chiara-civardi/", + "#text": "Chiara Civardi" + }, + { + "@id": "6967", + "@organization": "Payara Services Ltd", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/08/Dominika_Tasarz-Sochacka_6672fed63aebd66c86813ede9b.jpeg", + "@socials": "[{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/dominikatasarz\\/\"}]", + "@bio": "\"With over 13 years of experience working in the Java industry, I have a passion for fostering developer communities, growing open source projects, and shaping the future of Java and Jakarta EE. My expertise lies in marketing communications which I use to drive collaboration and knowledge-sharing among developers.\\r\\n\\r\\nOver the years of working with various Java middleware technologies, I've been involved in educating Java developers about products, frameworks and tools that make their work lives easier and empowering them to stay at the forefront of Java innovation.\\r\\n\\r\\nAs one of the original team members at Payara, working on company's Java runtimes from day one, I've been contributing to the creation of Payara brand as well as growing and educating Payara users' community. In my current role of a Senior Marketing Specialist and Community Manager, I'm organizing and hosting regular developer focused educational events featuring Java Champions, Jakarta EE experts and experienced Java Developers.\"", + "@url": "https://www.sfscon.it/speakers/dominika-tasarz-sochacka/", + "#text": "Dominika Tasarz-Sochacka" + } + ] + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b7b9e47ddb0c4892ac581f68411c428bb8be2", + "@unique_id": "2024day1event44", + "@bookmark": "1", + "@rating": "1", + "start": "14:00", + "duration": "00:15", + "title": "AI Tools for Jakarta EE", + "url": "https://www.sfscon.it/talks/ai-tools-for-jakarta-ee/", + "language": null, + "description": "

Discover how AI-powered tools for Jakarta EE streamline the entire development lifecycle.

\n

Over the years, there have been many ways of starting a project: archetypes, project generators, visual designers, and so on. What do we get when we add a language model to the mix? A project generator that scaffolds domain-relevant Jakarta EE applications with backend and frontend functionalities in place.

\n

Experience the future of enterprise application development through practical, cutting-edge demonstrations.

", + "track": { + "@color": "#c48c2d", + "#text": "Developers" + }, + "category": "Developers", + "type": "Developers", + "track-url": "https://www.sfscon.it/tracks/developers-track-2024/", + "persons": { + "person": { + "@id": "6970", + "@organization": "Payara Services Limited", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Gaurav_Gupta_66730049f296b667304afed964.jpeg", + "@socials": "[{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/jgauravgupta\\/\"},{\"twitter\":\"https:\\/\\/twitter.com\\/jgauravgupta\"}]", + "@bio": "\"Gaurav Gupta is a Senior Software Engineer at Payara and the author of Jeddict, an open-source Jakarta EE application development platform that accelerates developer productivity by simplifying the creation and management of complex entity relationship models. Gaurav is also an active committer to Apache NetBeans IDE and a contributor to the Eclipse GlassFish server, enhancing these tools with his expertise and dedication to the open-source community.\"", + "@url": "https://www.sfscon.it/speakers/gaurav-gupta/", + "#text": "Gaurav Gupta" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59b92e315108b880443c5a7a45a699aceb1d3c0", + "@unique_id": "2024day1event48", + "@bookmark": "1", + "@rating": "1", + "start": "14:20", + "duration": "00:15", + "title": "How to start contributing and still have fun", + "url": "https://www.sfscon.it/talks/how-to-start-contributing-and-still-have-fun/", + "language": null, + "description": "

Are you new to Open Source and about to create your first commit, but still haven’t clicked on “New Pull Request” button?

\n

There will be always something holding you back.

\n

Or do you want to gain experience that can be applied at your school or work but don’t know how?

\n

Open Source gives you that opportunity.

\n

Let’s talk about it because we all go through it: how to find your project; fear of the first commit, the first code review, the first mistakes and everything is public; fight toxic communities – no one is perfect; when to open your code;

", + "track": { + "@color": "#c48c2d", + "#text": "Developers" + }, + "category": "Developers", + "type": "Developers", + "track-url": "https://www.sfscon.it/tracks/developers-track-2024/", + "persons": { + "person": { + "@id": "5797", + "@organization": "Red Hat", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/form-speakers/juri-solovjov-99470f10372f7fce2d8b7a2c1bb75a79.jpeg", + "@socials": "[{\"facebook\":\"https:\\/\\/www.facebook.com\\/juras08\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/juri-solovjov\\/\"}]", + "@bio": "\"

ISTQB certified Software Quality Engineer with 4 years experience at Red Hat<\\/p>\\r\\nPreviously worked as a Front-End Developer\\r\\n\\r\\nOriginally came from Estonia, currently located in Brno, Czechia.\\r\\n\\r\\nStudied Telecommunications and Telecommunication Services at Tallinn University of Technology\"", + "@url": "https://www.sfscon.it/speakers/juri-solovjov/", + "#text": "Juri Solovjov" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59ba9d2446fabfa6e79c027bc716d57b55a53d5", + "@unique_id": "2024day1event52", + "@bookmark": "1", + "@rating": "1", + "start": "14:40", + "duration": "00:15", + "title": "Monolith Splitter", + "url": "https://www.sfscon.it/talks/monolith-splitter/", + "language": null, + "description": "

Migration from monolithic systems to microservices has earned significant interest in recent years. Software architects and developers welcome approaches, techniques, and patterns that can facilitate and automate the migration process. This talk will present Monolith Splitter, a tool that employs various approaches for splitting a monolith into a microservices architecture. This tool could be beneficial for software architects looking to migrate monolithic projects to a more scalable architecture. It uses execution traces to analyze monolithic software and suggests which classes should be grouped together in separate services according to criteria such as cohesion, modularity, and independence of evolvability. We will showcase the application of the tool to a series of open source software projects, discussing the outcomes, the benefits, and the current limitations.

", + "track": { + "@color": "#c48c2d", + "#text": "Developers" + }, + "category": "Developers", + "type": "Developers", + "track-url": "https://www.sfscon.it/tracks/developers-track-2024/", + "persons": { + "person": [ + { + "@id": "7055", + "@organization": "T-Mobile Czech Republic", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Michal_Skipala_667f138765caa667fc8c94ee44.jpeg", + "@bio": "\"A passionate software engineer specializing in full stack development, focusing on Java and ReactJS. Presently employed at T-Mobile as a software engineer, holding a bachelor's degree in software engineering from CTU in Prague, and currently pursuing a master's degree at Masaryk University in Brno. Thrives on overcoming new challenges and embraces continuous learning within the dynamic landscape of software development.\"", + "@url": "https://www.sfscon.it/speakers/michal-skipala/", + "#text": "Michal Skipala" + }, + { + "@id": "6997", + "@organization": "Masaryk University", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/09/Bruno_Rossi_667bd90db6a0966d867a841a50.jpeg", + "@socials": "[{\"twitter\":\"https:\\/\\/x.com\\/brrossi75\\/\"}]", + "@bio": "\"Bruno Rossi is Assistant Professor at the Lab of Software Architectures and Information Systems at the Faculty of Informatics, Masaryk University, Brno, Czechia. He was previously RTD at the Free University of Bozen-Bolzano. He is mostly interested in software evolution, open source software systems, and cyber-physical systems. Enthusiast of open source software, which he also incorporates into his courses.\"", + "@url": "https://www.sfscon.it/speakers/bruno-rossi/", + "#text": "Bruno Rossi" + } + ] + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59bbffb0181b65483f87888887fbd54f0373300", + "@unique_id": "2024day1event56", + "@bookmark": "1", + "@rating": "1", + "start": "15:00", + "duration": "00:15", + "title": "The Next Level of Metrics in Microservices", + "url": "https://www.sfscon.it/talks/the-next-level-of-metrics-in-microservices/", + "language": null, + "abstract": "Going beyond measuring workload and performance", + "subtitle": "Going beyond measuring workload and performance", + "description": "

In Microservices, measuring workload and performance are old news! They’re still important, but we can do more. In this talk, we’re navigating through new ideas on how to use metrics to tell us more than the basics about our microservices. Did you know we can evaluate our microservices in the architectural level? So we’ll have concrete data to support our decision-making. Between patterns and bad smells, we can use metrics to detect the points where they happen. Let’s explore these new possibilities to improve our experience when evolving a microservice system, towards a more robust and maintainable direction! Bonus: you’ll learn about an open-source tool to facilitate this process, of which I’m a maintainer, and you could be too!

", + "track": { + "@color": "#c48c2d", + "#text": "Developers" + }, + "category": "Developers", + "type": "Developers", + "track-url": "https://www.sfscon.it/tracks/developers-track-2024/", + "persons": { + "person": { + "@id": "6301", + "@organization": "Free University of Bozen-Bolzano", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2023/06/Joao Francisco_Lino Daniel_649ac32cc9632649ac3e3896e1.jpeg", + "@bio": "\"He's a Brazilian recently arrived in Italy for the PhD. He believes that from diversity (of backgrounds, of experiences, of perspectives) comes excellence. Computer scientist for academic background, software engineer for profession, nerd by genetics, and trying to expand his horizon bit by bit.\"", + "@url": "https://www.sfscon.it/speakers/joao-francisco-lino-daniel/", + "#text": "João Francisco Lino Daniel" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59bd6218865b0b7e6984f3c8deb806e2aa879d8", + "@unique_id": "2024day1event60", + "@bookmark": "1", + "@rating": "1", + "start": "15:20", + "duration": "00:15", + "title": "What’s New in Notifications", + "url": "https://www.sfscon.it/talks/whats-new-in-notifications/", + "language": null, + "description": "

Over the past 6 months I’ve been working on improving notifications for the GNU/Linux desktop. This includes a new version of the xdg-desktop-portal notification spec, improved notification UI in GNOME Shell, and various backend components (e.g. GLib and portals).

\n

In this talk I’ll explain why it was so difficult, how we untangled it, and what’s in store for the future.

", + "track": { + "@color": "#c48c2d", + "#text": "Developers" + }, + "category": "Developers", + "type": "Developers", + "track-url": "https://www.sfscon.it/tracks/developers-track-2024/", + "persons": { + "person": { + "@id": "4052", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2017/10/Julian_Sparber.jpg", + "@socials": "[{\"twitter\":\"https:\\/\\/twitter.com\\/iamjsparber\"}]", + "@bio": "\"Julian Sparber is a software developer from South Tyrol. He got his BSc in Applied Computer Science at the University of Urbino. He's always been interested in software and its relation with society, which got him into software freedom.\"", + "@url": "https://www.sfscon.it/speakers/julian-sparber/", + "#text": "Julian Sparber" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59bebc535e82802ef9bc89b64a058629cabed34", + "@unique_id": "2024day1event64", + "@bookmark": "1", + "@rating": "1", + "start": "15:40", + "duration": "00:15", + "title": "Sync Your Tunes, Sync Your Screen: Introducing SyncWall", + "url": "https://www.sfscon.it/talks/sync-your-tunes-sync-your-screen-introducing-syncwall/", + "language": null, + "description": "

Ever wished your computer could visually represent your playlist? SyncWall lets you turn every song into a unique visual experience, by dynamically matching your desktop wallpaper to the music currently playing on Spotify!

\n

We’ll demonstrate SyncWall in action, showcasing its capabilities, and then we’ll dive deeper into the code and the process of creating the images.

\n

SyncWall relies on two core components: Spotify’s API, which provides with all the necessary song information, and Python’s PIL library, which allows to easily manipulate images. Throughout the presentation, we will explore the key concepts and most useful functions of these two technologies, providing you with practical tools to integrate into your own projects.

\n

Even if Syncwall is designed for GNOME, we will dive deep on how to make it work also in different desktop environments. This will cover all the steps and the challenges involved.

", + "track": { + "@color": "#c48c2d", + "#text": "Developers" + }, + "category": "Developers", + "type": "Developers", + "track-url": "https://www.sfscon.it/tracks/developers-track-2024/", + "persons": { + "person": { + "@id": "7088", + "@organization": "UniPi", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Giovanni Enrico_Loni_66819248e621d66819339af5ed.jpeg", + "@socials": "[{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/genricoloni\\/\"}]", + "@bio": "\"Giovanni Enrico is a Computer Engineering MSc Student at University of Pisa.\\r\\nHis main interests are Cybersecurity, Computer Architectures, with a particular focus on the security side, and everything that can be considered low level, to discover \\\"how that thing works\\\".\\r\\nHe believes in the leveraging of skills beyond academic pursuits, to create solutions useful in everyday life, following the mantra of Open Source.\\r\\nHe's always open to connect with those who have common interests, to share ideas and ongoing projects to join.\"", + "@url": "https://www.sfscon.it/speakers/giovanni-enrico-loni/", + "#text": "Giovanni Enrico Loni" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c01c907c47327a9f8aca4c2ca140d9b9d058f", + "@unique_id": "2024day1event68", + "@bookmark": "1", + "@rating": "1", + "start": "16:00", + "duration": "00:15", + "title": "Nurturing OpenJDK distribution: Eclipse Temurin Success History and plan", + "url": "https://www.sfscon.it/talks/nurturing-openjdk-distribution-eclipse-temurin-success-history-and-plan/", + "language": null, + "description": "

Join me as we explore the pillars that make Eclipse Temurin one of the most widely adopted, enterprise-ready OpenJDK Runtime (over 20M monthly downloads) and also delve into the future of Adoptium and explore the goals set for 2024.
\nAs we navigate the landscape of open source Java runtimes, Adoptium is committed to fostering vibrant, healthy projects that thrive with the support of robust communities. In this talk, we will also shine a spotlight on our dedication to delivering top-notch quality and outstanding performance, with a special focus on our AQAvit project and Security Effort.

", + "track": { + "@color": "#c48c2d", + "#text": "Developers" + }, + "category": "Developers", + "type": "Developers", + "track-url": "https://www.sfscon.it/tracks/developers-track-2024/", + "persons": { + "person": [ + { + "@id": "7074", + "@organization": "Eclipse Foundation", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Carmen_Delgado_66814169ba742668143772b3fd.jpeg", + "@socials": "[{\"mastodon\":\"https:\\/\\/fosstodon.org\\/@cldelgadop\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/cldelgadop\\/\"},{\"twitter\":\"https:\\/\\/twitter.com\\/cldelgadop\"}]", + "@bio": "\"Carmen Delgado joined Eclipse Foundation as Adoptium Community Manager in October 2022 and is responsible for helping the Eclipse Adoptium working group members achieve their goals and objectives and being the bridge between their procedures and Eclipse Foundation processes and Staff. Carmen has a background in project, operations, and financial management in SMEs, non-profits, and start-ups from different industries: healthcare, Pharma, Fintech, and Tech. She also volunteers as a group manager and mentor at Step4ward, a mentoring program in Spain for women starting in the tech world.\"", + "@url": "https://www.sfscon.it/speakers/carmen-delgado/", + "#text": "Carmen Delgado" + }, + { + "@id": "7036", + "@organization": "Eclipse Foundation", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Ivar_Grimstad_667ea1bc78e64667ea2bd0fe32.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/agilejava.eu\"},{\"mastodon\":\"https:\\/\\/mastodon.social\\/@ivar_grimstad\"},{\"linkedin\":\"https:\\/\\/x.com\\/ivar_grimstad\"},{\"twitter\":\"https:\\/\\/x.com\\/ivar_grimstad\"}]", + "@bio": "\"Ivar Grimstad is the Jakarta EE Developer Advocate at Eclipse Foundation. He is a Java Champion and JUG Leader based in Sweden.\\r\\n\\r\\nBesides advocating the Jakarta EE technologies, Ivar is contributing to the Jakarta EE specifications as well as being the PMC Lead for Eclipse Enterprise for Java (EE4J). He is also one of the specification leads for Jakarta MVC and represents Eclipse Foundation on the JCP Executive Committee.\\r\\n\\r\\nIvar is also involved in various other open-source projects and communities. He is a frequent speaker at International developer conferences.\"", + "@url": "https://www.sfscon.it/speakers/ivar-grimstad/", + "#text": "Ivar Grimstad" + } + ] + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c17b3a9d0b430f9e50546262cb4064b5e5524", + "@unique_id": "2024day1event72", + "@bookmark": "1", + "@rating": "1", + "start": "16:20", + "duration": "00:15", + "title": "Designing open source tools for Citizen Coders", + "url": "https://www.sfscon.it/talks/designing-open-source-tools-for-citizen-coders/", + "language": null, + "abstract": "Empower non-professional developers to drive innovation!", + "subtitle": "Empower non-professional developers to drive innovation!", + "description": "

In a world where proprietary no-code platforms with vendor lock-in and opacity dominate, there is a crucial need to enhance the developer experience of open source applications, libraries, and tools.

\n

We will explore how we can make open source software more accessible to citizen developers and non-professional programmers who face significant barriers to entry with modern open source tools. Showing the importance of collaborating with these developers, who are often closer to real-world problems, to improve the quality and usability of open source software.

", + "track": { + "@color": "#c48c2d", + "#text": "Developers" + }, + "category": "Developers", + "type": "Developers", + "track-url": "https://www.sfscon.it/tracks/developers-track-2024/", + "persons": { + "person": { + "@id": "6728", + "@organization": "Luca Rainone", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2023/11/Luca_Rainone.jpeg", + "@socials": "[{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/lucarainone\\/\"}]", + "@bio": "\"I'm a web development veteran with 15+ years of experience, fueled by a passion for open source. I prioritize precision, user experience, and creating powerful app, web app and content management systems.\\r\\nI'm devoted to sharing knowledge and have an insatiable appetite for learning.\"", + "@url": "https://www.sfscon.it/speakers/luca-rainone/", + "#text": "Luca Rainone" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c2da50be39bed63a0c095f4b234bdb61c9efd", + "@unique_id": "2024day1event88", + "@bookmark": "1", + "@rating": "1", + "start": "16:40", + "duration": "00:15", + "title": "Free your Games", + "url": "https://www.sfscon.it/talks/free-your-games/", + "language": null, + "abstract": "A Minetest story", + "subtitle": "A Minetest story", + "description": "

Videogames are part of our daily life. They allow us to unplug, to relax, to compete, simulating a reality that puts us at the centre of a new digital world. However, if we go deeper into the way videogames are made, we’ll learn that their market can be brutal and the ethics of their business models highly debatable – if not plain unbearable. Nowadays, playing a videogame usually means renouncing to our privacy and shaking hands with realities that we might not tolerate if we knew what they conceal. It was during the pandemic that a Minetest server called AES was born. Made by volunteers, AES decided to go against that: to build an online space where to play without strings attached. A place where everyone can have fun and nothing is proprietary. Four years later, this is its story.

", + "track": { + "@color": "#c48c2d", + "#text": "Developers" + }, + "category": "Developers", + "type": "Developers", + "track-url": "https://www.sfscon.it/tracks/developers-track-2024/", + "persons": { + "person": { + "@id": "7260", + "@organization": "Minetest", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/09/Marco_Amato_66f58ca8ee63d66f6e2f366781.jpeg", + "@socials": "[{\"mastodon\":\"https:\\/\\/mastodon.social\\/@zughy_boi\"}]", + "@bio": "\"Better known by the name Zughy, Marco Amato is a pixel artist and IT consultant. Passionate about the philosophical aspect of technology, in 2019 he started the Italian collective Etica Digitale and in 2022 became part of the organisation of Minetest, the libre voxel gaming platform\"", + "@url": "https://www.sfscon.it/speakers/marco-amato/", + "#text": "Marco Amato" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c454e58ee9cca3bd8aaac53fc1f72081d3c52", + "@unique_id": "2024day1event28", + "@bookmark": "1", + "@rating": "1", + "start": "17:00", + "duration": "00:15", + "title": "How to set up an Open Source Program Office? Get insights and use cases from the OSPO Alliance", + "url": "https://www.sfscon.it/talks/how-to-set-up-an-open-source-program-office-get-insights-and-use-cases-from-the-ospo-alliance/", + "language": null, + "description": "

The Good Governance Initiative (GGI) developped by the OSPO Alliance proposes a methodological framework to assess open-source awareness, compliance and governance in any kind of organizations, helping them to structure and improve the use of FOSS towards an OSPO. This presentation will highlight the main progresses and new features achieved since last year’s introduction at SFScon, such as the translation of the GGI Good Governance in five languages, the recent OSPO testimonies presented in the OnRamp meeting series, and many more.

", + "track": { + "@color": "#b7d631", + "#text": "OW2" + }, + "category": "OW2", + "type": "OW2", + "track-url": "https://www.sfscon.it/tracks/ow2-track-2024/", + "persons": { + "person": { + "@id": "6099", + "@organization": "seacom srl", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/form-speakers/valentina-del-prete-666112c0642530794146ca04825aedec.jpeg", + "@socials": "[{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/vallydp\\/\"}]", + "@bio": "\"Passionate about business and organizational models, she has been involved in business development at Seacom for more than 10 years. With a degree in communications science, she has always worked in the world of open source software. She is also currently in charge of the commercial offering and positioning of RIOS: Italian Open Source Network. Curious about humankind, she is passionate about all struggles for integration and equal rights.\"", + "@url": "https://www.sfscon.it/speakers/valentina-del-prete/", + "#text": "Valentina Del Prete" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c5d1b0f2ccab3a99c78f41ba4f04087b13444", + "@unique_id": "2024day1event80", + "@bookmark": "1", + "@rating": "1", + "start": "17:20", + "duration": "00:15", + "title": "Decentralized Search Over Decentralized Storage", + "url": "https://www.sfscon.it/talks/decentralized-search-over-decentralized-storage/", + "language": null, + "abstract": "Coupling an AI-powered search engine with a self-hosted personal cloud", + "subtitle": "Coupling an AI-powered search engine with a self-hosted personal cloud", + "description": "

In this talk, we will explore an innovative decentralized search system developed in collaboration between the teams of On My Disk, a personal cloud storage solution, and PeARS, a self-hosted search engine. This system is designed to enable user-friendly, AI-powered, multilingual search capabilities directly over a decentralized storage environment, empowering individuals to manage and search their data across devices without relying on third-party servers. By combining cutting-edge AI with a robust, local-first approach, this solution allows users to maintain complete control over their data, ensuring secure, fast, and personalized search results in a user-controlled environment. Learn how this technology is setting a new standard for privacy and autonomy in data storage and retrieval.

", + "track": { + "@color": "#b7d631", + "#text": "OW2" + }, + "category": "OW2", + "type": "OW2", + "track-url": "https://www.sfscon.it/tracks/ow2-track-2024/", + "persons": { + "person": { + "@id": "7240", + "@organization": "On My Disk", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/09/Alexey_Volkov_66ec41151370066edbececd0dc.jpeg", + "@bio": "\"Alexey Volkov is CEO at Bineon and founder of On My Disk. He is software engineer with background in telecommunications.\"", + "@url": "https://www.sfscon.it/speakers/alexey-volkov/", + "#text": "Alexey Volkov" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c7149b09e10123d1a253144a196e6b4a0be07", + "@unique_id": "2024day1event84", + "@bookmark": "1", + "@rating": "1", + "start": "17:40", + "duration": "00:15", + "title": "Optimizing Cloud Compute Resources with Spare Cores", + "url": "https://www.sfscon.it/talks/optimizing-cloud-compute-resources-with-spare-cores/", + "language": null, + "description": "

Spare Cores is a vendor-independent, open-source, Python ecosystem that offers a comprehensive inventory and performance evaluation of compute resources across cloud server providers. We start all server types publicly (GHA) to run hardware inspection tools and benchmarks for different workloads. Our findings are published as open data and open-source tools to help you identify and optionally start the most cost-efficient instance type for your specific use cases (e.g. ML model training or CI/CD pipelines) in your cloud environment. Additionally, Spare Cores provides a seamless SaaS solution built on this open-source ecosystem, managing the entire lifecycle of containerized batch jobs without requiring direct vendor engagement.

", + "track": { + "@color": "#b7d631", + "#text": "OW2" + }, + "category": "OW2", + "type": "OW2", + "track-url": "https://www.sfscon.it/tracks/ow2-track-2024/", + "persons": { + "person": { + "@id": "7246", + "@organization": "Spare Cores", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/09/Gergely_Daroczi_66ed45b594b8166f118a9e2a9c.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/daroczig.rapporter.net\"},{\"mastodon\":\"https:\\/\\/fosstodon.org\\/@daroczig\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/daroczig\\/\"},{\"twitter\":\"https:\\/\\/twitter.com\\/daroczig\"}]", + "@bio": "\"Gergely Daroczi, PhD, is a passionate R user and package developer for two decades. With over 15 years in the industry, he has expertise in data science, engineering, cloud infrastructure, and data operations across SaaS, fintech, adtech, and healthtech startups, focusing on building scalable data platforms. Gergely maintains a dozen open-source R and Python projects and organizes a meetup with 1,800 members in Hungary \\u2013 along with other open-source and data conferences. He is the author of a book on data analysis, and he serves as a part-time Senior Lecturer at CEU's Business Analytics program in Vienna.\"", + "@url": "https://www.sfscon.it/speakers/gergely-daroczi/", + "#text": "Gergely Daroczi" + } + }, + "bookmark": "1", + "rating": "1" + } + ] + }, + { + "@name": "NOISE", + "event": { + "@id": "670d1b59b1894ee396291209065920c529bf320b3f8c7", + "@unique_id": "2024day1event96", + "@bookmark": "0", + "@rating": "0", + "start": "13:00", + "duration": "00:30", + "title": "NOI Hackathon SFSCON Edition", + "language": null, + "track": { + "@color": "#a8a8a8", + "#text": "Side Event - Hackathon" + }, + "category": "Side Event - Hackathon", + "type": "Side Event,Hackathon", + "bookmark": "0", + "rating": "0" + } + }, + { + "@name": "Crane Hall", + "event": { + "@id": "670d1b59b65045aeceae6227b210bf66148a96a0cc439", + "@unique_id": "2024day1event90", + "@bookmark": "0", + "@rating": "0", + "start": "14:00", + "duration": "00:40", + "title": "Human and environmental Impacts of the actual “Artificial Intelligence” Industry, how to humanize?", + "language": null, + "track": { + "@color": "#1e73be", + "#text": "Side Event - Crane Hall BOF meetings" + }, + "category": "Side Event - Crane Hall BOF meetings", + "type": "Side Event,Crane Hall BOF meetings", + "track-url": "https://www.sfscon.it/tracks/crane-hall-bof-meetings-2024/", + "persons": { + "person": { + "@id": "4289", + "@organization": "Power Progress Community", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2023/08/Roberto_Innocenti_64a00b190e0b564cc2dab0c666.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/www.powerprogress.org\\/\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/roberto-innocenti-2961069\\/\"}]", + "@bio": "\"Among the founders of the project Open Hardware PowerPC Notebook, presenter and ambassador of the project.\\r\\nPresident of the association Power Progress Community which deals with the promotion and dissemination of free software and open hardware.\\r\\nResponsible in humanist forums of the area \\u201cTechnology for improving the living conditions of mankind\\u201d.\\r\\nTech Leader - Solutions & Infrastructure Architect, Software Architect with Open Source tools, by profession.\"", + "@url": "https://www.sfscon.it/speakers/roberto-innocenti/", + "#text": "Roberto Innocenti" + } + }, + "bookmark": "0", + "rating": "0" + } + } + ] + }, + { + "@date": "2024-11-09", + "room": [ + { + "@name": "NOI Techpark", + "event": [ + { + "@id": "670d1b59c7998a7484276072bd4ba826d36c592714e4b", + "@unique_id": "2024day2event1", + "@bookmark": "0", + "@rating": "0", + "start": "08:30", + "duration": "00:30", + "title": "Starting of the second day", + "language": null, + "track": "SFSCON", + "category": "SFSCON", + "type": "SFSCON", + "bookmark": "0", + "rating": "0" + }, + { + "@id": "670d1b59c8f96acefeefece7c55f6ec237a875c59e96a", + "@unique_id": "2024day2event12", + "@bookmark": "0", + "@rating": "0", + "start": "13:00", + "duration": "00:30", + "title": "Closing of the SFSCON 2024", + "language": null, + "track": "SFSCON", + "category": "SFSCON", + "type": "SFSCON", + "bookmark": "0", + "rating": "0" + } + ] + }, + { + "@name": "Foyer", + "event": { + "@id": "670d1b59c7b0aa847ccb8f88f9cfd40cc21ffc92e394f", + "@unique_id": "2024day2event2", + "@bookmark": "0", + "@rating": "0", + "start": "08:30", + "duration": "00:30", + "title": "Welcome Coffee", + "language": null, + "track": "SFSCON", + "category": "SFSCON", + "type": "SFSCON", + "bookmark": "0", + "rating": "0" + } + }, + { + "@name": "Seminar 2", + "event": [ + { + "@id": "670d1b59c7f0f3abc3563e904b2f539ba1fcaed118d20", + "@unique_id": "2024day2event8", + "@bookmark": "0", + "@rating": "0", + "start": "09:20", + "duration": "01:00", + "title": "Let’s spark more Adas in our tech world! workshop", + "language": null, + "abstract": "Women* in tech", + "subtitle": "Women* in tech", + "description": "

In this workshop we will dive into the possibilities of encouraging women*, especially girls, to thinker and to code. With tools such as the Free Software Foundation Europe’s (FSFE) illustrated book “Ada & Zangemann – A Tale of Software, Skateboards, and Raspberry Ice Cream”everybody can create ways to spark the participation of women* and girls in tech.The book tells the story of Ada, a girl who loves to experiment with hardware and software. Ada realises how crucial it is to control technology and decides to stand up to the mighty inventor Zangemann.This workshop will also intend to explore ways to promote diversity and gender equity in the Free Software community and beyond. Together we will identify the challenges women* face in participating in such communities and discuss how we can create more inclusive environments, especially for the future generations.We encourage you to join us to share your experiences, ideas and perspectives, and collaborate in creating a more inclusive and diverse future in the Free Software community for all.

\n

REGISTRATION NEEDED AT: https://pretix.eu/noi-digital/sfscon24/4260077/

\n

*women, inter, trans and non-binary people.

\n

Supported by: FSFE – Free Software Foundation Europe & SheTech

", + "track": { + "@color": "#f427c8", + "#text": "Side Event - Women* in tech" + }, + "category": "Side Event - Women* in tech", + "type": "Side Event,Women* in tech", + "track-url": "https://www.sfscon.it/tracks/women-in-tech-track-2024/", + "persons": { + "person": [ + { + "@id": "6041", + "@organization": "FSFE - Free Software Foundation Europe", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2023/11/Lina_Ceballos_649edcc7d38c3654a5babb0bf8.jpeg", + "@bio": "\"Lina has a background in Law and Political Science. Currently, she is a Policy Project Manager at the FSFE where she advocates for software freedom making sure technology doesn't undermine people's rights. She has experience in monitoring legislative processes in the EU while engaging with different stake-holders and decision-makers.\"", + "@url": "https://www.sfscon.it/speakers/lina-ceballos/", + "#text": "Lina Ceballos" + }, + { + "@id": "7139", + "@organization": "FSFE - Free Software Foundation Europe", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/09/Ana_Galan_6693a1c2d138466f28f659d425.jpeg", + "@bio": "\"Ana has a background in communication and social sciences. After an internship at FSFE, she continued her career in Berlin and Madrid with various journalistic, communication and production-related experiences, and has been back at FSFE since 2022. There she focuses on communication outreach tasks as well as helping to manage the FSFE community and related events.\"", + "@url": "https://www.sfscon.it/speakers/ana-galan/", + "#text": "Ana Galan" + } + ] + }, + "bookmark": "0", + "rating": "0" + }, + { + "@id": "670d1b59c89eb8488f97a3ca5af14217a787942083f63", + "@unique_id": "2024day2event6", + "@bookmark": "0", + "@rating": "0", + "start": "10:40", + "duration": "00:55", + "title": "Knitting Our Internet workshop", + "language": null, + "abstract": "An interactive journey through the history of the Internet, and how to save it, together", + "subtitle": "An interactive journey through the history of the Internet, and how to save it, together", + "description": "

“Knitting Our Internet” (KOI) is a workshop that explores the history of the Internet, and offers a perspective for a collective re-imagination of participatory, decentralized networks.

\n

The workshop aims at questioning the very essence of today’s social media, exposing the critical limits posed by centralization, monopoly, and surveillance capitalism.

\n

KOI was conceived in June 2023 by Tommaso Marmo, who was looking for a simple yet critical and accurate way to introduce the concept of the Fediverse to non-experts.

\n

The content and structure of the workshop matured over time, as it adapted to very diverse audiences of any ages and backgrounds. Furthermore, the experience is based on Tommaso’s academic research, mainly conducted for “Computer Sciences are Social Sciences”, his bachelor’s thesis.

\n

Content

\n

During the activity, Tommaso will be using a yarn his grandmother gifted him to simulate centralized and decentralized networks, employing concrete metaphors to actively involve the participants. Every individual attending the workshop will be given a quote or an image relevant in the early and contemporary history of the Internet, and they will be asked to share it as the story unfolds.

\n

Allowing them to understand the essential challenges society faces in relation to technological advancement, participants will be empowered to get involved in the Fediverse, especially understanding the importance of decentralization, Free Software, and the political role played by technical tools.

\n

Notes

\n

Given its malleable and open structure, the content of the workshop can be adapted, enriched, and edited to match the key topics of SFSCON 2024 in the best possible way.

\n

The interactive parts of the workshop can be limited and a more theoretical presentation, diving in the thoughts of philosophers and computer sciences, could be added, too.

\n

Supported by: FSFE – Free Software Foundation Europe

", + "track": { + "@color": "#34ad16", + "#text": "Fediverse" + }, + "category": "Fediverse", + "type": "Fediverse", + "track-url": "https://www.sfscon.it/tracks/fediverse-track-2024/", + "persons": { + "person": { + "@id": "6991", + "@organization": "FSFE - Free Software Foundation Europe || Tallinn University", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Tommaso_Marmo_6679753e11a1766813d0fe8415.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/tommi.space\"},{\"mastodon\":\"https:\\/\\/pan.rent\\/@tommi\"},{\"linkedin\":\"https:\\/\\/linkedin.com\\/in\\/tommasomarmo\\/\"}]", + "@bio": "\"Tommi is an enthusiastic activist focusing its work on the socio-economical, political, and philosophical nature of the Internet. He is also a student of the \\u201cArtificial Intelligence and Sustainable Societies\\u201d Erasmus Mundus joint master.\\r\\n\\r\\nAmong many other projects he brings forward, Tommi was an intern at the Free Software Foundation Europe, is the co-founder of Scambi Festival, the creator of quitsocialmedia.club, and proud member of Club Tenco.\\r\\n\\r\\nWhen he is not in front of a screen, he loves climbing and outdoor sports.\"", + "@url": "https://www.sfscon.it/speakers/tommaso-marmo/", + "#text": "Tommaso Marmo" + } + }, + "bookmark": "0", + "rating": "0" + }, + { + "@id": "670d1b59c8c6df1fcac9982a24088eb1276fd82d3e38a", + "@unique_id": "2024day2event5", + "@bookmark": "1", + "@rating": "1", + "start": "11:40", + "duration": "00:15", + "title": "about:Fediverse", + "url": "https://www.sfscon.it/talks/aboutfediverse/", + "language": null, + "abstract": "An introduction to the decentralised social network", + "subtitle": "An introduction to the decentralised social network", + "description": "

The Fediverse is a decentralised social network. But what does that mean?

\n

In this talk I will give a short introduction to the Fediverse of 2024 and how it started to evolve in 2008. I will explain the basic concepts of ActivityPub as the protocol of the Fediverse and how the use of this open protocol has enabled a diverse group of Free Software projects to build a social network of (micro) blogging, video streaming, podcasting and event organising. A network where users can share and interact with each other regardless of the platform they use. What will be possible in the Fediverse of 2024? And how can you get started today?

\n

This talk does not require any technical knowledge of the Fediverse. However, you should know what an email is.

", + "track": { + "@color": "#34ad16", + "#text": "Fediverse" + }, + "category": "Fediverse", + "type": "Fediverse", + "track-url": "https://www.sfscon.it/tracks/fediverse-track-2024/", + "persons": { + "person": { + "@id": "7100", + "@organization": "FSFE - Free Software Foundation Europe", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/09/Tobias_Diekershoff_6681aa694fcf566e2791c843ee.jpeg", + "@socials": "[{\"mastodon\":\"https:\\/\\/social.diekershoff.de\\/~tobias\"}]", + "@bio": "\"Tobias has been a FLOSS enthusiast since the mid-90s, for reasons of sustainability in retrospect and the other benefits that come from using Free Software. Since 2014 he has been an active member of the Berlin local supporter group of the Free Software Foundation Europe and joined the FSFE team as a system administrator in 2022.\\r\\n\\r\\nIn 2008 he joined the Fediverse on identi.ca and ventured out to his self-hosted node as soon as it was possible. He became a member of the Friendica development team in 2010 and is currently co-maintainer of the project.\"", + "@url": "https://www.sfscon.it/speakers/tobias-diekershoff/", + "#text": "Tobias Diekershoff" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c8eab24f07aa0b77c10f2bf00f4ff309c4fa3", + "@unique_id": "2024day2event3", + "@bookmark": "1", + "@rating": "1", + "start": "12:00", + "duration": "00:15", + "title": "How to build a website for the IndieWeb", + "url": "https://www.sfscon.it/talks/how-to-build-a-website-for-the-indieweb/", + "language": null, + "description": "

Have you ever heard of terms like POSSE, syndication, or webmention?
\nWhat about protocols like Web Sign-In or Micropub?
\nThese terms are all connected to the IndieWeb, a community of websites built on open standards and open source technologies.

\n

In today’s digital age, our online content and identities are more important than ever. Relying on random companies and social networks to manage them isn’t ideal. Instead, we should take control of our online presence by building our own website for the IndieWeb.

\n

In this talk, you’ll learn how to:

\n

1. Publish content on your website via a Micropub server.
\n2. Syndicate that content elsewhere (i.e., republish it on another website).
\n3. Gather comments from social networks and display them on your website.

\n

We will achieve all of this using a static website and a few open-source tools.

", + "track": { + "@color": "#34ad16", + "#text": "Fediverse" + }, + "category": "Fediverse", + "type": "Fediverse", + "track-url": "https://www.sfscon.it/tracks/fediverse-track-2024/", + "persons": { + "person": { + "@id": "7059", + "@organization": "Debidda Giacomo", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/06/Giacomo_Debidda_667fa9c431b40667fb005692b1.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/giacomodebidda.com\\/\"},{\"mastodon\":\"https:\\/\\/fosstodon.org\\/@jackdbd\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/giacomodebidda\\/\"},{\"twitter\":\"https:\\/\\/twitter.com\\/jackdbd\"}]", + "@bio": "\"Giacomo has been writing software for more than 20 years, starting with little scripts in Turbo Pascal when he was in high school, signal\\/image processing programs in Matlab when at the University, and applications of various nature in his professional life: data analysis programs in R and Python; web applications in JavaScript, TypeScript and ClojureScript; native applications in Zig.\\r\\n\\r\\nIn his spare time he enjoys inline skating, surfskating, and riding his motorbike. Basically he is a fan of anything that has at least a couple of wheels.\"", + "@url": "https://www.sfscon.it/speakers/giacomo-debidda/", + "#text": "Giacomo Debidda" + } + }, + "bookmark": "1", + "rating": "1" + } + ] + }, + { + "@name": "Seminar 3", + "event": [ + { + "@id": "670d1b59c818406ec6bbbe7794251e5764af1c9cb9e23", + "@unique_id": "2024day2event4", + "@bookmark": "1", + "@rating": "1", + "start": "09:20", + "duration": "00:15", + "title": "ARM Linux Laptops for Developers Status Report", + "url": "https://www.sfscon.it/talks/arm-linux-laptops-for-developers-status-report/", + "language": null, + "description": "

Intrigued by 22+ hours of battery life with comparable performance to current Intel / AMD systems? Starting from June this year a bunch of new ARM based laptops have been launched. All major laptop vendors launched devices, with over 33 to choose from at the time of this writing.

\n

While ARM based laptops have been available for years, they mostly have been targeted as cheap entry level ChromeBooks or MacBooks designed for MacOS only. Luckily with this new wave of ARM based laptops there should be something for everybody.

\n

The core question is how well they behave under Linux. Being designed for
\nWindows-on-ARM there is a risk Linux support is rudimentary at best. Stefan set out to test this and is reporting back here. Does a boot with UEFI work out of the box? Are all hardware features supported? Is the firmware for various drivers available? How is the performance?

\n

And the most important question: how does it stack up against an Intel based laptop from the same timeframe as daily driver for software development?

", + "track": { + "@color": "#6b6b6b", + "#text": "Community Building" + }, + "category": "Community Building", + "type": "Community Building", + "track-url": "https://www.sfscon.it/tracks/community-building-track-2024/", + "persons": { + "person": { + "@id": "5365", + "@organization": "Linaro", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/form-speakers/stefan-schmidt-154a3f3ea88624b4bb561acca60a4c6a.jpeg", + "@socials": "[{\"site\":\"https:\\/\\/sostec.de\\/\"},{\"linkedin\":\"https:\\/\\/linkedin.com\\/in\\/stefan-schmidt-84a7266\"}]", + "@bio": "\"Stefan Schmidt is a FOSS contributor for 16+ years now. During this time he\\r\\nworked on different projects and different layers of the Linux ecosystem. From bootloader and Kernel over build-systems for embedded to user interfaces. He was serving as a technical steering committee member of OpenEmbedded during the merge with the Yocto project, helped porting a 2.6 kernel to some early smartphones, and is the release manager of the Enlightenment Foundation Libraries as well as co-maintainer of the Linux IEEE 802.15.4 subsystem.\\r\\n\\r\\nAfter many years as a freelancer and long-time member of the Samsung Open Source Group he recently joined Huawei's newly founded Open Source Technology Center. Stefan is a regular speaker at open source related conferences.\"", + "@url": "https://www.sfscon.it/speakers/stefan-schmidt/", + "#text": "Stefan Schmidt" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c853b2d8cf2961a0c5ffb49c13fcde7933229", + "@unique_id": "2024day2event10", + "@bookmark": "1", + "@rating": "1", + "start": "09:40", + "duration": "00:35", + "title": "Building a no-drama community", + "url": "https://www.sfscon.it/talks/building-a-no-drama-community/", + "language": null, + "description": "

In this talk, we’ll focus on how the AlmaLinux project has chosen to foster a positive, drama-free community in the Linux ecosystem.

\n

\n

Whether you’re starting a new community or wrangling an existing one, it can be tempting to fall into the trap of bonding over shared enemies to see short-term, high-numbers growth. But, benny has spent the last 10 years building drama-free communities with a different kind of success.

\n

While many open-source projects rally members through shared frustrations or negativity, AlmaLinux took the more challenging path of uniting people through thoughtful dialogue and focusing on helping each other. By prioritizing respect, collaboration, and inclusivity, the AlmaLinux community grew healthier and stronger without the need for battle cries or infusing drama. Learn how this approach not only built a stable and thriving community around AlmaLinux, but is also setting a new standard for open-source communities – and proving that progress doesn’t have to be divisive.

", + "track": { + "@color": "#6b6b6b", + "#text": "Community Building" + }, + "category": "Community Building", + "type": "Community Building", + "track-url": "https://www.sfscon.it/tracks/community-building-track-2024/", + "persons": { + "person": { + "@id": "7344", + "@organization": "AlmaLinux OS Foundation", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/2024/10/benny_Vasquez_670ab8727de09670abede00c79.jpeg", + "@socials": "[{\"mastodon\":\"https:\\/\\/social.linux.pizza\\/@benny\"},{\"linkedin\":\"https:\\/\\/www.linkedin.com\\/in\\/bennyvasquez\\/\"},{\"twitter\":\"https:\\/\\/twitter.com\\/bennyvasquez\"}]", + "@bio": "\"benny is currently the Chair of the AlmaLinux OS Foundation, has a long history in business and community building, and a long and idealistic love of open source.\"", + "@url": "https://www.sfscon.it/speakers/benny-vasquez/", + "#text": "benny Vasquez" + } + }, + "bookmark": "1", + "rating": "1" + }, + { + "@id": "670d1b59c873c82047b6e2875f1f939d17f0c8b62fbc9", + "@unique_id": "2024day2event7", + "@bookmark": "0", + "@rating": "0", + "start": "10:20", + "duration": "02:40", + "title": "Voices of Free Software: connect, learn, inspire!", + "language": null, + "abstract": "FSFE Italian Community Meeting", + "subtitle": "FSFE Italian Community Meeting", + "description": "

You are invited to join the volunteers, supporters, and friends of the FSFE Italian Community!

\n

Join us to learn from one another, find inspiration, and tackle future challenges together in the realm of Free Software. As a volunteer, you have a platform to share your story, discuss the most pressing topics surrounding Free Software, and connect with fellow enthusiasts. We encourage you to collaborate with the community on common initiatives and work together to forge new paths forward.

\n

This is an hybrid event. You can join us either online or in person.

\n

REGISTRATION NEEDED AT: https://pretix.eu/noi-digital/sfscon24/4259648/

\n

Please note, the official language of the FSFE Italian Community is Italian, hence the event will be held in Italian.

\n

Supported by: FSFE – Free Software Foundation Europe

", + "track": { + "@color": "#49e547", + "#text": "Side Event - FSFE - Italian community meeting" + }, + "category": "Side Event - FSFE - Italian community meeting", + "type": "Side Event,FSFE,Italian community meeting", + "track-url": "https://www.sfscon.it/tracks/fsfe-italian-community-meeting-2024/", + "persons": { + "person": { + "@id": "5960", + "@organization": "FSFE - Free Software Foundation Europe ", + "@thumbnail": "https://www.sfscon.it/wp-content/uploads/form-speakers/marta-andreoli-fa9c0b907059fd5f818d4012846bb14e.jpeg", + "@bio": "\"Marta is an experienced event, marketing & communications leader. She has an extensive background in events coordination & planning, agency management, and campaign development having worked for international brands in the cultural and outdoor sector.\\r\\n\\r\\nShe is currently collaborating with the Free Software Foundation Europe (FSFE) as the Deputy Coordinator Italy, focusing on strenghtening the existing Italian free software community and fostering its growth.\\r\\n\\r\\nMarta\\u2019s core competencies are based on combining people centric, innovative and a human centred approaches within an environment of radical collaboration. She is currently furthering her studies in this field of Design Thinking at Hasso-Plattner-Institut in Berlin.\\r\\n\\r\\nShe values free software due the integration of ideas of critical consumption, minimalism and sustainability. She believes that the choices we make in the fundamental issues of freedom in software are fundamental issues in our lives and in the way we are shaping the future of our society.\\r\\n\\r\\nHer outgoing personality and the experience developed in forging relationships in her previous roles underpins her approach as Community Manager.\\r\\n\\r\\nDue to her strong interests in sustainability and ecology, Marta is especially interested in the interplay of Free Software with other fields such as ecology and one of her future goals would be to conduct a research project about the impact of digital technologies on the physical environment and its contribution to the so called Sustainable Development Goals.\\r\\n\\r\\n\\u201cLittle drops make the mighty ocean\\u201d (sono le gocce che fanno il mare) is her motto.\"", + "@url": "https://www.sfscon.it/speakers/marta-andreoli/", + "#text": "Marta Andreoli" + } + }, + "bookmark": "0", + "rating": "0" + } + ] + }, + { + "@name": "Seminar 4", + "event": { + "@id": "670d1b59c836baf427219a351d14e7aaf0fdcf3a53de9", + "@unique_id": "2024day2event13", + "@bookmark": "0", + "@rating": "0", + "start": "09:30", + "duration": "02:30", + "title": "Scratch Stories with Ada & Zangemann", + "language": null, + "track": { + "@color": "#a8a8a8", + "#text": "Side Event - MiniNOI x SFSCON" + }, + "category": "Side Event - MiniNOI x SFSCON", + "type": "Side Event,MiniNOI x SFSCON", + "bookmark": "0", + "rating": "0" + } + }, + { + "@name": "Seminar 1", + "event": { + "@id": "670d1b59c906471e89446fb96a90ef5476947cbdfe1ef", + "@unique_id": "2024day2event11", + "@bookmark": "0", + "@rating": "0", + "start": "16:30", + "duration": "00:30", + "title": "Winner proclamation and closing of the NOI Hackathon SFSCON Edition", + "language": null, + "track": { + "@color": "#a8a8a8", + "#text": "Side Event - Hackathon" + }, + "category": "Side Event - Hackathon", + "type": "Side Event,Hackathon", + "bookmark": "0", + "rating": "0" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/tests/assets/sfs2024streaming.yaml b/src/tests/assets/sfs2024streaming.yaml new file mode 100644 index 0000000..1b702b0 --- /dev/null +++ b/src/tests/assets/sfs2024streaming.yaml @@ -0,0 +1,38 @@ +1-Main Track: Seminar https://maps.sfscon.it/l/sem1/ +2-Main Track: Seminar https://maps.sfscon.it/l/sem1/ + +1-Ethics, Policy, Legal & Economics: Seminar 1 - https://maps.sfscon.it/l/sem1/ +2-Ethics, Policy, Legal & Economics: Seminar 1 - https://maps.sfscon.it/l/sem1/ + +1-Data Spaces: Seminar 2 - https://maps.sfscon.it/l/sem2/ +2-Data Spaces: Seminar 2 - https://maps.sfscon.it/l/sem2/ + +1-Open Hardware: Seminar 3 - https://maps.sfscon.it/l/sem3/ +2-Open Hardware: Seminar 3 - https://maps.sfscon.it/l/sem3/ + +1-Developers: Seminar 4 - https://maps.sfscon.it/l/sem4/ +2-Developers: Seminar 4 - https://maps.sfscon.it/l/sem4/ + +1-Crane Hall BOF meetings: Crane Hall - https://maps.sfscon.it/l/kranhalle/ +2-Crane Hall BOF meetings: Crane Hall - https://maps.sfscon.it/l/kranhalle/ + +1-Community Building: Friday - Seminar 2 - https://maps.sfscon.it/l/sem2/ +2-Community Building: Saturday - Seminar 3 - https://maps.sfscon.it/l/sem3/ + +1-DevOps: Seminar 3 - https://maps.sfscon.it/l/sem3/ +2-DevOps: Seminar 3 - https://maps.sfscon.it/l/sem3/ + +1-Cybersecurity: Seminar 3 - https://maps.sfscon.it/l/sem3/ +2-Cybersecurity: Seminar 3 - https://maps.sfscon.it/l/sem3/ + +1-OW2: Seminar 4 - https://maps.sfscon.it/l/sem4/ +2-OW2: Seminar 4 - https://maps.sfscon.it/l/sem4/ + +1-Women* in tech: Seminar 2 - https://maps.sfscon.it/l/sem2/ +2-Women* in tech: Seminar 2 - https://maps.sfscon.it/l/sem2/ + +1-FSFE Italian Community Meeting: Seminar 3 - https://maps.sfscon.it/l/sem3/ +2-FSFE Italian Community Meeting: Seminar 3 - https://maps.sfscon.it/l/sem3/ + +1-Fediverse: Seminar 2 - https://maps.sfscon.it/l/sem2/ +2-Fediverse: Seminar 2 - https://maps.sfscon.it/l/sem2/ diff --git a/src/tests/assets/sfscon2024-m.xml b/src/tests/assets/sfscon2024-m.xml new file mode 100644 index 0000000..9346553 --- /dev/null +++ b/src/tests/assets/sfscon2024-m.xml @@ -0,0 +1,2248 @@ + + + + sfscon-2024 + SFSCON 2024 + + + Ethics, Policy, Legal & Economics + Data Spaces + Open Hardware + Developers + Community Building + Cybersecurity + Fediverse + DevOps + Side Event - Hackathon + Side Event - School Reading + Side Event - MiniNOI x SFSCON + OW2 + Side Event - Women* in tech + Side Event - Crane Hall BOF meetings + Side Event - FSFE - Italian community meeting + + + + + 08:30 + 00:30 + Check-in SFSCON 2024 + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + 0 + 0 + + + + + 09:00 + 00:15 + Opening SFSCON 2024 + https://www.sfscon.it/talks/opening-sfscon-2024/ + + <p>Opening SFSCON 2024</p> + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Philipp Achammer + + 1 + 1 + + + 09:15 + 00:05 + Greetings from NOI + https://www.sfscon.it/talks/greetings-from-noi/ + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Vincent Mauroit + + 1 + 1 + + + 09:20 + 00:05 + Greetings from Gruppo FOS + https://www.sfscon.it/talks/greetings-from-gruppo-fos/ + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Giorgio Allasia + + 1 + 1 + + + 09:25 + 00:05 + Greetings from Telmekom + https://www.sfscon.it/talks/greetings-from-telmekom/ + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Sergio Vemic + + 1 + 1 + + + 09:30 + 00:30 + Keynote speaker &#8211; coming soon + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Emily Omier + + 0 + 0 + + + 10:00 + 00:15 + European SFS Award 2024 + + Free Software Foundation Europe (FSFE) and Linux User Group Bozen-Bolzano-Bulsan assign the “European SFS Award” + Free Software Foundation Europe (FSFE) and Linux User Group Bozen-Bolzano-Bulsan assign the “European SFS Award” + <p>The award is given to a person who contributed to the introduction of the culture of Free Software.</p> + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + 0 + 0 + + + 10:15 + 00:15 + SFS Award 2024 + + Linux User Group Bozen-Bolzano-Bulsan assigns the “South Tyrol Free Software Award” + Linux User Group Bozen-Bolzano-Bulsan assigns the “South Tyrol Free Software Award” + <p>Every year the Linux User Group Bozen-Bolzano-Bulsan assigns the &#8220;South Tyrol Free Software Award&#8221; (SFS Award). The award is given to a person who contributed to the introduction of the culture of Free Software in the Province of Bolzano.</p> + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + 0 + 0 + + + 10:30 + 00:10 + AlmaLinux in brief + https://www.sfscon.it/talks/almalinux-in-brief/ + + <p>In this quick chat, benny will summarize 20 years of context and 4 years of growth in just 10 minutes by highlighting the major points that brought AlmaLinux to the world, how the project has adjusted for each challenge along the way, and what they&#8217;re planning next.</p> + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + benny Vasquez + + 1 + 1 + + + 10:40 + 00:20 + Open Source in EU policy + https://www.sfscon.it/talks/open-source-in-eu-policy/ + + Making laws with the Open Source community in mind + Making laws with the Open Source community in mind + <p>Over the past three years, the Open Source Community has had to mobilise to fix flaws in European Union policy initiatives, like the Cyber Resilience Act, Product Liability Directive, and the AI act, all of which could have negatively impacted Open Source developers.</p> +<p>This talk explores why this mobilisation was necessary, how the Community is preparing for future legislation, and how the Open Source community has changed the way the EU makes and implements laws.</p> +<p>It will then delve into the particular case of the AI act and its Open Source AI exemption. It will cover how the exemption came about, why it has prompted a wave of AI open-washing, and what can be done to fix it.</p> + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Jordan Maris + + 1 + 1 + + + 11:05 + 00:15 + Let’s all get over the CRA! + https://www.sfscon.it/talks/lets-all-get-over-the-cra/ + + how I stopped worrying about the consequences of the CRA for Open Source innovation in Europe and moved to something else + how I stopped worrying about the consequences of the CRA for Open Source innovation in Europe and moved to something else + <p>The adoption of the CRA (Cyber Resilience Act) has caused some real anxiety among the FOSS ecosystem. Even in its amended form, many questions remain opened and debated, and more to the point, a lot of uncertainty still surrounds it, not just at the level of its general architecture but also at the implementation level.<br /> +It is perhaps fair to mention that the CRA itself does not exist in a void and is building on already existing regulations and ideas. However, it should be explained how the CRA itself was not born inside the institutions of the European Union but is an almost pure product of governmental cyber security circles and agencies. Because of that, the digital ecosystem at large is at pain understanding some of its logic. This talk will start with what we know and what we can infer from the CRA, and how it fits within the general regulatory framework of the European Union. We will thus clarify the following points:</p> +<p>&#8211; what does the CRA mean in terms of software security assessment and certification &#8211; and how that plays a key role in understanding what the CRA is and what it is not<br /> +&#8211; CRA within the European regulatory framework<br /> +&#8211; CRA implementation: the bad, the ugly, and the unknown</p> +<p>We will then discuss what the concerns are for the FOSS communities. Most notably:</p> +<p>&#8211; barriers of entry for Free Software companies, esp. the small and medium ones<br /> +&#8211; legal inability to develop Free and Open Source Software<br /> +&#8211; what will Free and Open Source software foundations do in edge cases and what are they expected to bring in terms of guidance to the companies contributing to their projects</p> +<p>It will then discuss how we can best prepare for it, and make some suggestions on how to solve FOSS specific challenges related to CRA. In particular the talk will explore the following possibilities:</p> +<p>&#8211; evolving the role or cross project security teams<br /> +-promoting best practices in development (CI CD, code auditability) turning the CRA against proprietary software practices<br /> +&#8211; Pooling security audits<br /> +&#8211; Better release management</p> +<p>Last but not least, this talk will discuss the economics behind the CRA and why this may not end up being less of a problem than we think.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Charles-H. Schulz + + 1 + 1 + + + 11:21 + 00:15 + On the ethical challenges raised by robots powered by Artificial Intelligence + https://www.sfscon.it/talks/on-the-ethical-challenges-raised-by-robots-powered-by-artificial-intelligence/ + + <p>The integration of generative AI into robot systems has the potential to boost several industries by enabling robots to understand their environments, create courses of action, and autonomously react to complex situations. However, the adoption of generative AI techniques brings about profound ethical concerns that need to be addressed to ensure the responsible development and deployment of such technologies. In this talk, I will explore the multifaceted ethical challenges associated with generative AI-powered robots, focusing on issues such as robot autonomy, decision-making, accountability of robot actions, and their impact on humans and society as a whole.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Fulvio Mastrogiovanni + + 1 + 1 + + + 11:40 + 00:15 + CRA & PLD Liability rules and Software Freedom + https://www.sfscon.it/talks/cra-pld-liability-rules-and-software-freedom/ + + <p>With CRA and PLD liability rules for software have been introduced with a broad exception for Free Software. After long and intense debates individual developers and non for profit work are safeguarded. I will shed light on those new rules.</p> +<p>Already at an early stage, the FSFE argued in a hearing in the EU Parliament, for the inclusion of clear and precise exemptions for Free Software development in the legislation and for liability to be transferred to those who significantly financially benefit from it on the market.</p> +<p>In the future, individual developers and non-profit development of Free Software will be exempt from the CRA and the PLD. Nevertheless, the wording in both the regulations are different and a standardisation processes and guidelines are still being drawn up.</p> +<p>In this talk I will discuss what this new regulation means for software freedom in future and what happens at this stage and how to be involved in implementation.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Alexander Sander + + 1 + 1 + + + 12:00 + 00:15 + Cyber Resilience Act, already too late to comply? + https://www.sfscon.it/talks/cyber-resilience-act-already-too-late-to-comply/ + + Compliance is dead, long live compliance + Compliance is dead, long live compliance + <p>If you are taking your decisions now for complying with all the requirements of CRA, you might be too late to find adequate external resources to comply , although &#8212; at submission time &#8212; it is not yet in force. So what are you gonna do? Being open source would help only to a certain point, if you monetize the software. Some guidance tips for Open Source projects and businesses.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Carlo Piana + Alberto Pianon + + 1 + 1 + + + 12:20 + 00:15 + AI no-code for marketing + https://www.sfscon.it/talks/ai-no-code-for-marketing/ + + How artificial intelligence can really help create a marketing strategy + How artificial intelligence can really help create a marketing strategy + <p>The process of creating a Marketing strategy and the subsequent steps of drafting editorial calendars, selecting channels, designing, and publishing advertising campaigns, is a complex journey.<br /> +Marketers have always dedicated a lot of time and resources to creating the most effective strategy for a brand’s success and translating it into concrete actions.<br /> +Today, is it possible to use artificial intelligence as a tangible support for the development of the strategic, technical, and operational assets necessary to create a successful marketing plan?<br /> +Let’s discover ATENA together, a methodology and an easy process through which you can simplify, accelerate, and enhance the quality of your marketing strategy, thanks to the practical support of AI.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Alessandro Agnati + + 1 + 1 + + + 12:40 + 00:15 + We went to court against Apple &#8211; a case for Software Freedom + https://www.sfscon.it/talks/for-the-right-of-general-purpose-computers/ + + Breaking lock-ins over devices with Free Software + Breaking lock-ins over devices with Free Software + <p>Our smartphones, tablets, laptops, and other connected devices are general purpose computers. That means we can potentially run any software we want to make full use of the hardware. This potential is fostered by Free Software.</p> +<p>However, device manufacturers, vendors, and internet platforms have been restricting software freedom by exercising their monopolistic control over end-user equipment. This power is used over key features and components of devices such as operating systems, browsers, and app stores.</p> +<p>Basic freedoms such as installing and uninstalling software are being unfairly limited by these companies, commonly referred to as &#8220;gatekeepers&#8221;, because of their monopolistic control over devices.</p> +<p>As a concrete example, this talk will present the policy and legal work of FSFE in denouncing the detrimental commercial practices of a worldwide known gatekeeper: Apple.</p> +<p>Apple&#8217;s monopolistic power over its devices is detrimental to Free Software and a high risk for the right of general purpose computers. The company&#8217;s &#8220;notarization&#8221;, its barriers to software freedom and lack of interoperability are highly negative to Free Software.</p> +<p>In conclusion, this talk will present Device Neutrality as a policy solution to enable end-users to bypass gatekeepers in order to run Free Software independently of the control exercised by hardware manufacturers, vendors, and platforms. Device Neutrality can enable end&#8211;users to regain control over their devices.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Lucas Lasota + + 1 + 1 + + + 13:00 + 00:15 + 25 Years of Copyleft Enforcement: The Road Ahead for Defending Software Rights + https://www.sfscon.it/talks/25-years-of-copyleft-enforcement-the-road-ahead-for-defending-software-rights/ + + <p>In 1999, I worked my first GPL enforcement matter: a large storage had made proprietary modifications to GNU tar and failed to release the complete, corresponding source code to its customers. In early 2000, I did my first “CCS check” (complete, corresponding sourcecode check) — wherein one attempts to build the “CCS candidate” provided by the vendor to investigate whether the CCS candidate is actually complete, and whether it corresponds to the binaries that were distributed.</p> +<p>In those days, violations of copyleft licenses were rare, and once uncovered, companies eventually corrected their behavior. Yet, even then, it took years of work to convince the company to comply. And often, by the time compliance was achieved, a new generation of the product was released.</p> +<p>25 years later, we face the same problems with nearly every vendor.<br /> +Almost every product on the market today contains Linux, BusyBox, the GNU C Library, GNU Bash, and dozen other packages licensed under the GPL and/or LGPL. Almost none of these companies, even if an offer for source code is made, provide CCS.</p> +<p>This talk will look both to the past and future as we investigate software rights and freedoms of the average consumer, and how we reached this difficult situation. Attendees can learn the history of copyleft and its enforcement, and leave with an understanding of how much work remains and what individuals can do to make a real impact on the rights of users under copyleft.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Bradley Kuhn + + 1 + 1 + + + 13:20 + 00:15 + SPDXv3: Advancing Transparency in Software + https://www.sfscon.it/talks/spdxv3-advancing-transparency-in-software/ + + A newly released standard for complete information + A newly released standard for complete information + <p>SBOMs are a crucial tool for understanding the composition of software, which is particularly important in the context of managing security risks and licensing compliance. Recent regulatory efforts from, among others, the US and the EU, explicitly move towards requiring SBOM for each software delivery.<br /> +SPDX (System Package Data Exchange) is a freely available ISO standard that provides a set of specifications for communicating SBOM information. It offers a common format for companies and organizations to share important data accurately and efficiently.</p> +<p>This presentation will delve into the details of the newly released version of SPDX, providing a comprehensive understanding of their importance in the software industry.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Alexios Zavras + + 1 + 1 + + + 13:40 + 00:15 + (re)classifying FOSS licenses + https://www.sfscon.it/talks/reclassifying-foss-licenses/ + + New strategy for classifying licenses in a better way + New strategy for classifying licenses in a better way + <p>There are many efforts trying to classify licenses, for different use cases such as checking compatibility or for complying with the license terms. Most of these efforts seem to, explicitly or implicitly, have a certain use case in mind.</p> +<p>This project sets out to:<br /> +Consider provisioning case &#8211; how is the software provided to your user (e.g. binary distribution, SaaS, Web UI)<br /> +Consider use case &#8211; how is the software used (e.g. compiler, library)<br /> +Trust model &#8211; why should you trust the contributor of a classification or you should be able to exclude a contributor’s work etc<br /> +Identify and generalize FOSS license clauses<br /> +Identify and generalize when a clauses is triggered<br /> +Determine how clauses are compatible with each other (a license clause matrix)<br /> +Identify the clauses and triggers for each license</p> +<p>Keeping track of how 100 licenses are compatible with each other will result in a matrix with 10 000 (100 x 100) values. This is hard to maintain. Extending to 200 licenses requires 40 000 values. By instead looking at the license clauses we will end up with a much smaller problem, assuming we identify 20-30 of them, which will result in a matrix of 400-900 values. This is big, but maintainable. Adding a new license will not increase the size of the (license clause) matrix, which means that our approach scales much better. From the license definitions and license clause matrix we can compile a license compatibility matrix (for fast compatibility lookup).</p> +<p>This project sets out to provide to users:<br /> +A license obligation checklist for each provisioning case &#8211; for making compliance checks easy<br /> +A license compatibility matrix for each provisioning case &#8211; for fast compatibility lookup</p> +<p>All data and source code will be released under FOSS licenses.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Henrik Sandklef + + 1 + 1 + + + 14:00 + 00:15 + Lessons from the EU&#8217;s Next Generation Internet Initiatives + https://www.sfscon.it/talks/lessons-from-the-eus-next-generation-internet-initiatives/ + + What We've Learnt From Looking At 500 Free Software Projects + What We've Learnt From Looking At 500 Free Software Projects + <p>The FSFE is a consortium member of the EU&#8217;s Next Generation Internet initiatives (https://fsfe.org/activities/ngi/ngi.en.html). As part of our work there over the past 6 years, we have looked at hundreds of participating Free Software projects, to assist them with their legal and licensing questions, as well as to help them become REUSE compliant.</p> +<p>This talk will speak about some simple trends in Free Software legal and licensing that we&#8217;ve observed over the years in independent Free Software projects and their developers, and how these affect aspects of the Free Software ecosystem.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Gabriel Ku Wei Bin + + 1 + 1 + + + 14:20 + 00:15 + The ZOOOM project: final results and future outlooks + https://www.sfscon.it/talks/the-zooom-project-final-results-and-future-outlooks/ + + <p>The ZOOOM project, concluding in Sept 2024, aimed to raise awareness about the role of open licenses (open source software, open hardware, and open data &#8211; 3Os) in intellectual property valorization. In this talk, we&#8217;ll summarize key results, share recommendations for businesses leveraging 3Os, and demonstrate tools developed to aid knowledge generators and supporting organizations in navigating the legal and business implications of 3Os. Additionally, we&#8217;ll discuss the future of ZOOOM and its potential impact on the industry and research.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Elisa Morganti + + 1 + 1 + + + 14:40 + 00:15 + AI Law & Ethics: developing responsible AI systems + https://www.sfscon.it/talks/ai-law-ethics-developing-responsible-ai-systems/ + + <p>The aim of this talk is to explore AI law and ethics in developing responsible AI systems. It covers the forthcoming AI Act and EU regulations, focusing on accountability, risk management, and privacy-by-design. Through use cases, it shows how developers can ensure AI transparency, fairness, and compliance, balancing innovation with ethics. Attendees will gain insights for creating sustainable, ethical AI solutions.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Federico Sartore + Francesco Vadori + + 1 + 1 + + + 15:00 + 00:15 + Impact and Innovation: The Crucial Role of OSPOs in Shaping a More Sustainable Capitalism + https://www.sfscon.it/talks/impact-and-innovation-the-crucial-role-of-ospos-in-shaping-a-more-sustainable-capitalism/ + + <p>In an era where sustainability and responsible innovation are not just valued but expected, Open Source Program Offices (OSPOs) stand at the forefront of a transformative wave that merges open innovation with sustainable business practices. This session explores the pivotal role of OSPOs in fostering open innovation environments that not only drive technological advancement but also align with the principles of impact-oriented capitalism</p> +<p>We will delve into how OSPOs can leverage open source ecosystems to catalyze change within their organizations, promoting not just compliance and security but also environmental, social, and governance (ESG) goals. Through case studies and practical insights, attendees will learn how integrating OSPO strategies with corporate sustainability objectives can create a powerful synergy that propels companies toward a more ethical and profitable future.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Stefano Pampaloni + + 1 + 1 + + + 15:20 + 00:15 + From Personalized to Programmed + https://www.sfscon.it/talks/from-personalized-to-programmed/ + + The Dilemma of AI Customization + The Dilemma of AI Customization + <p>When considering the core values of mass customization, such as individual expression, fun in co-creating, and creativity, AI may introduce disadvantages, potentially leading to the homogenization of experiences. This lightning talk aims to explore the potential risks and drawbacks of utilizing AI in mass customization, highlighting the tension between leveraging technology for customization and preserving the unique human elements that form the foundation of personalized experiences. Could the reliance on algorithms diminish the consumer’s role in the creative process? If so, it might challenge the essence of what makes mass customization truly unique and innovative.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Thomas Aichner + + 1 + 1 + + + 15:40 + 00:15 + Fostering Innovation in IT Businesses through Open Source Software Involvement + https://www.sfscon.it/talks/fostering-innovation-in-it-businesses-through-open-source-software-involvement/ + + <p>All IT companies depend on free and open source software to some extent. Once they reach a certain size, they spontaneously become supporters of the projects on which they base their business. This happens because of first order consequences: my business depends on it, if I help it strive, my business will benefit.<br /> +In this talk, we will address the second-order consequences of software engineers interacting with open source projects, and show why dedicating internal resources to this activity is an effective strategy for enabling the discovery of new or modified (software) entities, which is the prerequisite for innovation.<br /> +The benefits are visible for companies of any size, even if their business does not depend on a specific project to which they could contribute: compelling arguments will be presented to motivate business owners to encourage their IT staff to engage in open source activities (and to developers to convince their bosses).</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Daniele Gobbetti + + 1 + 1 + + + 16:00 + 00:15 + Tackling Openwashers, Freeloaders and Cuckoos + https://www.sfscon.it/talks/tackling-openwashers-freeloaders-and-cuckoos/ + + How to safeguard the Free Software market against unfair competition + How to safeguard the Free Software market against unfair competition + <p>Companies that produce and sell Free Software face a problem: some competitors use unethical and destructive means to compete, making their products cheaper and winning bids. This kind of market behaviour is increasingly becoming a problem for Free Software producers.</p> +<p>Destructive practices include marketing proprietary software under the guise of being Free Software, whether by using free/open wording, by introducing new licences that falsely appear to be free, or by imposing additional barriers that make it more difficult to use the freedoms offered by Free Software.</p> +<p>Other competitors sell Free Software products without contributing to their development and maintenance, profiting from the work of others but giving nothing back to the community. This allows them to offer low prices while raising the costs of maintenance for the original manufacturers. For some players, there seems to be no limit to their creativity when it comes to undercutting competitors and winning bids.</p> +<p>The Free Software Foundation Europe has been analysing these and other problematic market practices over the last few years. In this talk we will take a closer look at them and show why they harm Free Software manufacturers and the Free Software ecosystem. We will then discuss ways to limit the success of such practices.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Johannes Näder + + 1 + 1 + + + 16:20 + 00:15 + Web Accessibility is actually well-forgotten old + https://www.sfscon.it/talks/web-accessibility-is-actually-well-forgotten-old/ + + <p>Trends are cyclical, even in the tech world. A few years ago, everyone was talking about D&amp;I in the workplace. This season, web accessibility absolutely occupies the first lines of code. How is it shown? Let&#8217;s talk about it &#8211; many do not understand how to implement it in their project.</p> +<p>First, relax. This is a really complex topic that requires not only a well-created website, but also communication with real users who cannot fully use the Internet, for example, without a screen reader.</p> +<p>A checklist that will convince you to try implementing WA into your application:</p> +<p>◦ What can be adapted for WA?<br /> +◦ How is WA testing done?<br /> +◦ How to use AI in WA?</p> +<p>If we haven&#8217;t convinced you, then look at WA from the point of view of strengthening your personal brand in the market.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Sofia Etingof + Juri Solovjov + + 1 + 1 + + + 16:40 + 00:15 + LibreOffice as JavaScript idiomatic WebWidget + Library + https://www.sfscon.it/talks/libreoffice-as-javascript-idiomatic-webwidget-library/ + + Making LibreOffice a native part of the web, using FOSS for highly customizable office document handling in the browser, based on WASM. + Making LibreOffice a native part of the web, using FOSS for highly customizable office document handling in the browser, based on WASM. + <p>LibreOffice can be highly integrated into desktop and server applications and we wanted to make this also possible for web apps. Running fully client side with Web Assembly, LibreOffice can now be used and customized by a JavaScript idiomatic API, becoming an easy usable component for web development. With this Free Software opens the door to a completely different approach for bringing office document handling into the browser, then from what&#8217;s known from Google Docs and Co.. Use cases may be the integration of widgets with rich text documents, including classic desktop macros, into browser based applications or enabling JavaScript to interact live with values in spreadsheets. But LibreOffice can also work as background WASM library, converting documents from and to all supported formats like ODF (ODT, &#8230;), MS formats (DocX, XlsX, Doc, &#8230;), PDF or HTML, while applying custom conversion filters for things like macro sanitization.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Moritz Duge + + 1 + 1 + + + 17:00 + 00:15 + Using software tools and AI to audit e-commerce food regulations + https://www.sfscon.it/talks/using-software-tools-and-ai-to-audit-e-commerce-food-regulations/ + + <p>Selling food products on a website or e-commerce platform in Italy is subject to the Food Information of Consumers (FIC) regulations. These regulations dictate mandatory information that must be communicated on the product page, with fines for non-compliance. In this talk, we will cover the key guidelines and legal requirements, and demonstrate how we can use software tools and artificial intelligence to check large quantities of product listings for discrepancies. Join us to learn how to streamline the process of verifying food information and enhance consumer trust.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Davide Montesin + + 1 + 1 + + + 17:20 + 00:15 + Tag manager + https://www.sfscon.it/talks/tag-manager/ + + <p>Presentation of our tool, which is an free alternative to Google Tag Manager and also helps manage cookie banners.</p> +<p>Features:<br /> +&#8211; code injector<br /> +&#8211; code templating<br /> +&#8211; cookie banner manger</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Sandro Antonucci + + 1 + 1 + + + 17:40 + 00:15 + State of Microsoft Windows Refund (2024) + https://www.sfscon.it/talks/state-of-microsoft-windows-refund-2024/ + + Getting a Refund of your Microsoft Windows License - present and future + Getting a Refund of your Microsoft Windows License - present and future + <p>If you are a lover of the Free Software movement you probably already tried something else than Microsoft Windows on a computer.</p> +<p>What you may not know, is that computer resellers usually charge end-users with the Fee of the Microsoft Windows License, even before you accept the Microsoft Terms of Services, and even if you completely want to uninstall Windows from your computer.</p> +<p>This is a critical Tech Neutrality issue that fuels non-European proprietary software houses. What to do?</p> +<p>&#8211; heritage of Luca Bonissi against Big Tech(s)<br /> +&#8211; current status and problems<br /> +&#8211; opportunities in Europe, and partnership between Free Software Foundation Europe and Italian Linux Society.</p> +<p>Thanksgiving to community members who tried the procedure, and simplifying that procedure.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Valerio Bozzolan + + 1 + 1 + + + + + 10:30 + 00:30 + Ada & Zangemann + + Side Event - School Reading + Side Event - School Reading + Side Event,School Reading + 0 + 0 + + + + + 11:00 + 00:15 + Open Access for Museum Collections and Research + https://www.sfscon.it/talks/open-access-for-museum-collections-and-research/ + + <p>The digital era has revolutionised the way we access information and interact with it. Museums, as custodians of cultural and historical artefacts, can benefit substantially from this transformation. Open Access and FOSS can greatly increase the potential of museums for public outreach: enhance their educational impact and inspire new forms of cultural engagement and knowledge discovery. For example, by digitising collections and enabling Open Access for diverse audiences, accessibility barriers are eliminated and thousands of hidden treasures become available to both researchers and the wider public. Additionally, innovative data visualisations via FOSS platforms can reveal compelling insights into object collections and the research associated with them; Open Access can thus make complex research accessible and engaging to a broader audience. Through such practices, museums can democratise their activities and enrich the visitor experience. The process is not without obstacles; common challenges museums face in adopting Open Access policies are copyright issues, data privacy, and resource limitations.</p> +<p>The presentation will discuss the aforementioned opportunities and issues currently emerging in the museum sector. The talk will be illustrated with examples from the Deutsches Museum in Munich, the world’s largest museum of science and technology.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Artemis Yagou + + 1 + 1 + + + 11:20 + 00:15 + Journeying through Data Spaces – New Path to Interoperability? + https://www.sfscon.it/talks/journeying-through-data-spaces-new-path-to-interoperability/ + + <p>Data spaces play a pivotal role in advancing digitalisation and interoperability within and across different business domains, both on a national level and cross-borders. However, it&#8217;s not a new concept since its roots date back to 2005. The definition has evolved over the years and today it covers all four layers of interoperability defined by the European Interoperability Framework (EIF).</p> +<p>Today, the term data space has several different definitions depending on whom you ask. Also, multiple international initiatives are working on data spaces to create common governance models, specifications, reference implementations, etc. The aim of this talk is to discuss the data space concept, different actors working on data spaces and their roles and responsibilities, and available specifications and building blocks.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Petteri Kivimäki + + 1 + 1 + + + 11:40 + 00:15 + DOOF – an Open Source Orchestration Framework for Decentralized Consent Management + https://www.sfscon.it/talks/doof-an-open-source-orchestration-framework-for-decentralized-consent-management/ + + <p>DOOF stands for Data Ownership Orchestration Framework. It is a framework developed for NGI Trustchain Project within a broader Next Generation Internet scheme of the EU in order to address a lack of decentralization in consent management regarding users’ sharing of their data. The aim of DOOF is to revolutionize personal data governance and normalise the deployment of consent management and privacy enhancing technologies. It uniquely enables individuals to control their rights over data sharing, fostering greater trust and regulatory compliance, essential for building a resilient and transparent data economy.<br /> +DOOF targets the gap in current centralized consent management, where GDPR and Data Act demand seamless data exchange and regulatory compliance. Yet the sharing and consent management regarding users’ data is centralized &#8211; a responsibility of the data intermediary &#8211; which comes with great costs and liabilities.<br /> +With DOOF, Ecosteer aims to separate and decouple the layer of physical data transferring from the layer of consent management. DOOF offers companies a framework that allows them to easily adopt Privacy Enhancing Technologies (PETs) for the actual sharing of data and enforcement of users’ decisions.<br /> +The framework consists of a set of SDKs, libraries and a Smart Contract for decentralised consent management. The main component of the framework is a worker pipeline, consisting of extensible, plug-in processors. This pipeline contributes to the low-code movement, offering a framework that can be easily adapted to different business needs. Companies can easily build verticals on this existing framework by just extending some of its functionalities.<br /> +This talk will focus on the concept of decentralized consent management as well as pipeline-based orchestration framework, outlining the process of creating a novel, re-usable and extensible open-source project.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Georgiana Bud + + 1 + 1 + + + 12:00 + 00:15 + Accelerating territory&#8217;s development through Open Data + https://www.sfscon.it/talks/accelerating-territorys-development-through-open-data/ + + Open Data Hub and south tyrolean examples + Open Data Hub and south tyrolean examples + <p>In recent years, Open Data has revolutionized the way governments, companies and individuals access and use information. The openness of public and private data represents a milestone on the path towards a more transparent, participatory and competitive society.<br /> +Open Data represent a resource for society and businesses and contribute to the development of a territory. This added value manifests itself in various forms, including transparency and democratic participation, technological innovation, economic development and improved services.<br /> +The talk will focus on specific case studies from the Open Data Hub in the Autonomous Province of Bolzano, a region which has shown a strong commitment to the adoption and promotion of Open Data.<br /> +Through the analysis of these cases, the aim is to demonstrate how the initiatives based on Open Data have led to concrete and tangible results, offering useful and applicable insights also in extra-regional contexts.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Luisa Marangon + + 1 + 1 + + + 12:20 + 00:15 + Sensor Things API QGIS core provider + https://www.sfscon.it/talks/sensor-things-api-qgis-core-provider/ + + <p>Sensor Things API (STA, in short), is an OGC specification for storing and retrieving (timeseries of) Sensor Observations.</p> +<p>FROST-Server, developed by Fraunhofer IOSB, is one of the most consolidated implementations of STA with a very detailed documentation and a lot of background information. The implementation includes a REST endpoint to insert, modify and retrieve STA entities with a query language based on OASIS Odata URL patterns and query options.</p> +<p>A QGIS experimental plugin, developed by Deda Next srl in 2022 and implemented in python within the EU project Air-Break, is currently available to connect to STA-compliant endpoints and retrieve sensor data (e.g. European Air Quality data from this endpoint). The plugin has an embedded data provider which is currently designed to retrieve sensors&#8217; locations as geometrical features and then request the time series of observations for specific locations.</p> +<p>However, in order to offer support to a wider range of use cases and more complex queries on STA model entities, Faunalia and DedaNext (funded by BRGM) started to plan for a dedicated STA data provider for GIS: a development group was set up involving the QGIS community, formal acceptance of the proposal was sought within the QGIS community (QEP #257) and possible development options for the provider (ex: python vs C++) were analyzed. As STA is an OGC standard, it seemed appropriate to implement it in C++ as a core element of QGIS.</p> +<p>Development has therefore been carried out in close interaction with the QGIS developer community with the focus on supporting complex STA queries, implementing among other things:</p> +<p>&#8211; expansion of relations among model entities;<br /> +&#8211; independent attribute filtering and sorting on all entities;<br /> +&#8211; efficient data caching to limit unnecessary data transfers;</p> +<p>This new core element is available from QGIS version 3.37 (currently only available as nightly release).</p> +<p>Finally, plans are underway to develop a new version of the QGIS STA plugin (originally developed by Deda Next within project AirBreak) focused on data exploration and analysis that will be able to leverage on the newly released core STA data provider to support a wider range of use cases, such as:</p> +<p>&#8211; Time series analysis: This is the case of the old STA plugin. Fetch Locations, show them on the map. Then, upon selection of one location, fetch all related Things and Datastreams, and finally, fetch the Observations of the desired Datastream to be shown in a table or plot;<br /> +&#8211; Space-time series analysis: Given a selected set of Datastreams from a moving sensor, get all the FeaturesOfInterest of those Datastreams and plot them on the map, so to have a view of the path of the moving sensor and a hold on its values on every part of that path;<br /> +&#8211; Monitoring and inspection: Fetch all the latest observations of all Datastreams (or a selection based on the ObservedProperty) and show these at their Locations, styled by the result of the latest Observation of a given ObservedProperty. Then, in a second phase (eg. if a value is over a threshold), inspect the full timeseries of that one Datastream.<br /> +&#8211; Tracking of moving things: Show all Things with their current Location and their HistoricalLocations with the Temporal Controller (time slider).</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Matteo Ghetta + Luca Giovannini + + 1 + 1 + + + 12:40 + 00:15 + EO4MULTIHAZARDS Web Application + https://www.sfscon.it/talks/eo4multihazards-web-application/ + + <p>The EO4MULTIHA project (https://eo4multihazards.gmv.com/), funded by the European Space Agency, aims at developing an open database gathering and harmonizing event information coming from already existing event databases to support multi-hazard(-risk) research.<br /> +To pursue this aim, this project which has been developed in the EURAC research, Center for Sensing Solutions, presents a comprehensive web application designed to analyze and visualize multi-hazard events, developed using Django and PostgreSQL. Leveraging the strengths of open-source technologies, the application provides a robust platform for researchers, policymakers, and the public to access and understand the complexities of multi-hazard scenarios. The main parts of this web application is explained in the following paragraphs:</p> +<p>(i) The core of the application is built with Django, a high-level Python web framework known for its rapid development capabilities and clean, pragmatic design. PostgreSQL, a powerful and scalable open-source relational database system, ensures efficient data storage and management. Together, these technologies offer a reliable and flexible foundation for handling diverse and large datasets.</p> +<p>(ii) To visualize the events, Leaflet Map which is an open source contributor to the OpenStreet Map has been used.</p> +<p>(iii) To populate the database, the application exploits various RESTful APIs, integrating data from multiple sources, including satellite imagery, climatological records, in-situ measurements, and relevant statistical data. This multi-source approach allows for a comprehensive characterization of risks, exposures, and susceptibilities associated with multi-hazard events benefiting from the Open Data Standards such as OGC Standard.</p> +<p>(iiii)Key features of the application include spatial and temporal filtering of events, cross-linking of data sets for enhanced reusability, and compliance with open standards such as RESTful APIs and OGC standards. The platform is designed to be expandable, with the potential to incorporate additional locations and datasets in the future.</p> +<p>By providing an accessible online platform, this web application aims to support the understanding and analysis of multi-hazard events, facilitating informed decision-making and effective disaster management strategies. The use of open-source technologies and the integration of diverse data sources underscore the project&#8217;s commitment to innovation, scalability, and community-driven development.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Mahtab Niknahad + + 1 + 1 + + + 13:00 + 00:15 + BASIC CORE South Tyrol + https://www.sfscon.it/talks/basic-core-south-tyrol/ + + A project to solve the topographical complexity of the National Spatial Data Catalogue + A project to solve the topographical complexity of the National Spatial Data Catalogue + <p>The project has its roots in a precise and simplified cartographic updating methodology introduced by the Consortium of Municipalities of the Province of Bolzano in the early 2000s. This methodology, which was consolidated over the years, could no longer be applied following the adoption of the Territorial Data Catalogue (Ministerial Decree 10.11.2011 &#8220;Technical rules for defining the content specifications of geotopographic databases&#8221; and subsequent amendments) due to the complexity and articulation of the new national model. The primary objective of the project was to research and define a minimum set of information that could adequately describe the territory within the typical use context of the public administration, ensuring its sustainability in terms of the ability to keep it updated and aligned with the transformations of the territory. Simplifying the definition and understanding of the basic technical layer that every public administration producing geographic data must guarantee within their institutional activities for geotopographic databases is a fundamental step to adequately support territorial management. Lightened of the informational content already managed by the Provincial Administration within archives or sectoral Information Systems, and consequently already included in existing and consolidated maintenance and updating flows, as well as everything that can be considered three-dimensional data nowadays obtainable through faster and more accurate systems, the Basic Core (BC) specification was produced by reorganizing and simplifying the information levels contained in the National Territorial Data Catalogue with reference to the identified minimum subset of required information known as the National Core (NC). To make it practically usable, only the themes considered objectively useful and easily updatable were included in the Basic Core. Our presentation will outline the key points that enabled the design of the Basic Core content specification and illustrates the technological tools developed, as well as the automatic transformation and simplification procedures that led to the significant reduction in the number of object classes provided by the National Core (from 59 to only 23), demonstrating that the Basic Core project is not a merely theoretical exercise, but a practical and concrete application currently tested and successfully used in South Tyrol. The specifically developed Dashboard for managing, correcting and updating the provincial Geotopographic Database, built on the basis of this new simplified specification, will be explained in detail. This dashboard allows effective operation on every management aspect, including the crucial task of sharing maintenance responsibilities between the Provincial and Municipal levels, thus ensuring the full efficiency of this fundamental geographic base. Particular attention will be given to illustrating the guided editing functionality available directly from the online interface, as well as the options for creating and exporting QGIS projects. QGIS projects are designed to perform the most significant and advanced corrections and/or updates. We will conclude the overview of this innovative system with a demonstration of the processes for reimporting and validating the updated data. Finally, practical cases in which the Basic Core has been used will be presented, as well as future developments, already planned and those still under evaluation, that the system will receive in order to refine and make its use more robust.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Edoardo Scepi + + 1 + 1 + + + 13:20 + 00:15 + Sharing Connects People + https://www.sfscon.it/talks/sharing-connects-people/ + + The experience of Think Open at CIMeC + The experience of Think Open at CIMeC + <p>Think Open is an Open Science initiative born within CIMeC in 2018 whose goal is to build a virtual space within which researchers at the Center can share different kinds of outputs from research, integrating and merging information from different sources and stages of the knowledge-building process. A number of achievements have been made over the years, both from the point of view of training (seminars, hands-on, courses for doctoral students, awards, etc.) and implementation of best practices (code and data sharing, adoption of free-software tools, etc.). Here we will describe how sharing open practices in everyday working routines foster connections between people, creating practice-based communities.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Vittorio Iacovella + + 1 + 1 + + + 13:40 + 00:15 + Hacking your (electric) car: the importance of Open Data + https://www.sfscon.it/talks/hacking-your-electric-car-the-importance-of-open-data/ + + Gathering information from the OBD (On Board Diagnostic) port of your car could be challenging + Gathering information from the OBD (On Board Diagnostic) port of your car could be challenging + <p>Any car has a diagnostic connector from which you can gather and/or set data from the various ECU (Engine Control Unit) that are present in your car, such as odometer, temperatures, motor rotation speed, accelerator depression percentage, wheel angle, lights, and – in an electric car – information about battery, remain energy, charging/discharging power, etc.<br /> +The big challenge is that the meaning of fathered data is usually not known and car manufacturers are reluctant to share this information.<br /> +This talk will illustrate how to scan the available data and make reverse engineering in order to try to create a shared database containing (useful) car data and PIDs (Parameter IDs) from ECUs of your car.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Luca Bonissi + + 1 + 1 + + + 14:00 + 00:15 + The Innovation Paradox + https://www.sfscon.it/talks/the-innovation-paradox/ + + Do you really know how to unleash and manage innovation? + Do you really know how to unleash and manage innovation? + <p>In the era of the Fifth Industrial Revolution, leaders, innovators and pioneers design, generate, and shape future-proof organizations, driven by a meaningful purpose promoting social impacts, combining emerging technologies and new ways of collaborating and conceiving work. While the &#8220;why&#8221; is clear and quite declared by many, the &#8220;what&#8221; to do and the &#8220;how&#8221; to do it remain very nebulous and, in some cases, obscure. Those ones who lead innovation within an organization suffer the innovation paradox: must innovate without knowing what and how. Innovators and pioneers are often alone, without a framework and processes for an open innovation execution. How can we unlock and unleash innovation, ensuring that the actions taken are always driven by what is truly needed to evolve your organization?</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Andrea Solimene + + 1 + 1 + + + 14:20 + 00:15 + The FSFE Italy Project from Understanding to Testing + https://www.sfscon.it/talks/the-fsfe-italy-project-from-understanding-to-testing/ + + How I applied design-thinking to re-design the Italian Free Software Community + How I applied design-thinking to re-design the Italian Free Software Community + <p>The role of Deputy Coordinator Italy within the Free Software Foundation Europe (FSFE) was born in 2022 out of the need of re-establishing the presence of the Foundation on the territory. I designed this three years experimental project together with the <a href="https://freesoftwarelab.noi.bz.it/">Free Software Lab</a> of NOI Techpark with the value proposition of (re)designing the FSFE Italian Community.</p> +<p>The project followed a human centric approach, moving along the five core stages of design-thinking. The goal of my talk is to describe the FSFE Italy project and the design-thinking approach adopted.</p> +<p>The first year (Y1) served as the understanding phase: I got involved as an FSFE representative in the main communication channels used by the Free Software (FS) community on the territory. I conducted interviews with volunteers, associations’ heads and enthusiasts, took part into the main FS events organized on the territory, mapped all stakeholders (understanding-observing) and created my own point of view (POV). By the end of 2022 I had already became an established FSFE representative on the territory, having gathered inputs and ideas on how to kick off the community into year two (Y2). The goal of year two was to build on these new ideas (ideation) and put these thoughts into action (prototyping) by finding common goals and activities with the main FS associations active on the territory and signing Memorandum of Understandings, preparing the ground to test it in the third year (Y3). Guess what was the result?</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Marta Andreoli + + 1 + 1 + + + 14:40 + 00:15 + NGI: No more EU funding for Free Software?! + https://www.sfscon.it/talks/ngi-no-more-eu-funding-for-free-software/ + + <p>During the summer the European Commission made the decision to stop funding Free Software projects within the Next Generation Internet initiative (NGI). This decision results in a loss of €27 million for software freedom. Since 2018, the European Commission has supported the Free Software ecosystem through NGI, that provided funding and technical assistance to Free Software projects. This decision unfortunately exposes a larger issue: that software freedom in the EU needs more stable, long-term financial support. The ease with which this funding was excluded underlines this need.<br /> +This talk shows the urgent need for sustainable, long-term financial support for Free Software to ensure Europe&#8217;s technological independence.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Alexander Sander + + 1 + 1 + + + 15:00 + 00:15 + What the open source community means to me + https://www.sfscon.it/talks/what-the-open-source-community-means-to-me/ + + Some very personal thoughts on why contributing can enrich your life + Some very personal thoughts on why contributing can enrich your life + <p>Everytime I tell my friends about my hobby which noawadays has also become my job, I face lots of questions. A worldwide community? Contributors around the globe? An open source community? What is this all about?</p> +<p>In this talk, I&#8217;d like to share my very personal view about what the open source community means to me, how to grow from user into community member, how the credit of trust helps you to discover your own skills, how to make friends around the world and why it&#8217;s not only fun to get active in a community, but also a big benefit for your whole life that can help you to broaden your mind.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Florian Effenberger + + 1 + 1 + + + 15:20 + 00:15 + A Journey of Contribution and Collaboration in Open Source + https://www.sfscon.it/talks/a-journey-of-contribution-and-collaboration-in-open-source/ + + Why Foundations are Essential + Why Foundations are Essential + <p>Have you ever worked on a project that didn&#8217;t use any open source tools, libraries, or products? Didn&#8217;t think so&#8230;Using open source has been such an integral part of our daily work life that we don&#8217;t even think about it. We just expect it to be available, secure, stable, and bug-free. But how many of you are actually contributing back to an open source project?</p> +<p>This session will go through a couple of the aspects to consider when you are embarking on your open source journey. We will look at different kinds of open source projects, and what the open source foundations bring to the table.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Ivar Grimstad + + 1 + 1 + + + 15:40 + 00:15 + Jakarta EE: Why and how to get involved in Open Source Software? + https://www.sfscon.it/talks/jakarta-ee-why-and-how-to-get-involved-in-open-source-software/ + + <p>In this session you will learn how to become part of an open source community, how to get involved and most importantly why you need to do it! You will learn about the Jakarta EE and its plans for the future, so you can start right away! This presentation will also provide you with key insights into the industry-wide, open source collaboration to modernize Java enterprise systems for cloud-centric use cases.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Tanja Obradovic + + 1 + 1 + + + 16:00 + 00:15 + From Concept to Camp: Project Management Strategies for IT Education Events + + + <p>In today’s fast-paced technological landscape, the need for immersive and hands-on educational experiences is more crucial than ever. &#8220;From Concept to Camp: Project Management Strategies for IT Education Events&#8221; delves into the meticulous process of organizing successful IT camps from a project management perspective.</p> +<p>Join us as we explore the comprehensive journey of bringing an IT camp from initial concept to a fully realized event. We will cover essential project management strategies, including planning, scheduling, resource allocation, risk management, and post-event evaluation. Participants will gain insights into: Defining Objectives and Scope; Budgeting and Resource Management; Team Collaboration and Leadership; Marketing and Participant Recruitment; Logistics and Event Planning; Evaluation and Feedback.</p> +<p>Through real-world examples and practical advice based on the Red Hat Summer Camp Brno project, this talk will equip you with the tools and knowledge needed to transform your vision of an IT camp into a reality.</p> +<p>Whether you’re planning your first event or looking to enhance your current approach, this session will provide valuable takeaways to elevate your project management skills and deliver exceptional educational experiences.</p> + + SFSCON + SFSCON + SFSCON + + Juri Solovjov + Yuliia Kliuchnikova + + 1 + 1 + + + 16:20 + 00:15 + Building the Public Interest Desktop + https://www.sfscon.it/talks/building-the-public-interest-desktop/ + + Our experience organizing GNOME's Sovereign Tech Fund project + Our experience organizing GNOME's Sovereign Tech Fund project + <p>The Sovereign Tech Fund is a new funding program for critical free software infrastructure by the German government. As part of this, members of the GNOME community have been working on fixing important issues across the free desktop stack. This includes security, accessibility, maintainability, hardware support, and more.</p> +<p>In this talk Sonny and Tobias will give an overview of how we organized the project, the work done as part of it, and the massive impact a relatively small amount of public money can have on making the free desktop better.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Tobias Bernard + Sonny Piers + + 1 + 1 + + + 16:40 + 00:15 + Let&#8217;s share our love for Free Software + https://www.sfscon.it/talks/lets-share-our-love-for-free-software/ + + I love Free Software Day 2025 + I love Free Software Day 2025 + <p>We often underestimate the power of a simple Thank You. Free Software contributors do important work for our society and the &#8220;I Love Free Software Day&#8221; on 14 February is the perfect opportunity for you to express your special gratitude. Since 2010, we have celebrated this wonderful annual event with an ever-growing and diverse community. ♥</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Ana Galan + + 1 + 1 + + + 17:00 + 00:15 + MoodleXR: A Next-Generation Open-Source Platform for Immersive Learning + https://www.sfscon.it/talks/moodlexr-a-next-generation-open-source-platform-for-immersive-learning/ + + <p>This project aims to develop a state-of-the-art Learning Management System (LMS) based on Moodle, optimized for delivering Virtual Reality (VR) and Augmented Reality (AR) learning modules.</p> +<p>By leveraging the open-source nature of Moodle and integrating advanced immersive technologies, the project seeks to create an innovative educational platform that transforms traditional learning experiences.</p> +<p>The LMS will incorporate open-source VR/AR tools and libraries, such as A-Frame, AR.js, and Blender, enabling educators to seamlessly integrate and manage immersive content. It will support various VR headsets and AR devices, ensuring broad accessibility. The platform will feature interactive learning modules, robust analytics, and scalable infrastructure, all built on open-source technologies like Kubernetes and Matomo.</p> +<p>Additionally, the project will emphasize accessibility and privacy compliance, utilizing tools like WAVE and Let’s Encrypt.</p> +<p>By fostering a community-driven development model, this LMS will offer a flexible, cost-effective solution that revolutionizes education through experiential learning, making it more engaging, interactive, and effective for students and educators alike.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Luca Bagna + + 1 + 1 + + + 17:20 + 00:15 + Implementing digital examinations in free software systems + https://www.sfscon.it/talks/implementing-digital-examinations-in-free-software-systems/ + + <p>In Finnish upper secondary schools course and final exams have been digital for some years now. Ordinary student laptops are routinely booted from USB flash drives to a special operating system, which provides a restricted environment allowing students to take an exam with no distractions or tools to cheat. Up to these days, this was implemented with Debian GNU/Linux, also meaning that student laptops must be Linux-compatible.</p> +<p>This is now changing. Not every modern laptop can simply boot from a USB drive to run Linux, these including chromebooks, Apple laptops and some new Windows laptops. Some schools may want to buy these devices and do not want a separate set of computers only for examinations. The current system is being replaced by an exam application, meant to run on different operating systems, which are to provide guarantees that no cheating can occur. The exam application activates the &#8220;assessment mode&#8221;, provided by operating system vendors, and this mode should provide a safe place where no cheating can occur, even on computers owned by the students.</p> +<p>Does that even make sense? Can that really be done, and with free software? In this presentation we take a peek at some technologies in Linux systems that can be used to secure a computer against an attacker with a physical access to the machine. We will also look at possible ways to implement an &#8220;assessment mode&#8221; in Linux desktops.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Juha Erkkilä + + 1 + 1 + + + 17:40 + 00:15 + Let’s spark children’s interest in coding + https://www.sfscon.it/talks/lets-spark-childrens-interest-in-coding/ + + Our experiences and how you can contribute + Our experiences and how you can contribute + <p>Today it is impossible to imagine daily life without software. The majority of us can&#8217;t spend a single day without using it. People use software in the workplace, on laptops, and on mobile phones. Software is also found in less obvious places however: in trains, cars, televisions, washing-machines, fridges, and many other devices. None of these devices could function without software. Without software we couldn&#8217;t write e-mails, make phone calls, go shopping, or travel as we are accustomed to. Software is our society&#8217;s central tool. How do we ensure that the next generation is motivated and capable of shaping technology for society&#8217;s benefits?</p> +<p>The Free Software Foundation Europe&#8217;s volunteers and staff have interacted with over 1700 children between 6 to 10 years in the past months. Children, especially girls, afterwards were motivated to start experimenting with hardware and software. In the discussions we saw that they realise how crucial technology will be for them. Furthermore with the FSFE&#8217;s coding competition &#8220;Youth Hacking 4 Freedom&#8221; we gathered experiences working with teenagers who program, tinker, and have fun with software.</p> +<p>Learn more about the experiences how the FSFE sparks children&#8217;s and teenagers interest to tinker, experiment and program. Furthermore you will see how fulfilling those activities can be for yourself.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Matthias Kirschner + + 1 + 1 + + + + + 11:00 + 00:15 + Open-source silicon chips + https://www.sfscon.it/talks/open-source-silicon-chips/ + + <p>We have all heard that there is &#8216;Intel inside&#8217;, but what is inside Intel? Almost all integrated circuits today are literally black boxes. They may contain unwanted or malicious features and, most importantly, they do not encourage reuse, nor do they allow it. The two main causes of such secrecy are: 1. standard design tools explicitly forbid the publication of any output, and 2. most foundries disallow disclosing technology details. Designers moreover face additional problems: The licence cost of standard design tools is unaffordable for most SMEs (unless questionable discount policies are applied), and lock-in threats arise at many levels, from IP blocks to foundry details to file formats. Yet exceptional progress has been made in recent years: Hundreds of silicon chips have been designed using free and open-source tools, and three foundries have made details of their processes public: The doors to free silicon are open! Hence how is politics reacting? What are the next steps to be taken? What are the opportunities for users, society and companies?</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Luca Alloatti + + 1 + 1 + + + 11:20 + 00:15 + Opt out? Opt in? Opt Green! Bringing Free Software To Eco-Consumers + https://www.sfscon.it/talks/opt-out-opt-in-opt-green-bringing-free-software-to-eco-consumers/ + + <p>Free Software gives consumers what they want, but many don&#8217;t know it &#8230; yet! We aim to change that by reaching out directly to eco-consumers in the &#8220;Opt Green&#8221; project, a new KDE Eco initiative funded by the German Environmental Agency.</p> +<p>Consumers want sustainable software: in a recent European poll 50% of respondents say the two primary reasons they purchase a new device are non-functioning software and software performance issues. This is as good a time as ever for an &#8220;Opt Green&#8221; message. In the next couple of years Windows 10 end-of-life and the phasing out of Intel-based macOS support will make e-waste out of hundreds of millions of computers. Functioning but vendor-abandoned devices can stay out of the landfill and in use for many years to come. With software designed for users&#8217; needs, not vendors&#8217;, it is possible to run software on the devices one already owns. Lean, efficient Free Software even runs on devices that are decades old. This is good for users, and better for the environment!</p> +<p>In this lightning talk I will provide an overview of the whys and hows of KDE Eco&#8217;s &#8220;Opt Green&#8221; initiative. Through campaigns and workshops over the next 2 years, we will raise awareness about environmental issues driven by software and demonstrate the power of Free Software to drive down resource use and keep devices running smoothly for years beyond official vendor support. This is all possible because Free Software *is* right-to-repair software: it removes vendor dependencies and guarantees transparency and user autonomy, providing full control over software, and thus hardware. I will describe the ways we plan to reach our target audience, including materials designed for eco-consumers and events well outside usual tech circles, such as open-air organic, artisanal, and fair trade markets, cultural centers, and others. These activities give us the opportunity to align our values in the Free Software community with those in allied communities striving for a sustainable modern lifestyle.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Joseph P. De Veaugh-Geiss + + 1 + 1 + + + 11:40 + 00:15 + ClapMetrics: Decoding Users’ Gender and Age Through Smartwatch Gesture Dynamics + https://www.sfscon.it/talks/clapmetrics-decoding-users-gender-and-age-through-smartwatch-gesture-dynamics/ + + <p>In this presentation, we introduce ClapMetrics &#8211; an innovative and seamless method for deducing the gender and age of smartwatch users. This system ingeniously harnesses the capabilities of the smartwatch’s integrated 3D sensors — specifically, the accelerometer and gyroscope—to capture the wearer’s arm movements during a clapping action. ClapMetrics operates on the principle that each clap is a complex interplay of motion, unique to the individual, much like a fingerprint. By analyzing these movements, ClapMetrics can gather rich biometric data without any active input or effort from the user, making it a remarkably non-intrusive technology. We will delve into the specifics of how ClapMetrics processes sensor data to make its estimations. We will explore the Neural Network’s architecture, the training process, and how the model interprets the sensor data to make reliable predictions about the wearer’s gender and age.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Attaullah Buriro + + 1 + 1 + + + 12:00 + 00:15 + Adoption Determinants of Open Hardware Across Industries + https://www.sfscon.it/talks/adoption-determinants-of-open-hardware-across-industries/ + + <p>Open Hardware (OH) is revolutionizing the way we approach technology in several areas, such as agriculture and healthcare. These areas, which are fundamental to food availability and human well-being, are undergoing an important shift as open hardware licensing strategies, inspired by open-source software (OSS), make solutions more accessible, affordable, and customizable. In this talk, we review major factors determining the use and adoption of OH technologies, including economic advantages, opportunities, and challenges.<br /> +Similar to OSS, OH applications are gaining momentum. In agriculture, farmers and researchers are turning to OH for precision farming tools, environmental monitoring, and robotics. These technologies not only reduce development costs but can be easily adapted to specific local needs, enhancing their effectiveness in diverse agricultural environments – crucial for small-scale farmers in developing countries and rural areas who face financial constraints. Likewise, the healthcare industry is benefiting from OH through the development of affordable medical devices, diagnostic tools, and treatment systems. The high costs and regulatory challenges associated with traditional medical devices often limit access to essential healthcare, especially in underdeveloped regions. Examples include open-source ventilators, syringe pumps, and diagnostic devices.<br /> +Applications of OH will be showcased through a comparative analysis of successful projects, particularly those with high engagement on platforms like GitHub, characterized by community engagement, active forums, and regular updates. Finally, we will draw conclusions about the potential of OH for industries beyond agriculture and healthcare, encouraging further innovation and collaboration in the open-source community.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Seckin Celik + Davide Serpico + + 1 + 1 + + + 12:20 + 00:15 + Enabling global interoperability among smart devices is only possible through Open Source + https://www.sfscon.it/talks/enabling-global-interoperability-among-smart-devices-is-only-possible-through-open-source/ + + Oniro and OpenHarmony a cooperation to build a global ecosystem + Oniro and OpenHarmony a cooperation to build a global ecosystem + <p>Global interoperability is probably the biggest problem that smart devices have been studied for more than 10 years. Multiple solutions have been proposed with different results, but none of them has established a reference framework and a global adoption. One of the main reasons for this to stay as a key element for research and investment is the diversity among the whole technology stack and geographical dispersion of device manufacturers. In the last years, there is a solution that is capturing the attention by demonstrating how an open source operating system can enable global interoperability in a huge domestic market like China. This solution is OpenHarmony and through a cooperation with Eclipse Foundation Oniro project, it is intended to use open source to drive interoperability and therefore solve one of the biggest challenges in the IoT and smart device industry. During the talk, it will be presented the approach followed by these two independent initiatives to cooperate while keeping the independence of the open source communities behind them.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Juan Rico + + 1 + 1 + + + 12:40 + 00:15 + Smart Werke Meran &#8211; Lorawan Use Cases + https://www.sfscon.it/talks/smart-werke-meran-lorawan-use-cases/ + + Our Use Cases realized with 100% Open Source + Our Use Cases realized with 100% Open Source + <p>Stadtwerke Meran has had a Chripstack Lorawan server and 19 Lorawan gateways for a year now. Merano has a well-developed Lorawan network.</p> +<p>We have realized the following use cases:</p> +<p>Remote control of public lighting.<br /> +Temperature measurement ( Just Nature project)<br /> +Smart metering for our water customer<br /> +GPS tracking for waste compactors of our major customers</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Stefan Mutschlechner + + 1 + 1 + + + 13:00 + 00:15 + 2025 scenario on OpenISA OpenPower Open Hardware computing + https://www.sfscon.it/talks/2025-scenario-on-openisa-openpower-open-hardware-computing/ + + 2025 Real scenario on Open Hardware based on OpenISA OpenPower CPU + 2025 Real scenario on Open Hardware based on OpenISA OpenPower CPU + <p>We see on 2025 which OpenISA OpenPower low power chip will give life to new Open Hardware computers, we examine in detail which open hardware computers will be ready for 2025 based on these chips. It will be the first time that OpenPower OpenISA low power Chip will be produced, and what is more, it will be produced from other Silicon Companies different from IBM.<br /> +We will see who are the GNU/Linux distros that support PPC64 and PPC64el and PowerPC architecture that runs on these computers and how you can join to experiment with it and push forward these architectures.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Roberto Innocenti + + 1 + 1 + + + 13:20 + 00:15 + The SMART Box of AURA Project + https://www.sfscon.it/talks/the-smart-box-of-aura-project/ + + <p>AURA project centers on the development of &#8220;Green &amp; Smart Urban Furniture,&#8221; a new generation of urban furniture that transcends traditional roles by incorporating eco-friendly and intelligent features. These urban elements are designed with bioabsorbent vegetation capable of mitigating atmospheric pollutants, making them environmentally sustainable. Furthermore, they are outfitted with advanced IoT sensors that monitor a range of environmental parameters, including climate data, urban pollution, and vehicular traffic.</p> +<p>These smart urban furniture units not only establish an extensive urban monitoring network but also actively combat pollution through the sequestration and reduction of harmful substances via the integrated vegetation. The embedded IoT sensors provide innovative capabilities for tracking the impact of these elements on the surrounding urban environment, such as monitoring air pollution levels and assessing the effects of heat islands. Each furniture piece is equipped with a &#8220;smart box,&#8221; a hardware system constructed using low-cost commercial off-the-shelf (COTS) components. This system includes climate and environmental sensors, gas measurement devices, a processing unit, and a data transmission module. The accompanying software, developed from scratch, delivers localized information—such as CO2 sequestration, temperature, and humidity—and contributes to a comprehensive environmental monitoring network aimed at predictive analysis, including weather risks, heat wave alerts, and health risks associated with air pollution. The presentation will delve into the custom-developed software and its ability to meet the field-level requirements of the AURA Architecture, encompassing individual sensors, sensor nodes (smart-boxes within the furniture), and the broader network of these nodes. It will highlight the significant impact and benefits of utilizing free and open-source technologies throughout the development process. Key focus areas include the creation of drivers for individual sensors, with emphasis on the most representative examples, the development of software for sensor nodes—covering features like self-testing, over-the-air (OTA) updates, and MQTT communication—and the design of a dynamic web app for data presentation, leveraging JavaScript, Bootstrap, and a JSON Data Lake. This comprehensive approach underscores the importance of open technologies in accelerating innovation, ensuring flexibility, and delivering robust, scalable solutions for smart urban environments.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Angelo Serino + + 1 + 1 + + + 13:40 + 00:15 + Raspberry Pi and Node-RED: Open Source Tools for Local Automation and Industrial IoT applications + https://www.sfscon.it/talks/raspberry-pi-and-node-red-open-source-tools-for-local-automation-and-industrial-iot-applications/ + + <p>This talk will explore how Raspberry Pi and Node-RED enable robust solutions for automation and control systems in both industrial and local applications. Leveraging open-source technology, these platforms can handle a wide range of tasks, from reading sensor data and managing actuators, to controlling devices through industrial communication protocols such as Modbus, RS485 ascii RTU etc. Node-RED&#8217;s message-driven architecture simplifies the creation of control logic, even for complex operations, while Raspberry Pi serves as a powerful and cost-effective alternative to traditional PLCs and IPCs. The integration of these tools allows for seamless data processing, remote communication, and the development of HMI interfaces both user-friendly or more traditiconal SCADA-like, making these technologies ideal for creating IIoT-native solutions. This presentation will focus on the technical capabilities, showing how these platforms can empower engineers and developers to build flexible and scalable automation solutions.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Federico Boero + Alberto Nicoletti + + 1 + 1 + + + 14:00 + 00:15 + Approaches to Object Detection: Edge-Based and AI-Based + https://www.sfscon.it/talks/approaches-to-object-detection-edge-based-and-ai-based/ + + <p>This presentation explains why we passed to the expert system based on edge-based object detection on traditional image analysis techniques to the AI-based, leveraging advanced machine learning. The first method uses parameters derived from image analysis tools, focusing on attributes such as shape, size, and color of objects, informed by preliminary tests and expert data. The machine learning method employs a sophisticated algorithm that dynamically learns and identifies objects in images. We used both approaches using diverse datasets and measured their accuracy and efficiency under various conditions. The aim of this presentation is to show the improvement obtained by using the AI-based system applied for real-time detection and classification, offering insights into their practical strengths and applications.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Giovanni Giannotta + Orneda Lecini + + 1 + 1 + + + 14:20 + 00:15 + Proxmox Backup Server: Backup for your Datacenter + https://www.sfscon.it/talks/proxmox-backup-server-backup-for-your-datacenter/ + + <p>Backups are an essential component of every IT infrastructure, from small scale businesses up to large datacenters, spanning multiple locations. With the Proxmox Backup Server a fully Free and Open Source backup solution is available, being highly integrated with the Proxmox Virtual Environment.<br /> +This talk will present a short overview of the capabilites provided by Proxmox Backup Server, giving some insights into new and recently added features. Further, by peeking into the inner workings and the software design will show how fast, space efficient and reliable backups are created and how data consistency and integrity are guaranteed. Topics covered will include backups for Virtual Machines and Linux Containers running on top of Proxmox Virtual Environment as well as host level backups.</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Christian Ebner + + 1 + 1 + + + 14:40 + 00:15 + Cloud Costs with ClickHouse and OpenCost + https://www.sfscon.it/talks/cloud-costs-with-clickhouse-and-opencost/ + + <p>Managing costs and billing across numerous Cloud-managed Kubernetes clusters presents significant challenges. In this talk, we&#8217;ll explore these challenges and discuss solutions using ClickHouse and OpenCost. Leveraging ClickHouse&#8217;s capabilities, we&#8217;ll demonstrate how it efficiently imports diverse Cloud billing data streams. Additionally, we&#8217;ll delve into how OpenCost addresses the complexities of real-time cost management within a multitenant architecture. Join us to uncover practical insights into optimizing cloud costs effectively.</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Denys Kondratenko + + 1 + 1 + + + 15:00 + 00:15 + Ansible + https://www.sfscon.it/talks/ansible/ + + Lazy Engineer's Best Friend! + Lazy Engineer's Best Friend! + <p>For a software engineer DRY is not only a washing machine progam, but it represents a deeply-held mantra: Don&#8217;t Repeat Yourself.</p> +<p>To avoid repetitive manual work, automation tools like Ansible enable engineers to quickly configure infrastructure and easily deploy applications.</p> +<p>In this talk, we will explore the key concepts and benefits of Ansible for configuration management, deployment and orchestration of remote devices. We will start with an overview of Ansible&#8217;s utility, how it works, and common use cases. We will see how YAML files describe configurations and playbooks define automated tasks and processes.</p> +<p>Practical examples will show Ansible automation in action, including a quick introduction to initializing and keeping your operating system up to date by automating the installation and maintenance of system tools. We will also introduce the concept of dotfiles for configuration.</p> +<p>What are you waiting for? Learn how to spend 30 minutes automating 5-second tasks with Ansible! (It&#8217;ll save you time in the long run, I promise!)</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Marco Lampis + + 1 + 1 + + + 15:20 + 00:15 + Efficient Log Management in Large-Scale Kubernetes Clusters + + + <p>Large Kubernetes clusters can generate significant volumes of logs, especially when housing thousands of running pods. This may demand substantial CPU, RAM, disk IO, and disk space for storing and querying large log volumes. In this talk, we will look into different strategies of storing those logs in ElasticSearch, Grafana Loki and VictoriaLogs and examine how we can save 10x or more on infrastructure costs.</p> +<p>This talk presents real-world examples of efficient log management in large-scale Kubernetes clusters. It includes setup demonstrations, numerical data, and graphical representations from reproducible benchmarks.</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Aliaksandr Valialkin + + 1 + 1 + + + 15:40 + 00:15 + KubeVirt + + + making running virtual machines in a kubernetes cluster a mainstream activity + making running virtual machines in a kubernetes cluster a mainstream activity + <p>KubeVirt is a Kubernetes addon for running virtual machines inside a Kubernetes cluster.</p> +<p>Currently being in CNCF incubating state, it has a wide range of adopters by both vendors and end users, such as NVidia, Suse, ARM and Red Hat to name a few.</p> +<p>This talk gives an overview of what is currently possible with KubeVirt on your cluster and what its future may look like. We will describe some of the features it supports, i.e. VM Import, LiveMigration, Snapshot/Restore and Monitoring.</p> +<p>At the end of the talk attendees will have an idea of how they can use it to better integrate existing virtual machines with containers in their existing application landscape.</p> + + SFSCON + SFSCON + SFSCON + + Daniel Hiller + + 1 + 1 + + + 16:00 + 00:15 + Why free backup software matters + https://www.sfscon.it/talks/why-free-backup-software-matters/ + + <p>It is 2024, we&#8217;re in the middle of the cloud-era.<br /> +Almost every service you desire is available in &#8220;the cloud&#8221;.<br /> +At least some of your company&#8217;s critical data is stored at some cloud provider.<br /> +Does your provider actually keep backups?<br /> +Can you live with their Recovery Time Objective (RTO)?<br /> +Do you believe they will actually meet the RTO?<br /> +Maybe you have another copy of your data?<br /> +In a format that you can actually access and read?</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Andreas Rogge + + 1 + 1 + + + 16:20 + 00:15 + Demystifying JWTs + https://www.sfscon.it/talks/demystifying-jwts/ + + <p>JSON Web Tokens (JWTs) have become a popular method for securely transmitting information between two parties. They are widely used in modern web applications for authentication and data exchange. However, their inner workings and security implications can be complex and often misunderstood by the developers.</p> +<p>In this talk, we aim to demystify JWTs by exploring their structure, how they work, and the cryptographic mechanisms that ensure their integrity and confidentiality. We will discuss the components of a JWT, including headers, payloads, and signatures, and illustrate how they combine to form a token.</p> +<p>Furthermore, we will dive into best practices for JWT usage, common pitfalls to avoid, and security considerations such as token expiration, payload size, and the choice of cryptographic algorithms. Finally, we will explore how a WebSocket connection can be secured with JWTs. Security is increasingly an overlooked necessity while utilizing a protocol that does not support authentication by default.</p> +<p>By the end of the session, attendees will have a clear understanding of how JWTs operate, their advantages over traditional session-based authentication, and how to implement them securely in their own applications.</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Dominika Bobik + + 1 + 1 + + + 16:40 + 00:15 + Containerization and micro-services in real life change security and vulnerability management. Let’s Discuss. + https://www.sfscon.it/talks/containerization-and-micro-services-in-real-life-chandge-security-and-vulnerability-management/ + + Security Configuration for Containerization and micro-services applications + Security Configuration for Containerization and micro-services applications + <p>Containerization and micro-services change the way software is deployed and used in production contexts. Re-evaluation of the criteria for secure development and above all for secure configuration of these solutions. It would probably be appropriate to implement security already during the creation of the solution itself.</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Carlo Falciola + + 1 + 1 + + + 17:00 + 00:15 + Cyber Risk Management: let’s try to manage it with open source and free software + https://www.sfscon.it/talks/cyber-risk-management-lets-try-to-manage-it-with-open-source-and-free-software/ + + Open source solutions in the cybersecurity landscape, oriented to manage processes + Open source solutions in the cybersecurity landscape, oriented to manage processes + <p>Cyber Risk Management is what you need to manage to ensure your business can operate being aware of threats, vulnerabilities, and to ensure that your business transactions and data are confidential, intact, available.</p> +<p>Let’s discuss and explore solutions and resources coming from open source and free software that can help organization to manage their cybersecurity programs, with an approach that looks at sharing knowledge, adopt tools and pay attention to the budget.</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Graziano Specchierla + + 1 + 1 + + + 17:20 + 00:15 + IT Security – Don’t let Open Source Software become the next menace + https://www.sfscon.it/talks/it-security-dont-let-open-source-software-become-the-next-menace/ + + Criminals and Govs are levereging Open Source tools, libraries and software to break into organizations. Let's stop 'em. + Criminals and Govs are levereging Open Source tools, libraries and software to break into organizations. Let's stop 'em. + <p>There is a prevalent myth that open source software is inherently secure. However, this is not true. Open source software is susceptible to vulnerabilities just like any other software. Moreover, the fact that anyone can review the code does not guarantee that the right people will do so. Open source software faces two important threats than not everybody are aware of:</p> +<p>Vulnerabilities: Open source developers need to understand and communicate the security posture of their projects to users. They must adopt robust security practices. The Log4j incident in 2021, which led to the Log4Shell vulnerability, triggered a catastrophic wave of attacks due to inadequate support for the logging framework and its critical role in company procedures.</p> +<p>Dev teams infiltration: Criminal organizations and government hacking teams are executing highly sophisticated social engineering operations to infiltrate understaffed open source projects. Their goal is to compromise development teams and insert backdoors into the software. The most recent attack on a significant project was discovered in April 2024.</p> +<p>Objective of the Talk: Inform the community about these two security scenarios and demonstrate how to effectively address them.</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Giancarlo Calzetta + + 1 + 1 + + + 17:40 + 00:15 + Biting the Apple + https://www.sfscon.it/talks/biting-the-apple/ + + MacBook Forensic with Fuji + MacBook Forensic with Fuji + <p>Description: Fuji is a free software, licensed under GPL v3, that leverages Apple Software Restore (ASR) and Rsync to create forensic images of macOS systems. It operates on logged-in computers to efficiently capture disk images while maintaining data integrity.</p> +<p>Bypassing encryption on Apple silicon processors presents significant challenges due to their advanced hardware encryption mechanisms and secure enclave protections. These processors employ complex security protocols that safeguard data at a hardware level, making unauthorized access and decryption extremely difficult. Without proper authentication or specific exploits, forensic imaging on these devices requires substantial technical expertise and often necessitates the cooperation of the device owner.</p> +<p>We&#8217;ll see how to acquire forensically MacBook data with free software</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Alessandro Farina + + 1 + 1 + + + + + 11:00 + 00:15 + Apisense – Easily monitor and track your REST-API data quality + https://www.sfscon.it/talks/apisense-easily-monitor-and-track-your-rest-api-data-quality/ + + An easy and modular solution to faulty REST-API data developed in collaboration with the Open Data Hub + An easy and modular solution to faulty REST-API data developed in collaboration with the Open Data Hub + <p>Ever had the issue of fetching invalid or faulty data from a REST-API and noticing only later, when everything broke down? Not anymore!</p> +<p>Apisense was developed in collaboration with the Open Data Hub to be an easy and modular tool to fit every need possible used to ensure and monitor the availability, quality and correctness of data provided via REST-APIs.</p> +<p>Sounds too good to be true? Tune in to find out how Apisense can help both producers and consumers of data to be aware of the quality and reliability of the data they provide/consume.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Aurelio Buonomo + Christian Zanotti + + 1 + 1 + + + 11:20 + 00:15 + MongoDB Alternatives: Is There A Need For A New Open Standard? + + + <p>This talk takes you on a journey through the history of SQL as an Open Standard, emphasizing its pivotal role in shaping the database industry. It also highlights the pressing need for a similar standard in MongoDB-compatible open databases. The presentation introduces FerretDB as a groundbreaking solution bridging MongoDB and open databases, ensuring seamless transitions without extensive application-level changes. This talk illuminates the importance of open standards and presents a path forward for enhanced compatibility and collaboration within the open-source database community.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Peter Farkas + + 1 + 1 + + + 11:40 + 00:15 + MariaDB Vector: Why your AI data should be in an RDBMS + https://www.sfscon.it/talks/mariadb-vector-why-your-ai-data-should-be-in-an-rdbms/ + + Databases and AI: How to supercharge application development with MariaDB vector + Databases and AI: How to supercharge application development with MariaDB vector + <p>As AI apps become mainstream, conventional IT wisdoms apply. AI apps must be no monoliths, but need to be logged, audited, and overall well integrated into normal IT. This means all AI data – vectors, input, output – is best stored in a normal RDBMS. Better still: In an open source database with performance, stability, and ease of use. Here is an overview of the AI opportunities, possibilities, methodologies, and features in MariaDB Server.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Kaj Arnö + + 1 + 1 + + + 12:00 + 00:15 + 1, 2, 3, Doc Kit! + https://www.sfscon.it/talks/1-2-3-doc-kit/ + + Automate the creation of software documentation + Automate the creation of software documentation + <p>Doc Kit is an open source command line tool that automates the creation of software documentation and release notes.<br /> +It can be used in conjunction with DocBook Authoring and Publishing Suite (DAPS) for quickly preparing the skeleton of professional looking software documentation.</p> +<p>Doc Kit has been designed for initialising SUSE or openSUSE documentation repositories but in a few steps it can be re-used for other projects too.<br /> +The tool consists of two parts:<br /> +1. a command-line tool called doc-kit that can download documentation boilerplate files<br /> +2. a repository of documentation boilerplate files, such as the SUSE/openSUSE book preface and entity files.</p> +<p>The presentation will show how to use Doc Kit and how to customise the provided templates for creating a brand new documentation or release notes projects.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Marina Latini + + 1 + 1 + + + 12:20 + 00:15 + codEEmoji – Making code more informative with emojis + https://www.sfscon.it/talks/codeemoji-making-code-more-informative-with-emojis/ + + <p>This presentation focuses on the open-source project codEEmoji, an IDE plugin that adds additional information to the code through emojis. The talk starts by discussing the benefits of this approach compared to other ways to present information for the developer in IDEs. It follows by presenting the plugin and its main functionalities, which go from pointing out bad practices in method and variable naming to presenting modifiers and method characteristics in their usage. Next, it is presented how the plugin structure was designed to receive new contributions. The talk finishes by presenting some challenges and future features.</p> +<p>https://github.com/codeemoji/codeemoji-plugin</p> +<p>https://plugins.jetbrains.com/plugin/22416-codeemoji</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Eduardo Guerra + + 1 + 1 + + + 12:40 + 00:15 + Can Test Driven Development be speeded up with Generative AI? + https://www.sfscon.it/talks/can-test-driven-development-be-speeded-up-with-generative-ai/ + + <p>Generative AI tools, like ChatGPT, have shown remarkable capabilities in natural language processing. It is logical to explore their potential in programming, yet the quality of generated code raises concerns. Test-Driven Development (TDD) offers a promising approach to address these concerns. In this talk, we will explore how developers can effectively collaborate with generative AI tools to enhance TDD practices, ensuring higher code quality and streamlined development processes. To this aim, we will present two interaction patterns between a human and an AI.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Moritz Mock + Barbara Russo + Jorge Melegati + + 1 + 1 + + + 13:00 + 00:15 + ScrapeGraphAI + https://www.sfscon.it/talks/scrapegraphai/ + + you only scrape once + you only scrape once + <p>ScrapeGraphAI is an innovative Python library designed to revolutionize the field of web scraping and in less than 4 months it collected over than 12k stars on Github and more than 100k downloads on pip. It allows to scrape which website you want with the knowledge of the HTML code and with the LLM models. By seamlessly integrating a natural language model within its architecture, ScrapeGraphAI enables the extraction of valuable information from websites with unparalleled flexibility and accuracy. Unlike traditional scraping tools that rely on rigid patterns or manual configuration, ScrapeGraphAI constructs a dynamic graph of operations to interrogate web pages, ensuring that relevant data is captured even in the face of changing website structures. This library&#8217;s unique fusion of language models and directed graph logic empowers developers to create sophisticated scraping workflows with minimal coding required, thereby streamlining the process of extracting valuable insights from online content. More info at this link: https://github.com/VinciGit00/Scrapegraph-ai</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Marco Vinciguerra + + 1 + 1 + + + 13:20 + 00:15 + Software Engineering Automation: From early tools to Generative AI and beyond + https://www.sfscon.it/talks/software-engineering-automation-from-early-tools-to-generative-ai-and-beyond/ + + <p>The emergence of Generative AI tools, such as ChatGPT and Copilot, promises to disrupt knowledge-based work, including software development. However, these are not the first tools to support the automation of software engineering. From the early days, various tools have been developed to remove repetitive tasks, reduce workload, and consequently increase the abstraction of software development, such as auto-completion and automatic refactoring. In this talk, we present the different levels of the automation of software engineering. We will examine how past and present tools have achieved these levels, the current capabilities of Generative AI tools, and what we can expect for the future.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Jorge Melegati + + 1 + 1 + + + 13:40 + 00:15 + The Crucial Role of Openness in Modern Software Development + https://www.sfscon.it/talks/the-crucial-role-of-openness-in-modern-software-development/ + + <p>Developers and providers of software-based products as well as other new technologies for the global market know that the winning solutions for future-proof projects share one key feature: interoperability with products from other suppliers. Achieving this interoperability means relying on open standards, open-source technologies and establishing key partnerships with other industry players.</p> +<p>In effect, openness principles are increasingly essential to software development. This talk will provide an in-depth analysis of how these concepts underpin interoperability, security and innovation in today&#8217;s technological landscape.</p> +<p>It will discuss the importance of open standards in creating seamless integration between diverse systems and applications, ensuring that technological advancements remain accessible and adaptable. The session will also cover key strategies and best practices for the adoption of open solutions that drive compatibility and competitiveness.</p> +<p>Finally, by examining Jakarta EE and the Payara Community, the talk will illustrate how these frameworks exemplify the power of open source in building innovative, scalable and future-oriented applications.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Chiara Civardi + Dominika Tasarz-Sochacka + + 1 + 1 + + + 14:00 + 00:15 + AI Tools for Jakarta EE + https://www.sfscon.it/talks/ai-tools-for-jakarta-ee/ + + <p>Discover how AI-powered tools for Jakarta EE streamline the entire development lifecycle.</p> +<p>Over the years, there have been many ways of starting a project: archetypes, project generators, visual designers, and so on. What do we get when we add a language model to the mix? A project generator that scaffolds domain-relevant Jakarta EE applications with backend and frontend functionalities in place.</p> +<p>Experience the future of enterprise application development through practical, cutting-edge demonstrations.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Gaurav Gupta + + 1 + 1 + + + 14:20 + 00:15 + How to start contributing and still have fun + https://www.sfscon.it/talks/how-to-start-contributing-and-still-have-fun/ + + <p>Are you new to Open Source and about to create your first commit, but still haven&#8217;t clicked on &#8220;New Pull Request&#8221; button?</p> +<p>There will be always something holding you back.</p> +<p>Or do you want to gain experience that can be applied at your school or work but don&#8217;t know how?</p> +<p>Open Source gives you that opportunity.</p> +<p>Let&#8217;s talk about it because we all go through it: how to find your project; fear of the first commit, the first code review, the first mistakes and everything is public; fight toxic communities &#8211; no one is perfect; when to open your code;</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Juri Solovjov + + 1 + 1 + + + 14:40 + 00:15 + Monolith Splitter + https://www.sfscon.it/talks/monolith-splitter/ + + <p>Migration from monolithic systems to microservices has earned significant interest in recent years. Software architects and developers welcome approaches, techniques, and patterns that can facilitate and automate the migration process. This talk will present Monolith Splitter, a tool that employs various approaches for splitting a monolith into a microservices architecture. This tool could be beneficial for software architects looking to migrate monolithic projects to a more scalable architecture. It uses execution traces to analyze monolithic software and suggests which classes should be grouped together in separate services according to criteria such as cohesion, modularity, and independence of evolvability. We will showcase the application of the tool to a series of open source software projects, discussing the outcomes, the benefits, and the current limitations.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Michal Skipala + Bruno Rossi + + 1 + 1 + + + 15:00 + 00:15 + The Next Level of Metrics in Microservices + https://www.sfscon.it/talks/the-next-level-of-metrics-in-microservices/ + + Going beyond measuring workload and performance + Going beyond measuring workload and performance + <p>In Microservices, measuring workload and performance are old news! They&#8217;re still important, but we can do more. In this talk, we&#8217;re navigating through new ideas on how to use metrics to tell us more than the basics about our microservices. Did you know we can evaluate our microservices in the architectural level? So we&#8217;ll have concrete data to support our decision-making. Between patterns and bad smells, we can use metrics to detect the points where they happen. Let&#8217;s explore these new possibilities to improve our experience when evolving a microservice system, towards a more robust and maintainable direction! Bonus: you&#8217;ll learn about an open-source tool to facilitate this process, of which I&#8217;m a maintainer, and you could be too!</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + João Francisco Lino Daniel + + 1 + 1 + + + 15:20 + 00:15 + What’s New in Notifications + https://www.sfscon.it/talks/whats-new-in-notifications/ + + <p>Over the past 6 months I&#8217;ve been working on improving notifications for the GNU/Linux desktop. This includes a new version of the xdg-desktop-portal notification spec, improved notification UI in GNOME Shell, and various backend components (e.g. GLib and portals).</p> +<p>In this talk I&#8217;ll explain why it was so difficult, how we untangled it, and what&#8217;s in store for the future.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Julian Sparber + + 1 + 1 + + + 15:40 + 00:15 + Sync Your Tunes, Sync Your Screen: Introducing SyncWall + https://www.sfscon.it/talks/sync-your-tunes-sync-your-screen-introducing-syncwall/ + + <p>Ever wished your computer could visually represent your playlist? SyncWall lets you turn every song into a unique visual experience, by dynamically matching your desktop wallpaper to the music currently playing on Spotify!</p> +<p>We&#8217;ll demonstrate SyncWall in action, showcasing its capabilities, and then we&#8217;ll dive deeper into the code and the process of creating the images.</p> +<p>SyncWall relies on two core components: Spotify&#8217;s API, which provides with all the necessary song information, and Python&#8217;s PIL library, which allows to easily manipulate images. Throughout the presentation, we will explore the key concepts and most useful functions of these two technologies, providing you with practical tools to integrate into your own projects.</p> +<p>Even if Syncwall is designed for GNOME, we will dive deep on how to make it work also in different desktop environments. This will cover all the steps and the challenges involved.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Giovanni Enrico Loni + + 1 + 1 + + + 16:00 + 00:15 + Nurturing OpenJDK distribution: Eclipse Temurin Success History and plan + https://www.sfscon.it/talks/nurturing-openjdk-distribution-eclipse-temurin-success-history-and-plan/ + + <p>Join me as we explore the pillars that make Eclipse Temurin one of the most widely adopted, enterprise-ready OpenJDK Runtime (over 20M monthly downloads) and also delve into the future of Adoptium and explore the goals set for 2024.<br /> +As we navigate the landscape of open source Java runtimes, Adoptium is committed to fostering vibrant, healthy projects that thrive with the support of robust communities. In this talk, we will also shine a spotlight on our dedication to delivering top-notch quality and outstanding performance, with a special focus on our AQAvit project and Security Effort.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Carmen Delgado + Ivar Grimstad + + 1 + 1 + + + 16:20 + 00:15 + Designing open source tools for Citizen Coders + https://www.sfscon.it/talks/designing-open-source-tools-for-citizen-coders/ + + Empower non-professional developers to drive innovation! + Empower non-professional developers to drive innovation! + <p>In a world where proprietary no-code platforms with vendor lock-in and opacity dominate, there is a crucial need to enhance the developer experience of open source applications, libraries, and tools.</p> +<p>We will explore how we can make open source software more accessible to citizen developers and non-professional programmers who face significant barriers to entry with modern open source tools. Showing the importance of collaborating with these developers, who are often closer to real-world problems, to improve the quality and usability of open source software.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Luca Rainone + + 1 + 1 + + + 16:40 + 00:15 + Free your Games + https://www.sfscon.it/talks/free-your-games/ + + A Minetest story + A Minetest story + <p>Videogames are part of our daily life. They allow us to unplug, to relax, to compete, simulating a reality that puts us at the centre of a new digital world. However, if we go deeper into the way videogames are made, we&#8217;ll learn that their market can be brutal and the ethics of their business models highly debatable &#8211; if not plain unbearable. Nowadays, playing a videogame usually means renouncing to our privacy and shaking hands with realities that we might not tolerate if we knew what they conceal. It was during the pandemic that a Minetest server called AES was born. Made by volunteers, AES decided to go against that: to build an online space where to play without strings attached. A place where everyone can have fun and nothing is proprietary. Four years later, this is its story.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Marco Amato + + 1 + 1 + + + 17:00 + 00:15 + How to set up an Open Source Program Office? Get insights and use cases from the OSPO Alliance + https://www.sfscon.it/talks/how-to-set-up-an-open-source-program-office-get-insights-and-use-cases-from-the-ospo-alliance/ + + <p>The Good Governance Initiative (GGI) developped by the OSPO Alliance proposes a methodological framework to assess open-source awareness, compliance and governance in any kind of organizations, helping them to structure and improve the use of FOSS towards an OSPO. This presentation will highlight the main progresses and new features achieved since last year&#8217;s introduction at SFScon, such as the translation of the GGI Good Governance in five languages, the recent OSPO testimonies presented in the OnRamp meeting series, and many more.</p> + + OW2 + OW2 + OW2 + https://www.sfscon.it/tracks/ow2-track-2024/ + + Valentina Del Prete + + 1 + 1 + + + 17:20 + 00:15 + Decentralized Search Over Decentralized Storage + https://www.sfscon.it/talks/decentralized-search-over-decentralized-storage/ + + Coupling an AI-powered search engine with a self-hosted personal cloud + Coupling an AI-powered search engine with a self-hosted personal cloud + <p>In this talk, we will explore an innovative decentralized search system developed in collaboration between the teams of On My Disk, a personal cloud storage solution, and PeARS, a self-hosted search engine. This system is designed to enable user-friendly, AI-powered, multilingual search capabilities directly over a decentralized storage environment, empowering individuals to manage and search their data across devices without relying on third-party servers. By combining cutting-edge AI with a robust, local-first approach, this solution allows users to maintain complete control over their data, ensuring secure, fast, and personalized search results in a user-controlled environment. Learn how this technology is setting a new standard for privacy and autonomy in data storage and retrieval.</p> + + OW2 + OW2 + OW2 + https://www.sfscon.it/tracks/ow2-track-2024/ + + Alexey Volkov + + 1 + 1 + + + 17:40 + 00:15 + Optimizing Cloud Compute Resources with Spare Cores + https://www.sfscon.it/talks/optimizing-cloud-compute-resources-with-spare-cores/ + + <p>Spare Cores is a vendor-independent, open-source, Python ecosystem that offers a comprehensive inventory and performance evaluation of compute resources across cloud server providers. We start all server types publicly (GHA) to run hardware inspection tools and benchmarks for different workloads. Our findings are published as open data and open-source tools to help you identify and optionally start the most cost-efficient instance type for your specific use cases (e.g. ML model training or CI/CD pipelines) in your cloud environment. Additionally, Spare Cores provides a seamless SaaS solution built on this open-source ecosystem, managing the entire lifecycle of containerized batch jobs without requiring direct vendor engagement.</p> + + OW2 + OW2 + OW2 + https://www.sfscon.it/tracks/ow2-track-2024/ + + Gergely Daroczi + + 1 + 1 + + + + + 13:00 + 00:30 + NOI Hackathon SFSCON Edition + + Side Event - Hackathon + Side Event - Hackathon + Side Event,Hackathon + 0 + 0 + + + + + 14:00 + 00:40 + Human and environmental Impacts of the actual “Artificial Intelligence” Industry, how to humanize? + + Side Event - Crane Hall BOF meetings + Side Event - Crane Hall BOF meetings + Side Event,Crane Hall BOF meetings + https://www.sfscon.it/tracks/crane-hall-bof-meetings-2024/ + + Roberto Innocenti + + 0 + 0 + + + + + + + 08:30 + 00:30 + Starting of the second day + + SFSCON + SFSCON + SFSCON + 0 + 0 + + + 13:00 + 00:30 + Closing of the SFSCON 2024 + + SFSCON + SFSCON + SFSCON + 0 + 0 + + + + + 08:30 + 00:30 + Welcome Coffee + + SFSCON + SFSCON + SFSCON + 0 + 0 + + + + + 09:20 + 01:00 + Let’s spark more Adas in our tech world! workshop + + Women* in tech + Women* in tech + <p>In this workshop we will dive into the possibilities of encouraging women*, especially girls, to thinker and to code. With tools such as the Free Software Foundation Europe’s (FSFE) illustrated book &#8220;Ada &amp; Zangemann &#8211; A Tale of Software, Skateboards, and Raspberry Ice Cream&#8221;everybody can create ways to spark the participation of women* and girls in tech.The book tells the story of Ada, a girl who loves to experiment with hardware and software. Ada realises how crucial it is to control technology and decides to stand up to the mighty inventor Zangemann.This workshop will also intend to explore ways to promote diversity and gender equity in the Free Software community and beyond. Together we will identify the challenges women* face in participating in such communities and discuss how we can create more inclusive environments, especially for the future generations.We encourage you to join us to share your experiences, ideas and perspectives, and collaborate in creating a more inclusive and diverse future in the Free Software community for all.</p> +<p><b>REGISTRATION NEEDED AT: </b><a href="https://pretix.eu/noi-digital/sfscon24/4260077/">https://pretix.eu/noi-digital/sfscon24/4260077/</a></p> +<p><em>*women, inter, trans and non-binary people.</em></p> +<p>Supported by: <strong><a href="https://fsfe.org/" target="_blank" rel="noopener">FSFE – Free Software Foundation Europe</a> </strong>&amp; <a href="https://shetechitaly.org/"><strong>SheTech</strong></a></p> + + Side Event - Women* in tech + Side Event - Women* in tech + Side Event,Women* in tech + https://www.sfscon.it/tracks/women-in-tech-track-2024/ + + Lina Ceballos + Ana Galan + + 0 + 0 + + + 10:40 + 00:55 + Knitting Our Internet workshop + + An interactive journey through the history of the Internet, and how to save it, together + An interactive journey through the history of the Internet, and how to save it, together + <p>“Knitting Our Internet” (KOI) is a workshop that explores the history of the Internet, and offers a perspective for a collective re-imagination of participatory, decentralized networks.</p> +<p>The workshop aims at questioning the very essence of today’s social media, exposing the critical limits posed by centralization, monopoly, and surveillance capitalism.</p> +<p>KOI was conceived in June 2023 by <a href="https://tommi.space">Tommaso Marmo</a>, who was looking for a simple yet critical and accurate way to introduce the concept of the Fediverse to non-experts.</p> +<p>The content and structure of the workshop matured over time, as it adapted to very diverse audiences of any ages and backgrounds. Furthermore, the experience is based on Tommaso’s academic research, mainly conducted for “<a href="https://tommi.space/csss/">Computer Sciences are Social Sciences</a>”, his bachelor’s thesis.</p> +<p><strong>Content</strong></p> +<p>During the activity, Tommaso will be using a yarn his grandmother gifted him to simulate centralized and decentralized networks, employing concrete metaphors to actively involve the participants. Every individual attending the workshop will be given a quote or an image relevant in the early and contemporary history of the Internet, and they will be asked to share it as the story unfolds.</p> +<p>Allowing them to understand the essential challenges society faces in relation to technological advancement, participants will be empowered to get involved in the Fediverse, especially understanding the importance of decentralization, Free Software, and the political role played by technical tools.</p> +<p><strong>Notes</strong></p> +<p>Given its malleable and open structure, the content of the workshop can be adapted, enriched, and edited to match the key topics of SFSCON 2024 in the best possible way.</p> +<p>The interactive parts of the workshop can be limited and a more theoretical presentation, diving in the thoughts of philosophers and computer sciences, could be added, too.</p> +<p>Supported by: <strong><a href="https://fsfe.org/" target="_blank" rel="noopener">FSFE – Free Software Foundation Europe</a></strong></p> + + Fediverse + Fediverse + Fediverse + https://www.sfscon.it/tracks/fediverse-track-2024/ + + Tommaso Marmo + + 0 + 0 + + + 11:40 + 00:15 + about:Fediverse + https://www.sfscon.it/talks/aboutfediverse/ + + An introduction to the decentralised social network + An introduction to the decentralised social network + <p>The Fediverse is a decentralised social network. But what does that mean?</p> +<p>In this talk I will give a short introduction to the Fediverse of 2024 and how it started to evolve in 2008. I will explain the basic concepts of ActivityPub as the protocol of the Fediverse and how the use of this open protocol has enabled a diverse group of Free Software projects to build a social network of (micro) blogging, video streaming, podcasting and event organising. A network where users can share and interact with each other regardless of the platform they use. What will be possible in the Fediverse of 2024? And how can you get started today?</p> +<p>This talk does not require any technical knowledge of the Fediverse. However, you should know what an email is.</p> + + Fediverse + Fediverse + Fediverse + https://www.sfscon.it/tracks/fediverse-track-2024/ + + Tobias Diekershoff + + 1 + 1 + + + 12:00 + 00:15 + How to build a website for the IndieWeb + https://www.sfscon.it/talks/how-to-build-a-website-for-the-indieweb/ + + <p>Have you ever heard of terms like POSSE, syndication, or webmention?<br /> +What about protocols like Web Sign-In or Micropub?<br /> +These terms are all connected to the IndieWeb, a community of websites built on open standards and open source technologies.</p> +<p>In today&#8217;s digital age, our online content and identities are more important than ever. Relying on random companies and social networks to manage them isn&#8217;t ideal. Instead, we should take control of our online presence by building our own website for the IndieWeb.</p> +<p>In this talk, you&#8217;ll learn how to:</p> +<p>1. Publish content on your website via a Micropub server.<br /> +2. Syndicate that content elsewhere (i.e., republish it on another website).<br /> +3. Gather comments from social networks and display them on your website.</p> +<p>We will achieve all of this using a static website and a few open-source tools.</p> + + Fediverse + Fediverse + Fediverse + https://www.sfscon.it/tracks/fediverse-track-2024/ + + Giacomo Debidda + + 1 + 1 + + + + + 09:20 + 00:15 + ARM Linux Laptops for Developers Status Report + https://www.sfscon.it/talks/arm-linux-laptops-for-developers-status-report/ + + <p>Intrigued by 22+ hours of battery life with comparable performance to current Intel / AMD systems? Starting from June this year a bunch of new ARM based laptops have been launched. All major laptop vendors launched devices, with over 33 to choose from at the time of this writing.</p> +<p>While ARM based laptops have been available for years, they mostly have been targeted as cheap entry level ChromeBooks or MacBooks designed for MacOS only. Luckily with this new wave of ARM based laptops there should be something for everybody.</p> +<p>The core question is how well they behave under Linux. Being designed for<br /> +Windows-on-ARM there is a risk Linux support is rudimentary at best. Stefan set out to test this and is reporting back here. Does a boot with UEFI work out of the box? Are all hardware features supported? Is the firmware for various drivers available? How is the performance?</p> +<p>And the most important question: how does it stack up against an Intel based laptop from the same timeframe as daily driver for software development?</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Stefan Schmidt + + 1 + 1 + + + 09:40 + 00:35 + Building a no-drama community + https://www.sfscon.it/talks/building-a-no-drama-community/ + + <p>In this talk, we&#8217;ll focus on how the AlmaLinux project has chosen to foster a positive, drama-free community in the Linux ecosystem.</p> +<p>&#8212;</p> +<p>Whether you&#8217;re starting a new community or wrangling an existing one, it can be tempting to fall into the trap of bonding over shared enemies to see short-term, high-numbers growth. But, benny has spent the last 10 years building drama-free communities with a different kind of success.</p> +<p>While many open-source projects rally members through shared frustrations or negativity, AlmaLinux took the more challenging path of uniting people through thoughtful dialogue and focusing on helping each other. By prioritizing respect, collaboration, and inclusivity, the AlmaLinux community grew healthier and stronger without the need for battle cries or infusing drama. Learn how this approach not only built a stable and thriving community around AlmaLinux, but is also setting a new standard for open-source communities &#8211; and proving that progress doesn’t have to be divisive.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + benny Vasquez + + 1 + 1 + + + 10:20 + 02:40 + Voices of Free Software: connect, learn, inspire! + + FSFE Italian Community Meeting + FSFE Italian Community Meeting + <p>You are invited to join the volunteers, supporters, and friends of the FSFE Italian Community!</p> +<p>Join us to learn from one another, find inspiration, and tackle future challenges together in the realm of Free Software. As a volunteer, you have a platform to share your story, discuss the most pressing topics surrounding Free Software, and connect with fellow enthusiasts. We encourage you to collaborate with the community on common initiatives and work together to forge new paths forward.</p> +<p>This is an <strong>hybrid event</strong>. You can join us either online or in person.</p> +<p><b>REGISTRATION NEEDED AT: </b><a href="https://pretix.eu/noi-digital/sfscon24/4259648/">https://pretix.eu/noi-digital/sfscon24/4259648/</a></p> +<p>Please note, the official language of the FSFE Italian Community is Italian, hence the event will be held in <strong>Italian</strong>.</p> +<p>Supported by: <strong><a href="https://fsfe.org/" target="_blank" rel="noopener">FSFE – Free Software Foundation Europe</a></strong></p> + + Side Event - FSFE - Italian community meeting + Side Event - FSFE - Italian community meeting + Side Event,FSFE,Italian community meeting + https://www.sfscon.it/tracks/fsfe-italian-community-meeting-2024/ + + Marta Andreoli + + 0 + 0 + + + + + 09:30 + 02:30 + Scratch Stories with Ada & Zangemann + + Side Event - MiniNOI x SFSCON + Side Event - MiniNOI x SFSCON + Side Event,MiniNOI x SFSCON + 0 + 0 + + + + + 16:30 + 00:30 + Winner proclamation and closing of the NOI Hackathon SFSCON Edition + + Side Event - Hackathon + Side Event - Hackathon + Side Event,Hackathon + 0 + 0 + + + + diff --git a/src/tests/assets/sfscon2024.1st_session_moved_for_5_minutes.xml b/src/tests/assets/sfscon2024.1st_session_moved_for_5_minutes.xml new file mode 100644 index 0000000..780e091 --- /dev/null +++ b/src/tests/assets/sfscon2024.1st_session_moved_for_5_minutes.xml @@ -0,0 +1,2248 @@ + + + + sfscon-2024 + SFSCON 2024 + + + Ethics, Policy, Legal & Economics + Data Spaces + Open Hardware + Developers + Community Building + Cybersecurity + Fediverse + DevOps + Side Event - Hackathon + Side Event - School Reading + Side Event - MiniNOI x SFSCON + OW2 + Side Event - Women* in tech + Side Event - Crane Hall BOF meetings + Side Event - FSFE - Italian community meeting + + + + + 08:30 + 00:30 + Check-in SFSCON 2024 + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + 0 + 0 + + + + + 09:02 + 00:15 + Opening SFSCON 2024 + https://www.sfscon.it/talks/opening-sfscon-2024/ + + <p>Opening SFSCON 2024</p> + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Philipp Achammer + + 1 + 1 + + + 09:15 + 00:05 + Greetings from NOI + https://www.sfscon.it/talks/greetings-from-noi/ + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Vincent Mauroit + + 1 + 1 + + + 09:20 + 00:05 + Greetings from Gruppo FOS + https://www.sfscon.it/talks/greetings-from-gruppo-fos/ + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Giorgio Allasia + + 1 + 1 + + + 09:25 + 00:05 + Greetings from Telmekom + https://www.sfscon.it/talks/greetings-from-telmekom/ + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Sergio Vemic + + 1 + 1 + + + 09:30 + 00:30 + Keynote speaker &#8211; coming soon + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Emily Omier + + 0 + 0 + + + 10:00 + 00:15 + European SFS Award 2024 + + Free Software Foundation Europe (FSFE) and Linux User Group Bozen-Bolzano-Bulsan assign the “European SFS Award” + Free Software Foundation Europe (FSFE) and Linux User Group Bozen-Bolzano-Bulsan assign the “European SFS Award” + <p>The award is given to a person who contributed to the introduction of the culture of Free Software.</p> + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + 0 + 0 + + + 10:15 + 00:15 + SFS Award 2024 + + Linux User Group Bozen-Bolzano-Bulsan assigns the “South Tyrol Free Software Award” + Linux User Group Bozen-Bolzano-Bulsan assigns the “South Tyrol Free Software Award” + <p>Every year the Linux User Group Bozen-Bolzano-Bulsan assigns the &#8220;South Tyrol Free Software Award&#8221; (SFS Award). The award is given to a person who contributed to the introduction of the culture of Free Software in the Province of Bolzano.</p> + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + 0 + 0 + + + 10:30 + 00:10 + AlmaLinux in brief + https://www.sfscon.it/talks/almalinux-in-brief/ + + <p>In this quick chat, benny will summarize 20 years of context and 4 years of growth in just 10 minutes by highlighting the major points that brought AlmaLinux to the world, how the project has adjusted for each challenge along the way, and what they&#8217;re planning next.</p> + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + benny Vasquez + + 1 + 1 + + + 10:40 + 00:20 + Open Source in EU policy + https://www.sfscon.it/talks/open-source-in-eu-policy/ + + Making laws with the Open Source community in mind + Making laws with the Open Source community in mind + <p>Over the past three years, the Open Source Community has had to mobilise to fix flaws in European Union policy initiatives, like the Cyber Resilience Act, Product Liability Directive, and the AI act, all of which could have negatively impacted Open Source developers.</p> +<p>This talk explores why this mobilisation was necessary, how the Community is preparing for future legislation, and how the Open Source community has changed the way the EU makes and implements laws.</p> +<p>It will then delve into the particular case of the AI act and its Open Source AI exemption. It will cover how the exemption came about, why it has prompted a wave of AI open-washing, and what can be done to fix it.</p> + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Jordan Maris + + 1 + 1 + + + 11:01 + 00:15 + Let’s all get over the CRA! + https://www.sfscon.it/talks/lets-all-get-over-the-cra/ + + how I stopped worrying about the consequences of the CRA for Open Source innovation in Europe and moved to something else + how I stopped worrying about the consequences of the CRA for Open Source innovation in Europe and moved to something else + <p>The adoption of the CRA (Cyber Resilience Act) has caused some real anxiety among the FOSS ecosystem. Even in its amended form, many questions remain opened and debated, and more to the point, a lot of uncertainty still surrounds it, not just at the level of its general architecture but also at the implementation level.<br /> +It is perhaps fair to mention that the CRA itself does not exist in a void and is building on already existing regulations and ideas. However, it should be explained how the CRA itself was not born inside the institutions of the European Union but is an almost pure product of governmental cyber security circles and agencies. Because of that, the digital ecosystem at large is at pain understanding some of its logic. This talk will start with what we know and what we can infer from the CRA, and how it fits within the general regulatory framework of the European Union. We will thus clarify the following points:</p> +<p>&#8211; what does the CRA mean in terms of software security assessment and certification &#8211; and how that plays a key role in understanding what the CRA is and what it is not<br /> +&#8211; CRA within the European regulatory framework<br /> +&#8211; CRA implementation: the bad, the ugly, and the unknown</p> +<p>We will then discuss what the concerns are for the FOSS communities. Most notably:</p> +<p>&#8211; barriers of entry for Free Software companies, esp. the small and medium ones<br /> +&#8211; legal inability to develop Free and Open Source Software<br /> +&#8211; what will Free and Open Source software foundations do in edge cases and what are they expected to bring in terms of guidance to the companies contributing to their projects</p> +<p>It will then discuss how we can best prepare for it, and make some suggestions on how to solve FOSS specific challenges related to CRA. In particular the talk will explore the following possibilities:</p> +<p>&#8211; evolving the role or cross project security teams<br /> +-promoting best practices in development (CI CD, code auditability) turning the CRA against proprietary software practices<br /> +&#8211; Pooling security audits<br /> +&#8211; Better release management</p> +<p>Last but not least, this talk will discuss the economics behind the CRA and why this may not end up being less of a problem than we think.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Charles-H. Schulz + + 1 + 1 + + + 11:25 + 00:15 + On the ethical challenges raised by robots powered by Artificial Intelligence + https://www.sfscon.it/talks/on-the-ethical-challenges-raised-by-robots-powered-by-artificial-intelligence/ + + <p>The integration of generative AI into robot systems has the potential to boost several industries by enabling robots to understand their environments, create courses of action, and autonomously react to complex situations. However, the adoption of generative AI techniques brings about profound ethical concerns that need to be addressed to ensure the responsible development and deployment of such technologies. In this talk, I will explore the multifaceted ethical challenges associated with generative AI-powered robots, focusing on issues such as robot autonomy, decision-making, accountability of robot actions, and their impact on humans and society as a whole.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Fulvio Mastrogiovanni + + 1 + 1 + + + 11:40 + 00:15 + CRA & PLD Liability rules and Software Freedom + https://www.sfscon.it/talks/cra-pld-liability-rules-and-software-freedom/ + + <p>With CRA and PLD liability rules for software have been introduced with a broad exception for Free Software. After long and intense debates individual developers and non for profit work are safeguarded. I will shed light on those new rules.</p> +<p>Already at an early stage, the FSFE argued in a hearing in the EU Parliament, for the inclusion of clear and precise exemptions for Free Software development in the legislation and for liability to be transferred to those who significantly financially benefit from it on the market.</p> +<p>In the future, individual developers and non-profit development of Free Software will be exempt from the CRA and the PLD. Nevertheless, the wording in both the regulations are different and a standardisation processes and guidelines are still being drawn up.</p> +<p>In this talk I will discuss what this new regulation means for software freedom in future and what happens at this stage and how to be involved in implementation.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Alexander Sander + + 1 + 1 + + + 12:00 + 00:15 + Cyber Resilience Act, already too late to comply? + https://www.sfscon.it/talks/cyber-resilience-act-already-too-late-to-comply/ + + Compliance is dead, long live compliance + Compliance is dead, long live compliance + <p>If you are taking your decisions now for complying with all the requirements of CRA, you might be too late to find adequate external resources to comply , although &#8212; at submission time &#8212; it is not yet in force. So what are you gonna do? Being open source would help only to a certain point, if you monetize the software. Some guidance tips for Open Source projects and businesses.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Carlo Piana + Alberto Pianon + + 1 + 1 + + + 12:20 + 00:15 + AI no-code for marketing + https://www.sfscon.it/talks/ai-no-code-for-marketing/ + + How artificial intelligence can really help create a marketing strategy + How artificial intelligence can really help create a marketing strategy + <p>The process of creating a Marketing strategy and the subsequent steps of drafting editorial calendars, selecting channels, designing, and publishing advertising campaigns, is a complex journey.<br /> +Marketers have always dedicated a lot of time and resources to creating the most effective strategy for a brand’s success and translating it into concrete actions.<br /> +Today, is it possible to use artificial intelligence as a tangible support for the development of the strategic, technical, and operational assets necessary to create a successful marketing plan?<br /> +Let’s discover ATENA together, a methodology and an easy process through which you can simplify, accelerate, and enhance the quality of your marketing strategy, thanks to the practical support of AI.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Alessandro Agnati + + 1 + 1 + + + 12:40 + 00:15 + We went to court against Apple &#8211; a case for Software Freedom + https://www.sfscon.it/talks/for-the-right-of-general-purpose-computers/ + + Breaking lock-ins over devices with Free Software + Breaking lock-ins over devices with Free Software + <p>Our smartphones, tablets, laptops, and other connected devices are general purpose computers. That means we can potentially run any software we want to make full use of the hardware. This potential is fostered by Free Software.</p> +<p>However, device manufacturers, vendors, and internet platforms have been restricting software freedom by exercising their monopolistic control over end-user equipment. This power is used over key features and components of devices such as operating systems, browsers, and app stores.</p> +<p>Basic freedoms such as installing and uninstalling software are being unfairly limited by these companies, commonly referred to as &#8220;gatekeepers&#8221;, because of their monopolistic control over devices.</p> +<p>As a concrete example, this talk will present the policy and legal work of FSFE in denouncing the detrimental commercial practices of a worldwide known gatekeeper: Apple.</p> +<p>Apple&#8217;s monopolistic power over its devices is detrimental to Free Software and a high risk for the right of general purpose computers. The company&#8217;s &#8220;notarization&#8221;, its barriers to software freedom and lack of interoperability are highly negative to Free Software.</p> +<p>In conclusion, this talk will present Device Neutrality as a policy solution to enable end-users to bypass gatekeepers in order to run Free Software independently of the control exercised by hardware manufacturers, vendors, and platforms. Device Neutrality can enable end&#8211;users to regain control over their devices.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Lucas Lasota + + 1 + 1 + + + 13:00 + 00:15 + 25 Years of Copyleft Enforcement: The Road Ahead for Defending Software Rights + https://www.sfscon.it/talks/25-years-of-copyleft-enforcement-the-road-ahead-for-defending-software-rights/ + + <p>In 1999, I worked my first GPL enforcement matter: a large storage had made proprietary modifications to GNU tar and failed to release the complete, corresponding source code to its customers. In early 2000, I did my first “CCS check” (complete, corresponding sourcecode check) — wherein one attempts to build the “CCS candidate” provided by the vendor to investigate whether the CCS candidate is actually complete, and whether it corresponds to the binaries that were distributed.</p> +<p>In those days, violations of copyleft licenses were rare, and once uncovered, companies eventually corrected their behavior. Yet, even then, it took years of work to convince the company to comply. And often, by the time compliance was achieved, a new generation of the product was released.</p> +<p>25 years later, we face the same problems with nearly every vendor.<br /> +Almost every product on the market today contains Linux, BusyBox, the GNU C Library, GNU Bash, and dozen other packages licensed under the GPL and/or LGPL. Almost none of these companies, even if an offer for source code is made, provide CCS.</p> +<p>This talk will look both to the past and future as we investigate software rights and freedoms of the average consumer, and how we reached this difficult situation. Attendees can learn the history of copyleft and its enforcement, and leave with an understanding of how much work remains and what individuals can do to make a real impact on the rights of users under copyleft.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Bradley Kuhn + + 1 + 1 + + + 13:20 + 00:15 + SPDXv3: Advancing Transparency in Software + https://www.sfscon.it/talks/spdxv3-advancing-transparency-in-software/ + + A newly released standard for complete information + A newly released standard for complete information + <p>SBOMs are a crucial tool for understanding the composition of software, which is particularly important in the context of managing security risks and licensing compliance. Recent regulatory efforts from, among others, the US and the EU, explicitly move towards requiring SBOM for each software delivery.<br /> +SPDX (System Package Data Exchange) is a freely available ISO standard that provides a set of specifications for communicating SBOM information. It offers a common format for companies and organizations to share important data accurately and efficiently.</p> +<p>This presentation will delve into the details of the newly released version of SPDX, providing a comprehensive understanding of their importance in the software industry.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Alexios Zavras + + 1 + 1 + + + 13:40 + 00:15 + (re)classifying FOSS licenses + https://www.sfscon.it/talks/reclassifying-foss-licenses/ + + New strategy for classifying licenses in a better way + New strategy for classifying licenses in a better way + <p>There are many efforts trying to classify licenses, for different use cases such as checking compatibility or for complying with the license terms. Most of these efforts seem to, explicitly or implicitly, have a certain use case in mind.</p> +<p>This project sets out to:<br /> +Consider provisioning case &#8211; how is the software provided to your user (e.g. binary distribution, SaaS, Web UI)<br /> +Consider use case &#8211; how is the software used (e.g. compiler, library)<br /> +Trust model &#8211; why should you trust the contributor of a classification or you should be able to exclude a contributor’s work etc<br /> +Identify and generalize FOSS license clauses<br /> +Identify and generalize when a clauses is triggered<br /> +Determine how clauses are compatible with each other (a license clause matrix)<br /> +Identify the clauses and triggers for each license</p> +<p>Keeping track of how 100 licenses are compatible with each other will result in a matrix with 10 000 (100 x 100) values. This is hard to maintain. Extending to 200 licenses requires 40 000 values. By instead looking at the license clauses we will end up with a much smaller problem, assuming we identify 20-30 of them, which will result in a matrix of 400-900 values. This is big, but maintainable. Adding a new license will not increase the size of the (license clause) matrix, which means that our approach scales much better. From the license definitions and license clause matrix we can compile a license compatibility matrix (for fast compatibility lookup).</p> +<p>This project sets out to provide to users:<br /> +A license obligation checklist for each provisioning case &#8211; for making compliance checks easy<br /> +A license compatibility matrix for each provisioning case &#8211; for fast compatibility lookup</p> +<p>All data and source code will be released under FOSS licenses.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Henrik Sandklef + + 1 + 1 + + + 14:00 + 00:15 + Lessons from the EU&#8217;s Next Generation Internet Initiatives + https://www.sfscon.it/talks/lessons-from-the-eus-next-generation-internet-initiatives/ + + What We've Learnt From Looking At 500 Free Software Projects + What We've Learnt From Looking At 500 Free Software Projects + <p>The FSFE is a consortium member of the EU&#8217;s Next Generation Internet initiatives (https://fsfe.org/activities/ngi/ngi.en.html). As part of our work there over the past 6 years, we have looked at hundreds of participating Free Software projects, to assist them with their legal and licensing questions, as well as to help them become REUSE compliant.</p> +<p>This talk will speak about some simple trends in Free Software legal and licensing that we&#8217;ve observed over the years in independent Free Software projects and their developers, and how these affect aspects of the Free Software ecosystem.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Gabriel Ku Wei Bin + + 1 + 1 + + + 14:20 + 00:15 + The ZOOOM project: final results and future outlooks + https://www.sfscon.it/talks/the-zooom-project-final-results-and-future-outlooks/ + + <p>The ZOOOM project, concluding in Sept 2024, aimed to raise awareness about the role of open licenses (open source software, open hardware, and open data &#8211; 3Os) in intellectual property valorization. In this talk, we&#8217;ll summarize key results, share recommendations for businesses leveraging 3Os, and demonstrate tools developed to aid knowledge generators and supporting organizations in navigating the legal and business implications of 3Os. Additionally, we&#8217;ll discuss the future of ZOOOM and its potential impact on the industry and research.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Elisa Morganti + + 1 + 1 + + + 14:40 + 00:15 + AI Law & Ethics: developing responsible AI systems + https://www.sfscon.it/talks/ai-law-ethics-developing-responsible-ai-systems/ + + <p>The aim of this talk is to explore AI law and ethics in developing responsible AI systems. It covers the forthcoming AI Act and EU regulations, focusing on accountability, risk management, and privacy-by-design. Through use cases, it shows how developers can ensure AI transparency, fairness, and compliance, balancing innovation with ethics. Attendees will gain insights for creating sustainable, ethical AI solutions.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Federico Sartore + Francesco Vadori + + 1 + 1 + + + 15:00 + 00:15 + Impact and Innovation: The Crucial Role of OSPOs in Shaping a More Sustainable Capitalism + https://www.sfscon.it/talks/impact-and-innovation-the-crucial-role-of-ospos-in-shaping-a-more-sustainable-capitalism/ + + <p>In an era where sustainability and responsible innovation are not just valued but expected, Open Source Program Offices (OSPOs) stand at the forefront of a transformative wave that merges open innovation with sustainable business practices. This session explores the pivotal role of OSPOs in fostering open innovation environments that not only drive technological advancement but also align with the principles of impact-oriented capitalism</p> +<p>We will delve into how OSPOs can leverage open source ecosystems to catalyze change within their organizations, promoting not just compliance and security but also environmental, social, and governance (ESG) goals. Through case studies and practical insights, attendees will learn how integrating OSPO strategies with corporate sustainability objectives can create a powerful synergy that propels companies toward a more ethical and profitable future.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Stefano Pampaloni + + 1 + 1 + + + 15:20 + 00:15 + From Personalized to Programmed + https://www.sfscon.it/talks/from-personalized-to-programmed/ + + The Dilemma of AI Customization + The Dilemma of AI Customization + <p>When considering the core values of mass customization, such as individual expression, fun in co-creating, and creativity, AI may introduce disadvantages, potentially leading to the homogenization of experiences. This lightning talk aims to explore the potential risks and drawbacks of utilizing AI in mass customization, highlighting the tension between leveraging technology for customization and preserving the unique human elements that form the foundation of personalized experiences. Could the reliance on algorithms diminish the consumer’s role in the creative process? If so, it might challenge the essence of what makes mass customization truly unique and innovative.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Thomas Aichner + + 1 + 1 + + + 15:40 + 00:15 + Fostering Innovation in IT Businesses through Open Source Software Involvement + https://www.sfscon.it/talks/fostering-innovation-in-it-businesses-through-open-source-software-involvement/ + + <p>All IT companies depend on free and open source software to some extent. Once they reach a certain size, they spontaneously become supporters of the projects on which they base their business. This happens because of first order consequences: my business depends on it, if I help it strive, my business will benefit.<br /> +In this talk, we will address the second-order consequences of software engineers interacting with open source projects, and show why dedicating internal resources to this activity is an effective strategy for enabling the discovery of new or modified (software) entities, which is the prerequisite for innovation.<br /> +The benefits are visible for companies of any size, even if their business does not depend on a specific project to which they could contribute: compelling arguments will be presented to motivate business owners to encourage their IT staff to engage in open source activities (and to developers to convince their bosses).</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Daniele Gobbetti + + 1 + 1 + + + 16:00 + 00:15 + Tackling Openwashers, Freeloaders and Cuckoos + https://www.sfscon.it/talks/tackling-openwashers-freeloaders-and-cuckoos/ + + How to safeguard the Free Software market against unfair competition + How to safeguard the Free Software market against unfair competition + <p>Companies that produce and sell Free Software face a problem: some competitors use unethical and destructive means to compete, making their products cheaper and winning bids. This kind of market behaviour is increasingly becoming a problem for Free Software producers.</p> +<p>Destructive practices include marketing proprietary software under the guise of being Free Software, whether by using free/open wording, by introducing new licences that falsely appear to be free, or by imposing additional barriers that make it more difficult to use the freedoms offered by Free Software.</p> +<p>Other competitors sell Free Software products without contributing to their development and maintenance, profiting from the work of others but giving nothing back to the community. This allows them to offer low prices while raising the costs of maintenance for the original manufacturers. For some players, there seems to be no limit to their creativity when it comes to undercutting competitors and winning bids.</p> +<p>The Free Software Foundation Europe has been analysing these and other problematic market practices over the last few years. In this talk we will take a closer look at them and show why they harm Free Software manufacturers and the Free Software ecosystem. We will then discuss ways to limit the success of such practices.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Johannes Näder + + 1 + 1 + + + 16:20 + 00:15 + Web Accessibility is actually well-forgotten old + https://www.sfscon.it/talks/web-accessibility-is-actually-well-forgotten-old/ + + <p>Trends are cyclical, even in the tech world. A few years ago, everyone was talking about D&amp;I in the workplace. This season, web accessibility absolutely occupies the first lines of code. How is it shown? Let&#8217;s talk about it &#8211; many do not understand how to implement it in their project.</p> +<p>First, relax. This is a really complex topic that requires not only a well-created website, but also communication with real users who cannot fully use the Internet, for example, without a screen reader.</p> +<p>A checklist that will convince you to try implementing WA into your application:</p> +<p>◦ What can be adapted for WA?<br /> +◦ How is WA testing done?<br /> +◦ How to use AI in WA?</p> +<p>If we haven&#8217;t convinced you, then look at WA from the point of view of strengthening your personal brand in the market.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Sofia Etingof + Juri Solovjov + + 1 + 1 + + + 16:40 + 00:15 + LibreOffice as JavaScript idiomatic WebWidget + Library + https://www.sfscon.it/talks/libreoffice-as-javascript-idiomatic-webwidget-library/ + + Making LibreOffice a native part of the web, using FOSS for highly customizable office document handling in the browser, based on WASM. + Making LibreOffice a native part of the web, using FOSS for highly customizable office document handling in the browser, based on WASM. + <p>LibreOffice can be highly integrated into desktop and server applications and we wanted to make this also possible for web apps. Running fully client side with Web Assembly, LibreOffice can now be used and customized by a JavaScript idiomatic API, becoming an easy usable component for web development. With this Free Software opens the door to a completely different approach for bringing office document handling into the browser, then from what&#8217;s known from Google Docs and Co.. Use cases may be the integration of widgets with rich text documents, including classic desktop macros, into browser based applications or enabling JavaScript to interact live with values in spreadsheets. But LibreOffice can also work as background WASM library, converting documents from and to all supported formats like ODF (ODT, &#8230;), MS formats (DocX, XlsX, Doc, &#8230;), PDF or HTML, while applying custom conversion filters for things like macro sanitization.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Moritz Duge + + 1 + 1 + + + 17:00 + 00:15 + Using software tools and AI to audit e-commerce food regulations + https://www.sfscon.it/talks/using-software-tools-and-ai-to-audit-e-commerce-food-regulations/ + + <p>Selling food products on a website or e-commerce platform in Italy is subject to the Food Information of Consumers (FIC) regulations. These regulations dictate mandatory information that must be communicated on the product page, with fines for non-compliance. In this talk, we will cover the key guidelines and legal requirements, and demonstrate how we can use software tools and artificial intelligence to check large quantities of product listings for discrepancies. Join us to learn how to streamline the process of verifying food information and enhance consumer trust.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Davide Montesin + + 1 + 1 + + + 17:20 + 00:15 + Tag manager + https://www.sfscon.it/talks/tag-manager/ + + <p>Presentation of our tool, which is an free alternative to Google Tag Manager and also helps manage cookie banners.</p> +<p>Features:<br /> +&#8211; code injector<br /> +&#8211; code templating<br /> +&#8211; cookie banner manger</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Sandro Antonucci + + 1 + 1 + + + 17:40 + 00:15 + State of Microsoft Windows Refund (2024) + https://www.sfscon.it/talks/state-of-microsoft-windows-refund-2024/ + + Getting a Refund of your Microsoft Windows License - present and future + Getting a Refund of your Microsoft Windows License - present and future + <p>If you are a lover of the Free Software movement you probably already tried something else than Microsoft Windows on a computer.</p> +<p>What you may not know, is that computer resellers usually charge end-users with the Fee of the Microsoft Windows License, even before you accept the Microsoft Terms of Services, and even if you completely want to uninstall Windows from your computer.</p> +<p>This is a critical Tech Neutrality issue that fuels non-European proprietary software houses. What to do?</p> +<p>&#8211; heritage of Luca Bonissi against Big Tech(s)<br /> +&#8211; current status and problems<br /> +&#8211; opportunities in Europe, and partnership between Free Software Foundation Europe and Italian Linux Society.</p> +<p>Thanksgiving to community members who tried the procedure, and simplifying that procedure.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Valerio Bozzolan + + 1 + 1 + + + + + 10:30 + 00:30 + Ada & Zangemann + + Side Event - School Reading + Side Event - School Reading + Side Event,School Reading + 0 + 0 + + + + + 11:00 + 00:15 + Open Access for Museum Collections and Research + https://www.sfscon.it/talks/open-access-for-museum-collections-and-research/ + + <p>The digital era has revolutionised the way we access information and interact with it. Museums, as custodians of cultural and historical artefacts, can benefit substantially from this transformation. Open Access and FOSS can greatly increase the potential of museums for public outreach: enhance their educational impact and inspire new forms of cultural engagement and knowledge discovery. For example, by digitising collections and enabling Open Access for diverse audiences, accessibility barriers are eliminated and thousands of hidden treasures become available to both researchers and the wider public. Additionally, innovative data visualisations via FOSS platforms can reveal compelling insights into object collections and the research associated with them; Open Access can thus make complex research accessible and engaging to a broader audience. Through such practices, museums can democratise their activities and enrich the visitor experience. The process is not without obstacles; common challenges museums face in adopting Open Access policies are copyright issues, data privacy, and resource limitations.</p> +<p>The presentation will discuss the aforementioned opportunities and issues currently emerging in the museum sector. The talk will be illustrated with examples from the Deutsches Museum in Munich, the world’s largest museum of science and technology.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Artemis Yagou + + 1 + 1 + + + 11:20 + 00:15 + Journeying through Data Spaces – New Path to Interoperability? + https://www.sfscon.it/talks/journeying-through-data-spaces-new-path-to-interoperability/ + + <p>Data spaces play a pivotal role in advancing digitalisation and interoperability within and across different business domains, both on a national level and cross-borders. However, it&#8217;s not a new concept since its roots date back to 2005. The definition has evolved over the years and today it covers all four layers of interoperability defined by the European Interoperability Framework (EIF).</p> +<p>Today, the term data space has several different definitions depending on whom you ask. Also, multiple international initiatives are working on data spaces to create common governance models, specifications, reference implementations, etc. The aim of this talk is to discuss the data space concept, different actors working on data spaces and their roles and responsibilities, and available specifications and building blocks.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Petteri Kivimäki + + 1 + 1 + + + 11:40 + 00:15 + DOOF – an Open Source Orchestration Framework for Decentralized Consent Management + https://www.sfscon.it/talks/doof-an-open-source-orchestration-framework-for-decentralized-consent-management/ + + <p>DOOF stands for Data Ownership Orchestration Framework. It is a framework developed for NGI Trustchain Project within a broader Next Generation Internet scheme of the EU in order to address a lack of decentralization in consent management regarding users’ sharing of their data. The aim of DOOF is to revolutionize personal data governance and normalise the deployment of consent management and privacy enhancing technologies. It uniquely enables individuals to control their rights over data sharing, fostering greater trust and regulatory compliance, essential for building a resilient and transparent data economy.<br /> +DOOF targets the gap in current centralized consent management, where GDPR and Data Act demand seamless data exchange and regulatory compliance. Yet the sharing and consent management regarding users’ data is centralized &#8211; a responsibility of the data intermediary &#8211; which comes with great costs and liabilities.<br /> +With DOOF, Ecosteer aims to separate and decouple the layer of physical data transferring from the layer of consent management. DOOF offers companies a framework that allows them to easily adopt Privacy Enhancing Technologies (PETs) for the actual sharing of data and enforcement of users’ decisions.<br /> +The framework consists of a set of SDKs, libraries and a Smart Contract for decentralised consent management. The main component of the framework is a worker pipeline, consisting of extensible, plug-in processors. This pipeline contributes to the low-code movement, offering a framework that can be easily adapted to different business needs. Companies can easily build verticals on this existing framework by just extending some of its functionalities.<br /> +This talk will focus on the concept of decentralized consent management as well as pipeline-based orchestration framework, outlining the process of creating a novel, re-usable and extensible open-source project.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Georgiana Bud + + 1 + 1 + + + 12:00 + 00:15 + Accelerating territory&#8217;s development through Open Data + https://www.sfscon.it/talks/accelerating-territorys-development-through-open-data/ + + Open Data Hub and south tyrolean examples + Open Data Hub and south tyrolean examples + <p>In recent years, Open Data has revolutionized the way governments, companies and individuals access and use information. The openness of public and private data represents a milestone on the path towards a more transparent, participatory and competitive society.<br /> +Open Data represent a resource for society and businesses and contribute to the development of a territory. This added value manifests itself in various forms, including transparency and democratic participation, technological innovation, economic development and improved services.<br /> +The talk will focus on specific case studies from the Open Data Hub in the Autonomous Province of Bolzano, a region which has shown a strong commitment to the adoption and promotion of Open Data.<br /> +Through the analysis of these cases, the aim is to demonstrate how the initiatives based on Open Data have led to concrete and tangible results, offering useful and applicable insights also in extra-regional contexts.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Luisa Marangon + + 1 + 1 + + + 12:20 + 00:15 + Sensor Things API QGIS core provider + https://www.sfscon.it/talks/sensor-things-api-qgis-core-provider/ + + <p>Sensor Things API (STA, in short), is an OGC specification for storing and retrieving (timeseries of) Sensor Observations.</p> +<p>FROST-Server, developed by Fraunhofer IOSB, is one of the most consolidated implementations of STA with a very detailed documentation and a lot of background information. The implementation includes a REST endpoint to insert, modify and retrieve STA entities with a query language based on OASIS Odata URL patterns and query options.</p> +<p>A QGIS experimental plugin, developed by Deda Next srl in 2022 and implemented in python within the EU project Air-Break, is currently available to connect to STA-compliant endpoints and retrieve sensor data (e.g. European Air Quality data from this endpoint). The plugin has an embedded data provider which is currently designed to retrieve sensors&#8217; locations as geometrical features and then request the time series of observations for specific locations.</p> +<p>However, in order to offer support to a wider range of use cases and more complex queries on STA model entities, Faunalia and DedaNext (funded by BRGM) started to plan for a dedicated STA data provider for GIS: a development group was set up involving the QGIS community, formal acceptance of the proposal was sought within the QGIS community (QEP #257) and possible development options for the provider (ex: python vs C++) were analyzed. As STA is an OGC standard, it seemed appropriate to implement it in C++ as a core element of QGIS.</p> +<p>Development has therefore been carried out in close interaction with the QGIS developer community with the focus on supporting complex STA queries, implementing among other things:</p> +<p>&#8211; expansion of relations among model entities;<br /> +&#8211; independent attribute filtering and sorting on all entities;<br /> +&#8211; efficient data caching to limit unnecessary data transfers;</p> +<p>This new core element is available from QGIS version 3.37 (currently only available as nightly release).</p> +<p>Finally, plans are underway to develop a new version of the QGIS STA plugin (originally developed by Deda Next within project AirBreak) focused on data exploration and analysis that will be able to leverage on the newly released core STA data provider to support a wider range of use cases, such as:</p> +<p>&#8211; Time series analysis: This is the case of the old STA plugin. Fetch Locations, show them on the map. Then, upon selection of one location, fetch all related Things and Datastreams, and finally, fetch the Observations of the desired Datastream to be shown in a table or plot;<br /> +&#8211; Space-time series analysis: Given a selected set of Datastreams from a moving sensor, get all the FeaturesOfInterest of those Datastreams and plot them on the map, so to have a view of the path of the moving sensor and a hold on its values on every part of that path;<br /> +&#8211; Monitoring and inspection: Fetch all the latest observations of all Datastreams (or a selection based on the ObservedProperty) and show these at their Locations, styled by the result of the latest Observation of a given ObservedProperty. Then, in a second phase (eg. if a value is over a threshold), inspect the full timeseries of that one Datastream.<br /> +&#8211; Tracking of moving things: Show all Things with their current Location and their HistoricalLocations with the Temporal Controller (time slider).</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Matteo Ghetta + Luca Giovannini + + 1 + 1 + + + 12:40 + 00:15 + EO4MULTIHAZARDS Web Application + https://www.sfscon.it/talks/eo4multihazards-web-application/ + + <p>The EO4MULTIHA project (https://eo4multihazards.gmv.com/), funded by the European Space Agency, aims at developing an open database gathering and harmonizing event information coming from already existing event databases to support multi-hazard(-risk) research.<br /> +To pursue this aim, this project which has been developed in the EURAC research, Center for Sensing Solutions, presents a comprehensive web application designed to analyze and visualize multi-hazard events, developed using Django and PostgreSQL. Leveraging the strengths of open-source technologies, the application provides a robust platform for researchers, policymakers, and the public to access and understand the complexities of multi-hazard scenarios. The main parts of this web application is explained in the following paragraphs:</p> +<p>(i) The core of the application is built with Django, a high-level Python web framework known for its rapid development capabilities and clean, pragmatic design. PostgreSQL, a powerful and scalable open-source relational database system, ensures efficient data storage and management. Together, these technologies offer a reliable and flexible foundation for handling diverse and large datasets.</p> +<p>(ii) To visualize the events, Leaflet Map which is an open source contributor to the OpenStreet Map has been used.</p> +<p>(iii) To populate the database, the application exploits various RESTful APIs, integrating data from multiple sources, including satellite imagery, climatological records, in-situ measurements, and relevant statistical data. This multi-source approach allows for a comprehensive characterization of risks, exposures, and susceptibilities associated with multi-hazard events benefiting from the Open Data Standards such as OGC Standard.</p> +<p>(iiii)Key features of the application include spatial and temporal filtering of events, cross-linking of data sets for enhanced reusability, and compliance with open standards such as RESTful APIs and OGC standards. The platform is designed to be expandable, with the potential to incorporate additional locations and datasets in the future.</p> +<p>By providing an accessible online platform, this web application aims to support the understanding and analysis of multi-hazard events, facilitating informed decision-making and effective disaster management strategies. The use of open-source technologies and the integration of diverse data sources underscore the project&#8217;s commitment to innovation, scalability, and community-driven development.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Mahtab Niknahad + + 1 + 1 + + + 13:00 + 00:15 + BASIC CORE South Tyrol + https://www.sfscon.it/talks/basic-core-south-tyrol/ + + A project to solve the topographical complexity of the National Spatial Data Catalogue + A project to solve the topographical complexity of the National Spatial Data Catalogue + <p>The project has its roots in a precise and simplified cartographic updating methodology introduced by the Consortium of Municipalities of the Province of Bolzano in the early 2000s. This methodology, which was consolidated over the years, could no longer be applied following the adoption of the Territorial Data Catalogue (Ministerial Decree 10.11.2011 &#8220;Technical rules for defining the content specifications of geotopographic databases&#8221; and subsequent amendments) due to the complexity and articulation of the new national model. The primary objective of the project was to research and define a minimum set of information that could adequately describe the territory within the typical use context of the public administration, ensuring its sustainability in terms of the ability to keep it updated and aligned with the transformations of the territory. Simplifying the definition and understanding of the basic technical layer that every public administration producing geographic data must guarantee within their institutional activities for geotopographic databases is a fundamental step to adequately support territorial management. Lightened of the informational content already managed by the Provincial Administration within archives or sectoral Information Systems, and consequently already included in existing and consolidated maintenance and updating flows, as well as everything that can be considered three-dimensional data nowadays obtainable through faster and more accurate systems, the Basic Core (BC) specification was produced by reorganizing and simplifying the information levels contained in the National Territorial Data Catalogue with reference to the identified minimum subset of required information known as the National Core (NC). To make it practically usable, only the themes considered objectively useful and easily updatable were included in the Basic Core. Our presentation will outline the key points that enabled the design of the Basic Core content specification and illustrates the technological tools developed, as well as the automatic transformation and simplification procedures that led to the significant reduction in the number of object classes provided by the National Core (from 59 to only 23), demonstrating that the Basic Core project is not a merely theoretical exercise, but a practical and concrete application currently tested and successfully used in South Tyrol. The specifically developed Dashboard for managing, correcting and updating the provincial Geotopographic Database, built on the basis of this new simplified specification, will be explained in detail. This dashboard allows effective operation on every management aspect, including the crucial task of sharing maintenance responsibilities between the Provincial and Municipal levels, thus ensuring the full efficiency of this fundamental geographic base. Particular attention will be given to illustrating the guided editing functionality available directly from the online interface, as well as the options for creating and exporting QGIS projects. QGIS projects are designed to perform the most significant and advanced corrections and/or updates. We will conclude the overview of this innovative system with a demonstration of the processes for reimporting and validating the updated data. Finally, practical cases in which the Basic Core has been used will be presented, as well as future developments, already planned and those still under evaluation, that the system will receive in order to refine and make its use more robust.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Edoardo Scepi + + 1 + 1 + + + 13:20 + 00:15 + Sharing Connects People + https://www.sfscon.it/talks/sharing-connects-people/ + + The experience of Think Open at CIMeC + The experience of Think Open at CIMeC + <p>Think Open is an Open Science initiative born within CIMeC in 2018 whose goal is to build a virtual space within which researchers at the Center can share different kinds of outputs from research, integrating and merging information from different sources and stages of the knowledge-building process. A number of achievements have been made over the years, both from the point of view of training (seminars, hands-on, courses for doctoral students, awards, etc.) and implementation of best practices (code and data sharing, adoption of free-software tools, etc.). Here we will describe how sharing open practices in everyday working routines foster connections between people, creating practice-based communities.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Vittorio Iacovella + + 1 + 1 + + + 13:40 + 00:15 + Hacking your (electric) car: the importance of Open Data + https://www.sfscon.it/talks/hacking-your-electric-car-the-importance-of-open-data/ + + Gathering information from the OBD (On Board Diagnostic) port of your car could be challenging + Gathering information from the OBD (On Board Diagnostic) port of your car could be challenging + <p>Any car has a diagnostic connector from which you can gather and/or set data from the various ECU (Engine Control Unit) that are present in your car, such as odometer, temperatures, motor rotation speed, accelerator depression percentage, wheel angle, lights, and – in an electric car – information about battery, remain energy, charging/discharging power, etc.<br /> +The big challenge is that the meaning of fathered data is usually not known and car manufacturers are reluctant to share this information.<br /> +This talk will illustrate how to scan the available data and make reverse engineering in order to try to create a shared database containing (useful) car data and PIDs (Parameter IDs) from ECUs of your car.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Luca Bonissi + + 1 + 1 + + + 14:00 + 00:15 + The Innovation Paradox + https://www.sfscon.it/talks/the-innovation-paradox/ + + Do you really know how to unleash and manage innovation? + Do you really know how to unleash and manage innovation? + <p>In the era of the Fifth Industrial Revolution, leaders, innovators and pioneers design, generate, and shape future-proof organizations, driven by a meaningful purpose promoting social impacts, combining emerging technologies and new ways of collaborating and conceiving work. While the &#8220;why&#8221; is clear and quite declared by many, the &#8220;what&#8221; to do and the &#8220;how&#8221; to do it remain very nebulous and, in some cases, obscure. Those ones who lead innovation within an organization suffer the innovation paradox: must innovate without knowing what and how. Innovators and pioneers are often alone, without a framework and processes for an open innovation execution. How can we unlock and unleash innovation, ensuring that the actions taken are always driven by what is truly needed to evolve your organization?</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Andrea Solimene + + 1 + 1 + + + 14:20 + 00:15 + The FSFE Italy Project from Understanding to Testing + https://www.sfscon.it/talks/the-fsfe-italy-project-from-understanding-to-testing/ + + How I applied design-thinking to re-design the Italian Free Software Community + How I applied design-thinking to re-design the Italian Free Software Community + <p>The role of Deputy Coordinator Italy within the Free Software Foundation Europe (FSFE) was born in 2022 out of the need of re-establishing the presence of the Foundation on the territory. I designed this three years experimental project together with the <a href="https://freesoftwarelab.noi.bz.it/">Free Software Lab</a> of NOI Techpark with the value proposition of (re)designing the FSFE Italian Community.</p> +<p>The project followed a human centric approach, moving along the five core stages of design-thinking. The goal of my talk is to describe the FSFE Italy project and the design-thinking approach adopted.</p> +<p>The first year (Y1) served as the understanding phase: I got involved as an FSFE representative in the main communication channels used by the Free Software (FS) community on the territory. I conducted interviews with volunteers, associations’ heads and enthusiasts, took part into the main FS events organized on the territory, mapped all stakeholders (understanding-observing) and created my own point of view (POV). By the end of 2022 I had already became an established FSFE representative on the territory, having gathered inputs and ideas on how to kick off the community into year two (Y2). The goal of year two was to build on these new ideas (ideation) and put these thoughts into action (prototyping) by finding common goals and activities with the main FS associations active on the territory and signing Memorandum of Understandings, preparing the ground to test it in the third year (Y3). Guess what was the result?</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Marta Andreoli + + 1 + 1 + + + 14:40 + 00:15 + NGI: No more EU funding for Free Software?! + https://www.sfscon.it/talks/ngi-no-more-eu-funding-for-free-software/ + + <p>During the summer the European Commission made the decision to stop funding Free Software projects within the Next Generation Internet initiative (NGI). This decision results in a loss of €27 million for software freedom. Since 2018, the European Commission has supported the Free Software ecosystem through NGI, that provided funding and technical assistance to Free Software projects. This decision unfortunately exposes a larger issue: that software freedom in the EU needs more stable, long-term financial support. The ease with which this funding was excluded underlines this need.<br /> +This talk shows the urgent need for sustainable, long-term financial support for Free Software to ensure Europe&#8217;s technological independence.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Alexander Sander + + 1 + 1 + + + 15:00 + 00:15 + What the open source community means to me + https://www.sfscon.it/talks/what-the-open-source-community-means-to-me/ + + Some very personal thoughts on why contributing can enrich your life + Some very personal thoughts on why contributing can enrich your life + <p>Everytime I tell my friends about my hobby which noawadays has also become my job, I face lots of questions. A worldwide community? Contributors around the globe? An open source community? What is this all about?</p> +<p>In this talk, I&#8217;d like to share my very personal view about what the open source community means to me, how to grow from user into community member, how the credit of trust helps you to discover your own skills, how to make friends around the world and why it&#8217;s not only fun to get active in a community, but also a big benefit for your whole life that can help you to broaden your mind.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Florian Effenberger + + 1 + 1 + + + 15:20 + 00:15 + A Journey of Contribution and Collaboration in Open Source + https://www.sfscon.it/talks/a-journey-of-contribution-and-collaboration-in-open-source/ + + Why Foundations are Essential + Why Foundations are Essential + <p>Have you ever worked on a project that didn&#8217;t use any open source tools, libraries, or products? Didn&#8217;t think so&#8230;Using open source has been such an integral part of our daily work life that we don&#8217;t even think about it. We just expect it to be available, secure, stable, and bug-free. But how many of you are actually contributing back to an open source project?</p> +<p>This session will go through a couple of the aspects to consider when you are embarking on your open source journey. We will look at different kinds of open source projects, and what the open source foundations bring to the table.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Ivar Grimstad + + 1 + 1 + + + 15:40 + 00:15 + Jakarta EE: Why and how to get involved in Open Source Software? + https://www.sfscon.it/talks/jakarta-ee-why-and-how-to-get-involved-in-open-source-software/ + + <p>In this session you will learn how to become part of an open source community, how to get involved and most importantly why you need to do it! You will learn about the Jakarta EE and its plans for the future, so you can start right away! This presentation will also provide you with key insights into the industry-wide, open source collaboration to modernize Java enterprise systems for cloud-centric use cases.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Tanja Obradovic + + 1 + 1 + + + 16:00 + 00:15 + From Concept to Camp: Project Management Strategies for IT Education Events + + + <p>In today’s fast-paced technological landscape, the need for immersive and hands-on educational experiences is more crucial than ever. &#8220;From Concept to Camp: Project Management Strategies for IT Education Events&#8221; delves into the meticulous process of organizing successful IT camps from a project management perspective.</p> +<p>Join us as we explore the comprehensive journey of bringing an IT camp from initial concept to a fully realized event. We will cover essential project management strategies, including planning, scheduling, resource allocation, risk management, and post-event evaluation. Participants will gain insights into: Defining Objectives and Scope; Budgeting and Resource Management; Team Collaboration and Leadership; Marketing and Participant Recruitment; Logistics and Event Planning; Evaluation and Feedback.</p> +<p>Through real-world examples and practical advice based on the Red Hat Summer Camp Brno project, this talk will equip you with the tools and knowledge needed to transform your vision of an IT camp into a reality.</p> +<p>Whether you’re planning your first event or looking to enhance your current approach, this session will provide valuable takeaways to elevate your project management skills and deliver exceptional educational experiences.</p> + + SFSCON + SFSCON + SFSCON + + Juri Solovjov + Yuliia Kliuchnikova + + 1 + 1 + + + 16:20 + 00:15 + Building the Public Interest Desktop + https://www.sfscon.it/talks/building-the-public-interest-desktop/ + + Our experience organizing GNOME's Sovereign Tech Fund project + Our experience organizing GNOME's Sovereign Tech Fund project + <p>The Sovereign Tech Fund is a new funding program for critical free software infrastructure by the German government. As part of this, members of the GNOME community have been working on fixing important issues across the free desktop stack. This includes security, accessibility, maintainability, hardware support, and more.</p> +<p>In this talk Sonny and Tobias will give an overview of how we organized the project, the work done as part of it, and the massive impact a relatively small amount of public money can have on making the free desktop better.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Tobias Bernard + Sonny Piers + + 1 + 1 + + + 16:40 + 00:15 + Let&#8217;s share our love for Free Software + https://www.sfscon.it/talks/lets-share-our-love-for-free-software/ + + I love Free Software Day 2025 + I love Free Software Day 2025 + <p>We often underestimate the power of a simple Thank You. Free Software contributors do important work for our society and the &#8220;I Love Free Software Day&#8221; on 14 February is the perfect opportunity for you to express your special gratitude. Since 2010, we have celebrated this wonderful annual event with an ever-growing and diverse community. ♥</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Ana Galan + + 1 + 1 + + + 17:00 + 00:15 + MoodleXR: A Next-Generation Open-Source Platform for Immersive Learning + https://www.sfscon.it/talks/moodlexr-a-next-generation-open-source-platform-for-immersive-learning/ + + <p>This project aims to develop a state-of-the-art Learning Management System (LMS) based on Moodle, optimized for delivering Virtual Reality (VR) and Augmented Reality (AR) learning modules.</p> +<p>By leveraging the open-source nature of Moodle and integrating advanced immersive technologies, the project seeks to create an innovative educational platform that transforms traditional learning experiences.</p> +<p>The LMS will incorporate open-source VR/AR tools and libraries, such as A-Frame, AR.js, and Blender, enabling educators to seamlessly integrate and manage immersive content. It will support various VR headsets and AR devices, ensuring broad accessibility. The platform will feature interactive learning modules, robust analytics, and scalable infrastructure, all built on open-source technologies like Kubernetes and Matomo.</p> +<p>Additionally, the project will emphasize accessibility and privacy compliance, utilizing tools like WAVE and Let’s Encrypt.</p> +<p>By fostering a community-driven development model, this LMS will offer a flexible, cost-effective solution that revolutionizes education through experiential learning, making it more engaging, interactive, and effective for students and educators alike.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Luca Bagna + + 1 + 1 + + + 17:20 + 00:15 + Implementing digital examinations in free software systems + https://www.sfscon.it/talks/implementing-digital-examinations-in-free-software-systems/ + + <p>In Finnish upper secondary schools course and final exams have been digital for some years now. Ordinary student laptops are routinely booted from USB flash drives to a special operating system, which provides a restricted environment allowing students to take an exam with no distractions or tools to cheat. Up to these days, this was implemented with Debian GNU/Linux, also meaning that student laptops must be Linux-compatible.</p> +<p>This is now changing. Not every modern laptop can simply boot from a USB drive to run Linux, these including chromebooks, Apple laptops and some new Windows laptops. Some schools may want to buy these devices and do not want a separate set of computers only for examinations. The current system is being replaced by an exam application, meant to run on different operating systems, which are to provide guarantees that no cheating can occur. The exam application activates the &#8220;assessment mode&#8221;, provided by operating system vendors, and this mode should provide a safe place where no cheating can occur, even on computers owned by the students.</p> +<p>Does that even make sense? Can that really be done, and with free software? In this presentation we take a peek at some technologies in Linux systems that can be used to secure a computer against an attacker with a physical access to the machine. We will also look at possible ways to implement an &#8220;assessment mode&#8221; in Linux desktops.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Juha Erkkilä + + 1 + 1 + + + 17:40 + 00:15 + Let’s spark children’s interest in coding + https://www.sfscon.it/talks/lets-spark-childrens-interest-in-coding/ + + Our experiences and how you can contribute + Our experiences and how you can contribute + <p>Today it is impossible to imagine daily life without software. The majority of us can&#8217;t spend a single day without using it. People use software in the workplace, on laptops, and on mobile phones. Software is also found in less obvious places however: in trains, cars, televisions, washing-machines, fridges, and many other devices. None of these devices could function without software. Without software we couldn&#8217;t write e-mails, make phone calls, go shopping, or travel as we are accustomed to. Software is our society&#8217;s central tool. How do we ensure that the next generation is motivated and capable of shaping technology for society&#8217;s benefits?</p> +<p>The Free Software Foundation Europe&#8217;s volunteers and staff have interacted with over 1700 children between 6 to 10 years in the past months. Children, especially girls, afterwards were motivated to start experimenting with hardware and software. In the discussions we saw that they realise how crucial technology will be for them. Furthermore with the FSFE&#8217;s coding competition &#8220;Youth Hacking 4 Freedom&#8221; we gathered experiences working with teenagers who program, tinker, and have fun with software.</p> +<p>Learn more about the experiences how the FSFE sparks children&#8217;s and teenagers interest to tinker, experiment and program. Furthermore you will see how fulfilling those activities can be for yourself.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Matthias Kirschner + + 1 + 1 + + + + + 11:00 + 00:15 + Open-source silicon chips + https://www.sfscon.it/talks/open-source-silicon-chips/ + + <p>We have all heard that there is &#8216;Intel inside&#8217;, but what is inside Intel? Almost all integrated circuits today are literally black boxes. They may contain unwanted or malicious features and, most importantly, they do not encourage reuse, nor do they allow it. The two main causes of such secrecy are: 1. standard design tools explicitly forbid the publication of any output, and 2. most foundries disallow disclosing technology details. Designers moreover face additional problems: The licence cost of standard design tools is unaffordable for most SMEs (unless questionable discount policies are applied), and lock-in threats arise at many levels, from IP blocks to foundry details to file formats. Yet exceptional progress has been made in recent years: Hundreds of silicon chips have been designed using free and open-source tools, and three foundries have made details of their processes public: The doors to free silicon are open! Hence how is politics reacting? What are the next steps to be taken? What are the opportunities for users, society and companies?</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Luca Alloatti + + 1 + 1 + + + 11:20 + 00:15 + Opt out? Opt in? Opt Green! Bringing Free Software To Eco-Consumers + https://www.sfscon.it/talks/opt-out-opt-in-opt-green-bringing-free-software-to-eco-consumers/ + + <p>Free Software gives consumers what they want, but many don&#8217;t know it &#8230; yet! We aim to change that by reaching out directly to eco-consumers in the &#8220;Opt Green&#8221; project, a new KDE Eco initiative funded by the German Environmental Agency.</p> +<p>Consumers want sustainable software: in a recent European poll 50% of respondents say the two primary reasons they purchase a new device are non-functioning software and software performance issues. This is as good a time as ever for an &#8220;Opt Green&#8221; message. In the next couple of years Windows 10 end-of-life and the phasing out of Intel-based macOS support will make e-waste out of hundreds of millions of computers. Functioning but vendor-abandoned devices can stay out of the landfill and in use for many years to come. With software designed for users&#8217; needs, not vendors&#8217;, it is possible to run software on the devices one already owns. Lean, efficient Free Software even runs on devices that are decades old. This is good for users, and better for the environment!</p> +<p>In this lightning talk I will provide an overview of the whys and hows of KDE Eco&#8217;s &#8220;Opt Green&#8221; initiative. Through campaigns and workshops over the next 2 years, we will raise awareness about environmental issues driven by software and demonstrate the power of Free Software to drive down resource use and keep devices running smoothly for years beyond official vendor support. This is all possible because Free Software *is* right-to-repair software: it removes vendor dependencies and guarantees transparency and user autonomy, providing full control over software, and thus hardware. I will describe the ways we plan to reach our target audience, including materials designed for eco-consumers and events well outside usual tech circles, such as open-air organic, artisanal, and fair trade markets, cultural centers, and others. These activities give us the opportunity to align our values in the Free Software community with those in allied communities striving for a sustainable modern lifestyle.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Joseph P. De Veaugh-Geiss + + 1 + 1 + + + 11:40 + 00:15 + ClapMetrics: Decoding Users’ Gender and Age Through Smartwatch Gesture Dynamics + https://www.sfscon.it/talks/clapmetrics-decoding-users-gender-and-age-through-smartwatch-gesture-dynamics/ + + <p>In this presentation, we introduce ClapMetrics &#8211; an innovative and seamless method for deducing the gender and age of smartwatch users. This system ingeniously harnesses the capabilities of the smartwatch’s integrated 3D sensors — specifically, the accelerometer and gyroscope—to capture the wearer’s arm movements during a clapping action. ClapMetrics operates on the principle that each clap is a complex interplay of motion, unique to the individual, much like a fingerprint. By analyzing these movements, ClapMetrics can gather rich biometric data without any active input or effort from the user, making it a remarkably non-intrusive technology. We will delve into the specifics of how ClapMetrics processes sensor data to make its estimations. We will explore the Neural Network’s architecture, the training process, and how the model interprets the sensor data to make reliable predictions about the wearer’s gender and age.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Attaullah Buriro + + 1 + 1 + + + 12:00 + 00:15 + Adoption Determinants of Open Hardware Across Industries + https://www.sfscon.it/talks/adoption-determinants-of-open-hardware-across-industries/ + + <p>Open Hardware (OH) is revolutionizing the way we approach technology in several areas, such as agriculture and healthcare. These areas, which are fundamental to food availability and human well-being, are undergoing an important shift as open hardware licensing strategies, inspired by open-source software (OSS), make solutions more accessible, affordable, and customizable. In this talk, we review major factors determining the use and adoption of OH technologies, including economic advantages, opportunities, and challenges.<br /> +Similar to OSS, OH applications are gaining momentum. In agriculture, farmers and researchers are turning to OH for precision farming tools, environmental monitoring, and robotics. These technologies not only reduce development costs but can be easily adapted to specific local needs, enhancing their effectiveness in diverse agricultural environments – crucial for small-scale farmers in developing countries and rural areas who face financial constraints. Likewise, the healthcare industry is benefiting from OH through the development of affordable medical devices, diagnostic tools, and treatment systems. The high costs and regulatory challenges associated with traditional medical devices often limit access to essential healthcare, especially in underdeveloped regions. Examples include open-source ventilators, syringe pumps, and diagnostic devices.<br /> +Applications of OH will be showcased through a comparative analysis of successful projects, particularly those with high engagement on platforms like GitHub, characterized by community engagement, active forums, and regular updates. Finally, we will draw conclusions about the potential of OH for industries beyond agriculture and healthcare, encouraging further innovation and collaboration in the open-source community.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Seckin Celik + Davide Serpico + + 1 + 1 + + + 12:20 + 00:15 + Enabling global interoperability among smart devices is only possible through Open Source + https://www.sfscon.it/talks/enabling-global-interoperability-among-smart-devices-is-only-possible-through-open-source/ + + Oniro and OpenHarmony a cooperation to build a global ecosystem + Oniro and OpenHarmony a cooperation to build a global ecosystem + <p>Global interoperability is probably the biggest problem that smart devices have been studied for more than 10 years. Multiple solutions have been proposed with different results, but none of them has established a reference framework and a global adoption. One of the main reasons for this to stay as a key element for research and investment is the diversity among the whole technology stack and geographical dispersion of device manufacturers. In the last years, there is a solution that is capturing the attention by demonstrating how an open source operating system can enable global interoperability in a huge domestic market like China. This solution is OpenHarmony and through a cooperation with Eclipse Foundation Oniro project, it is intended to use open source to drive interoperability and therefore solve one of the biggest challenges in the IoT and smart device industry. During the talk, it will be presented the approach followed by these two independent initiatives to cooperate while keeping the independence of the open source communities behind them.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Juan Rico + + 1 + 1 + + + 12:40 + 00:15 + Smart Werke Meran &#8211; Lorawan Use Cases + https://www.sfscon.it/talks/smart-werke-meran-lorawan-use-cases/ + + Our Use Cases realized with 100% Open Source + Our Use Cases realized with 100% Open Source + <p>Stadtwerke Meran has had a Chripstack Lorawan server and 19 Lorawan gateways for a year now. Merano has a well-developed Lorawan network.</p> +<p>We have realized the following use cases:</p> +<p>Remote control of public lighting.<br /> +Temperature measurement ( Just Nature project)<br /> +Smart metering for our water customer<br /> +GPS tracking for waste compactors of our major customers</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Stefan Mutschlechner + + 1 + 1 + + + 13:00 + 00:15 + 2025 scenario on OpenISA OpenPower Open Hardware computing + https://www.sfscon.it/talks/2025-scenario-on-openisa-openpower-open-hardware-computing/ + + 2025 Real scenario on Open Hardware based on OpenISA OpenPower CPU + 2025 Real scenario on Open Hardware based on OpenISA OpenPower CPU + <p>We see on 2025 which OpenISA OpenPower low power chip will give life to new Open Hardware computers, we examine in detail which open hardware computers will be ready for 2025 based on these chips. It will be the first time that OpenPower OpenISA low power Chip will be produced, and what is more, it will be produced from other Silicon Companies different from IBM.<br /> +We will see who are the GNU/Linux distros that support PPC64 and PPC64el and PowerPC architecture that runs on these computers and how you can join to experiment with it and push forward these architectures.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Roberto Innocenti + + 1 + 1 + + + 13:20 + 00:15 + The SMART Box of AURA Project + https://www.sfscon.it/talks/the-smart-box-of-aura-project/ + + <p>AURA project centers on the development of &#8220;Green &amp; Smart Urban Furniture,&#8221; a new generation of urban furniture that transcends traditional roles by incorporating eco-friendly and intelligent features. These urban elements are designed with bioabsorbent vegetation capable of mitigating atmospheric pollutants, making them environmentally sustainable. Furthermore, they are outfitted with advanced IoT sensors that monitor a range of environmental parameters, including climate data, urban pollution, and vehicular traffic.</p> +<p>These smart urban furniture units not only establish an extensive urban monitoring network but also actively combat pollution through the sequestration and reduction of harmful substances via the integrated vegetation. The embedded IoT sensors provide innovative capabilities for tracking the impact of these elements on the surrounding urban environment, such as monitoring air pollution levels and assessing the effects of heat islands. Each furniture piece is equipped with a &#8220;smart box,&#8221; a hardware system constructed using low-cost commercial off-the-shelf (COTS) components. This system includes climate and environmental sensors, gas measurement devices, a processing unit, and a data transmission module. The accompanying software, developed from scratch, delivers localized information—such as CO2 sequestration, temperature, and humidity—and contributes to a comprehensive environmental monitoring network aimed at predictive analysis, including weather risks, heat wave alerts, and health risks associated with air pollution. The presentation will delve into the custom-developed software and its ability to meet the field-level requirements of the AURA Architecture, encompassing individual sensors, sensor nodes (smart-boxes within the furniture), and the broader network of these nodes. It will highlight the significant impact and benefits of utilizing free and open-source technologies throughout the development process. Key focus areas include the creation of drivers for individual sensors, with emphasis on the most representative examples, the development of software for sensor nodes—covering features like self-testing, over-the-air (OTA) updates, and MQTT communication—and the design of a dynamic web app for data presentation, leveraging JavaScript, Bootstrap, and a JSON Data Lake. This comprehensive approach underscores the importance of open technologies in accelerating innovation, ensuring flexibility, and delivering robust, scalable solutions for smart urban environments.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Angelo Serino + + 1 + 1 + + + 13:40 + 00:15 + Raspberry Pi and Node-RED: Open Source Tools for Local Automation and Industrial IoT applications + https://www.sfscon.it/talks/raspberry-pi-and-node-red-open-source-tools-for-local-automation-and-industrial-iot-applications/ + + <p>This talk will explore how Raspberry Pi and Node-RED enable robust solutions for automation and control systems in both industrial and local applications. Leveraging open-source technology, these platforms can handle a wide range of tasks, from reading sensor data and managing actuators, to controlling devices through industrial communication protocols such as Modbus, RS485 ascii RTU etc. Node-RED&#8217;s message-driven architecture simplifies the creation of control logic, even for complex operations, while Raspberry Pi serves as a powerful and cost-effective alternative to traditional PLCs and IPCs. The integration of these tools allows for seamless data processing, remote communication, and the development of HMI interfaces both user-friendly or more traditiconal SCADA-like, making these technologies ideal for creating IIoT-native solutions. This presentation will focus on the technical capabilities, showing how these platforms can empower engineers and developers to build flexible and scalable automation solutions.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Federico Boero + Alberto Nicoletti + + 1 + 1 + + + 14:00 + 00:15 + Approaches to Object Detection: Edge-Based and AI-Based + https://www.sfscon.it/talks/approaches-to-object-detection-edge-based-and-ai-based/ + + <p>This presentation explains why we passed to the expert system based on edge-based object detection on traditional image analysis techniques to the AI-based, leveraging advanced machine learning. The first method uses parameters derived from image analysis tools, focusing on attributes such as shape, size, and color of objects, informed by preliminary tests and expert data. The machine learning method employs a sophisticated algorithm that dynamically learns and identifies objects in images. We used both approaches using diverse datasets and measured their accuracy and efficiency under various conditions. The aim of this presentation is to show the improvement obtained by using the AI-based system applied for real-time detection and classification, offering insights into their practical strengths and applications.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Giovanni Giannotta + Orneda Lecini + + 1 + 1 + + + 14:20 + 00:15 + Proxmox Backup Server: Backup for your Datacenter + https://www.sfscon.it/talks/proxmox-backup-server-backup-for-your-datacenter/ + + <p>Backups are an essential component of every IT infrastructure, from small scale businesses up to large datacenters, spanning multiple locations. With the Proxmox Backup Server a fully Free and Open Source backup solution is available, being highly integrated with the Proxmox Virtual Environment.<br /> +This talk will present a short overview of the capabilites provided by Proxmox Backup Server, giving some insights into new and recently added features. Further, by peeking into the inner workings and the software design will show how fast, space efficient and reliable backups are created and how data consistency and integrity are guaranteed. Topics covered will include backups for Virtual Machines and Linux Containers running on top of Proxmox Virtual Environment as well as host level backups.</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Christian Ebner + + 1 + 1 + + + 14:40 + 00:15 + Cloud Costs with ClickHouse and OpenCost + https://www.sfscon.it/talks/cloud-costs-with-clickhouse-and-opencost/ + + <p>Managing costs and billing across numerous Cloud-managed Kubernetes clusters presents significant challenges. In this talk, we&#8217;ll explore these challenges and discuss solutions using ClickHouse and OpenCost. Leveraging ClickHouse&#8217;s capabilities, we&#8217;ll demonstrate how it efficiently imports diverse Cloud billing data streams. Additionally, we&#8217;ll delve into how OpenCost addresses the complexities of real-time cost management within a multitenant architecture. Join us to uncover practical insights into optimizing cloud costs effectively.</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Denys Kondratenko + + 1 + 1 + + + 15:00 + 00:15 + Ansible + https://www.sfscon.it/talks/ansible/ + + Lazy Engineer's Best Friend! + Lazy Engineer's Best Friend! + <p>For a software engineer DRY is not only a washing machine progam, but it represents a deeply-held mantra: Don&#8217;t Repeat Yourself.</p> +<p>To avoid repetitive manual work, automation tools like Ansible enable engineers to quickly configure infrastructure and easily deploy applications.</p> +<p>In this talk, we will explore the key concepts and benefits of Ansible for configuration management, deployment and orchestration of remote devices. We will start with an overview of Ansible&#8217;s utility, how it works, and common use cases. We will see how YAML files describe configurations and playbooks define automated tasks and processes.</p> +<p>Practical examples will show Ansible automation in action, including a quick introduction to initializing and keeping your operating system up to date by automating the installation and maintenance of system tools. We will also introduce the concept of dotfiles for configuration.</p> +<p>What are you waiting for? Learn how to spend 30 minutes automating 5-second tasks with Ansible! (It&#8217;ll save you time in the long run, I promise!)</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Marco Lampis + + 1 + 1 + + + 15:20 + 00:15 + Efficient Log Management in Large-Scale Kubernetes Clusters + + + <p>Large Kubernetes clusters can generate significant volumes of logs, especially when housing thousands of running pods. This may demand substantial CPU, RAM, disk IO, and disk space for storing and querying large log volumes. In this talk, we will look into different strategies of storing those logs in ElasticSearch, Grafana Loki and VictoriaLogs and examine how we can save 10x or more on infrastructure costs.</p> +<p>This talk presents real-world examples of efficient log management in large-scale Kubernetes clusters. It includes setup demonstrations, numerical data, and graphical representations from reproducible benchmarks.</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Aliaksandr Valialkin + + 1 + 1 + + + 15:40 + 00:15 + KubeVirt + + + making running virtual machines in a kubernetes cluster a mainstream activity + making running virtual machines in a kubernetes cluster a mainstream activity + <p>KubeVirt is a Kubernetes addon for running virtual machines inside a Kubernetes cluster.</p> +<p>Currently being in CNCF incubating state, it has a wide range of adopters by both vendors and end users, such as NVidia, Suse, ARM and Red Hat to name a few.</p> +<p>This talk gives an overview of what is currently possible with KubeVirt on your cluster and what its future may look like. We will describe some of the features it supports, i.e. VM Import, LiveMigration, Snapshot/Restore and Monitoring.</p> +<p>At the end of the talk attendees will have an idea of how they can use it to better integrate existing virtual machines with containers in their existing application landscape.</p> + + SFSCON + SFSCON + SFSCON + + Daniel Hiller + + 1 + 1 + + + 16:00 + 00:15 + Why free backup software matters + https://www.sfscon.it/talks/why-free-backup-software-matters/ + + <p>It is 2024, we&#8217;re in the middle of the cloud-era.<br /> +Almost every service you desire is available in &#8220;the cloud&#8221;.<br /> +At least some of your company&#8217;s critical data is stored at some cloud provider.<br /> +Does your provider actually keep backups?<br /> +Can you live with their Recovery Time Objective (RTO)?<br /> +Do you believe they will actually meet the RTO?<br /> +Maybe you have another copy of your data?<br /> +In a format that you can actually access and read?</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Andreas Rogge + + 1 + 1 + + + 16:20 + 00:15 + Demystifying JWTs + https://www.sfscon.it/talks/demystifying-jwts/ + + <p>JSON Web Tokens (JWTs) have become a popular method for securely transmitting information between two parties. They are widely used in modern web applications for authentication and data exchange. However, their inner workings and security implications can be complex and often misunderstood by the developers.</p> +<p>In this talk, we aim to demystify JWTs by exploring their structure, how they work, and the cryptographic mechanisms that ensure their integrity and confidentiality. We will discuss the components of a JWT, including headers, payloads, and signatures, and illustrate how they combine to form a token.</p> +<p>Furthermore, we will dive into best practices for JWT usage, common pitfalls to avoid, and security considerations such as token expiration, payload size, and the choice of cryptographic algorithms. Finally, we will explore how a WebSocket connection can be secured with JWTs. Security is increasingly an overlooked necessity while utilizing a protocol that does not support authentication by default.</p> +<p>By the end of the session, attendees will have a clear understanding of how JWTs operate, their advantages over traditional session-based authentication, and how to implement them securely in their own applications.</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Dominika Bobik + + 1 + 1 + + + 16:40 + 00:15 + Containerization and micro-services in real life change security and vulnerability management. Let’s Discuss. + https://www.sfscon.it/talks/containerization-and-micro-services-in-real-life-chandge-security-and-vulnerability-management/ + + Security Configuration for Containerization and micro-services applications + Security Configuration for Containerization and micro-services applications + <p>Containerization and micro-services change the way software is deployed and used in production contexts. Re-evaluation of the criteria for secure development and above all for secure configuration of these solutions. It would probably be appropriate to implement security already during the creation of the solution itself.</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Carlo Falciola + + 1 + 1 + + + 17:00 + 00:15 + Cyber Risk Management: let’s try to manage it with open source and free software + https://www.sfscon.it/talks/cyber-risk-management-lets-try-to-manage-it-with-open-source-and-free-software/ + + Open source solutions in the cybersecurity landscape, oriented to manage processes + Open source solutions in the cybersecurity landscape, oriented to manage processes + <p>Cyber Risk Management is what you need to manage to ensure your business can operate being aware of threats, vulnerabilities, and to ensure that your business transactions and data are confidential, intact, available.</p> +<p>Let’s discuss and explore solutions and resources coming from open source and free software that can help organization to manage their cybersecurity programs, with an approach that looks at sharing knowledge, adopt tools and pay attention to the budget.</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Graziano Specchierla + + 1 + 1 + + + 17:20 + 00:15 + IT Security – Don’t let Open Source Software become the next menace + https://www.sfscon.it/talks/it-security-dont-let-open-source-software-become-the-next-menace/ + + Criminals and Govs are levereging Open Source tools, libraries and software to break into organizations. Let's stop 'em. + Criminals and Govs are levereging Open Source tools, libraries and software to break into organizations. Let's stop 'em. + <p>There is a prevalent myth that open source software is inherently secure. However, this is not true. Open source software is susceptible to vulnerabilities just like any other software. Moreover, the fact that anyone can review the code does not guarantee that the right people will do so. Open source software faces two important threats than not everybody are aware of:</p> +<p>Vulnerabilities: Open source developers need to understand and communicate the security posture of their projects to users. They must adopt robust security practices. The Log4j incident in 2021, which led to the Log4Shell vulnerability, triggered a catastrophic wave of attacks due to inadequate support for the logging framework and its critical role in company procedures.</p> +<p>Dev teams infiltration: Criminal organizations and government hacking teams are executing highly sophisticated social engineering operations to infiltrate understaffed open source projects. Their goal is to compromise development teams and insert backdoors into the software. The most recent attack on a significant project was discovered in April 2024.</p> +<p>Objective of the Talk: Inform the community about these two security scenarios and demonstrate how to effectively address them.</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Giancarlo Calzetta + + 1 + 1 + + + 17:40 + 00:15 + Biting the Apple + https://www.sfscon.it/talks/biting-the-apple/ + + MacBook Forensic with Fuji + MacBook Forensic with Fuji + <p>Description: Fuji is a free software, licensed under GPL v3, that leverages Apple Software Restore (ASR) and Rsync to create forensic images of macOS systems. It operates on logged-in computers to efficiently capture disk images while maintaining data integrity.</p> +<p>Bypassing encryption on Apple silicon processors presents significant challenges due to their advanced hardware encryption mechanisms and secure enclave protections. These processors employ complex security protocols that safeguard data at a hardware level, making unauthorized access and decryption extremely difficult. Without proper authentication or specific exploits, forensic imaging on these devices requires substantial technical expertise and often necessitates the cooperation of the device owner.</p> +<p>We&#8217;ll see how to acquire forensically MacBook data with free software</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Alessandro Farina + + 1 + 1 + + + + + 11:00 + 00:15 + Apisense – Easily monitor and track your REST-API data quality + https://www.sfscon.it/talks/apisense-easily-monitor-and-track-your-rest-api-data-quality/ + + An easy and modular solution to faulty REST-API data developed in collaboration with the Open Data Hub + An easy and modular solution to faulty REST-API data developed in collaboration with the Open Data Hub + <p>Ever had the issue of fetching invalid or faulty data from a REST-API and noticing only later, when everything broke down? Not anymore!</p> +<p>Apisense was developed in collaboration with the Open Data Hub to be an easy and modular tool to fit every need possible used to ensure and monitor the availability, quality and correctness of data provided via REST-APIs.</p> +<p>Sounds too good to be true? Tune in to find out how Apisense can help both producers and consumers of data to be aware of the quality and reliability of the data they provide/consume.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Aurelio Buonomo + Christian Zanotti + + 1 + 1 + + + 11:20 + 00:15 + MongoDB Alternatives: Is There A Need For A New Open Standard? + + + <p>This talk takes you on a journey through the history of SQL as an Open Standard, emphasizing its pivotal role in shaping the database industry. It also highlights the pressing need for a similar standard in MongoDB-compatible open databases. The presentation introduces FerretDB as a groundbreaking solution bridging MongoDB and open databases, ensuring seamless transitions without extensive application-level changes. This talk illuminates the importance of open standards and presents a path forward for enhanced compatibility and collaboration within the open-source database community.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Peter Farkas + + 1 + 1 + + + 11:40 + 00:15 + MariaDB Vector: Why your AI data should be in an RDBMS + https://www.sfscon.it/talks/mariadb-vector-why-your-ai-data-should-be-in-an-rdbms/ + + Databases and AI: How to supercharge application development with MariaDB vector + Databases and AI: How to supercharge application development with MariaDB vector + <p>As AI apps become mainstream, conventional IT wisdoms apply. AI apps must be no monoliths, but need to be logged, audited, and overall well integrated into normal IT. This means all AI data – vectors, input, output – is best stored in a normal RDBMS. Better still: In an open source database with performance, stability, and ease of use. Here is an overview of the AI opportunities, possibilities, methodologies, and features in MariaDB Server.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Kaj Arnö + + 1 + 1 + + + 12:00 + 00:15 + 1, 2, 3, Doc Kit! + https://www.sfscon.it/talks/1-2-3-doc-kit/ + + Automate the creation of software documentation + Automate the creation of software documentation + <p>Doc Kit is an open source command line tool that automates the creation of software documentation and release notes.<br /> +It can be used in conjunction with DocBook Authoring and Publishing Suite (DAPS) for quickly preparing the skeleton of professional looking software documentation.</p> +<p>Doc Kit has been designed for initialising SUSE or openSUSE documentation repositories but in a few steps it can be re-used for other projects too.<br /> +The tool consists of two parts:<br /> +1. a command-line tool called doc-kit that can download documentation boilerplate files<br /> +2. a repository of documentation boilerplate files, such as the SUSE/openSUSE book preface and entity files.</p> +<p>The presentation will show how to use Doc Kit and how to customise the provided templates for creating a brand new documentation or release notes projects.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Marina Latini + + 1 + 1 + + + 12:20 + 00:15 + codEEmoji – Making code more informative with emojis + https://www.sfscon.it/talks/codeemoji-making-code-more-informative-with-emojis/ + + <p>This presentation focuses on the open-source project codEEmoji, an IDE plugin that adds additional information to the code through emojis. The talk starts by discussing the benefits of this approach compared to other ways to present information for the developer in IDEs. It follows by presenting the plugin and its main functionalities, which go from pointing out bad practices in method and variable naming to presenting modifiers and method characteristics in their usage. Next, it is presented how the plugin structure was designed to receive new contributions. The talk finishes by presenting some challenges and future features.</p> +<p>https://github.com/codeemoji/codeemoji-plugin</p> +<p>https://plugins.jetbrains.com/plugin/22416-codeemoji</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Eduardo Guerra + + 1 + 1 + + + 12:40 + 00:15 + Can Test Driven Development be speeded up with Generative AI? + https://www.sfscon.it/talks/can-test-driven-development-be-speeded-up-with-generative-ai/ + + <p>Generative AI tools, like ChatGPT, have shown remarkable capabilities in natural language processing. It is logical to explore their potential in programming, yet the quality of generated code raises concerns. Test-Driven Development (TDD) offers a promising approach to address these concerns. In this talk, we will explore how developers can effectively collaborate with generative AI tools to enhance TDD practices, ensuring higher code quality and streamlined development processes. To this aim, we will present two interaction patterns between a human and an AI.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Moritz Mock + Barbara Russo + Jorge Melegati + + 1 + 1 + + + 13:00 + 00:15 + ScrapeGraphAI + https://www.sfscon.it/talks/scrapegraphai/ + + you only scrape once + you only scrape once + <p>ScrapeGraphAI is an innovative Python library designed to revolutionize the field of web scraping and in less than 4 months it collected over than 12k stars on Github and more than 100k downloads on pip. It allows to scrape which website you want with the knowledge of the HTML code and with the LLM models. By seamlessly integrating a natural language model within its architecture, ScrapeGraphAI enables the extraction of valuable information from websites with unparalleled flexibility and accuracy. Unlike traditional scraping tools that rely on rigid patterns or manual configuration, ScrapeGraphAI constructs a dynamic graph of operations to interrogate web pages, ensuring that relevant data is captured even in the face of changing website structures. This library&#8217;s unique fusion of language models and directed graph logic empowers developers to create sophisticated scraping workflows with minimal coding required, thereby streamlining the process of extracting valuable insights from online content. More info at this link: https://github.com/VinciGit00/Scrapegraph-ai</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Marco Vinciguerra + + 1 + 1 + + + 13:20 + 00:15 + Software Engineering Automation: From early tools to Generative AI and beyond + https://www.sfscon.it/talks/software-engineering-automation-from-early-tools-to-generative-ai-and-beyond/ + + <p>The emergence of Generative AI tools, such as ChatGPT and Copilot, promises to disrupt knowledge-based work, including software development. However, these are not the first tools to support the automation of software engineering. From the early days, various tools have been developed to remove repetitive tasks, reduce workload, and consequently increase the abstraction of software development, such as auto-completion and automatic refactoring. In this talk, we present the different levels of the automation of software engineering. We will examine how past and present tools have achieved these levels, the current capabilities of Generative AI tools, and what we can expect for the future.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Jorge Melegati + + 1 + 1 + + + 13:40 + 00:15 + The Crucial Role of Openness in Modern Software Development + https://www.sfscon.it/talks/the-crucial-role-of-openness-in-modern-software-development/ + + <p>Developers and providers of software-based products as well as other new technologies for the global market know that the winning solutions for future-proof projects share one key feature: interoperability with products from other suppliers. Achieving this interoperability means relying on open standards, open-source technologies and establishing key partnerships with other industry players.</p> +<p>In effect, openness principles are increasingly essential to software development. This talk will provide an in-depth analysis of how these concepts underpin interoperability, security and innovation in today&#8217;s technological landscape.</p> +<p>It will discuss the importance of open standards in creating seamless integration between diverse systems and applications, ensuring that technological advancements remain accessible and adaptable. The session will also cover key strategies and best practices for the adoption of open solutions that drive compatibility and competitiveness.</p> +<p>Finally, by examining Jakarta EE and the Payara Community, the talk will illustrate how these frameworks exemplify the power of open source in building innovative, scalable and future-oriented applications.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Chiara Civardi + Dominika Tasarz-Sochacka + + 1 + 1 + + + 14:00 + 00:15 + AI Tools for Jakarta EE + https://www.sfscon.it/talks/ai-tools-for-jakarta-ee/ + + <p>Discover how AI-powered tools for Jakarta EE streamline the entire development lifecycle.</p> +<p>Over the years, there have been many ways of starting a project: archetypes, project generators, visual designers, and so on. What do we get when we add a language model to the mix? A project generator that scaffolds domain-relevant Jakarta EE applications with backend and frontend functionalities in place.</p> +<p>Experience the future of enterprise application development through practical, cutting-edge demonstrations.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Gaurav Gupta + + 1 + 1 + + + 14:20 + 00:15 + How to start contributing and still have fun + https://www.sfscon.it/talks/how-to-start-contributing-and-still-have-fun/ + + <p>Are you new to Open Source and about to create your first commit, but still haven&#8217;t clicked on &#8220;New Pull Request&#8221; button?</p> +<p>There will be always something holding you back.</p> +<p>Or do you want to gain experience that can be applied at your school or work but don&#8217;t know how?</p> +<p>Open Source gives you that opportunity.</p> +<p>Let&#8217;s talk about it because we all go through it: how to find your project; fear of the first commit, the first code review, the first mistakes and everything is public; fight toxic communities &#8211; no one is perfect; when to open your code;</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Juri Solovjov + + 1 + 1 + + + 14:40 + 00:15 + Monolith Splitter + https://www.sfscon.it/talks/monolith-splitter/ + + <p>Migration from monolithic systems to microservices has earned significant interest in recent years. Software architects and developers welcome approaches, techniques, and patterns that can facilitate and automate the migration process. This talk will present Monolith Splitter, a tool that employs various approaches for splitting a monolith into a microservices architecture. This tool could be beneficial for software architects looking to migrate monolithic projects to a more scalable architecture. It uses execution traces to analyze monolithic software and suggests which classes should be grouped together in separate services according to criteria such as cohesion, modularity, and independence of evolvability. We will showcase the application of the tool to a series of open source software projects, discussing the outcomes, the benefits, and the current limitations.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Michal Skipala + Bruno Rossi + + 1 + 1 + + + 15:00 + 00:15 + The Next Level of Metrics in Microservices + https://www.sfscon.it/talks/the-next-level-of-metrics-in-microservices/ + + Going beyond measuring workload and performance + Going beyond measuring workload and performance + <p>In Microservices, measuring workload and performance are old news! They&#8217;re still important, but we can do more. In this talk, we&#8217;re navigating through new ideas on how to use metrics to tell us more than the basics about our microservices. Did you know we can evaluate our microservices in the architectural level? So we&#8217;ll have concrete data to support our decision-making. Between patterns and bad smells, we can use metrics to detect the points where they happen. Let&#8217;s explore these new possibilities to improve our experience when evolving a microservice system, towards a more robust and maintainable direction! Bonus: you&#8217;ll learn about an open-source tool to facilitate this process, of which I&#8217;m a maintainer, and you could be too!</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + João Francisco Lino Daniel + + 1 + 1 + + + 15:20 + 00:15 + What’s New in Notifications + https://www.sfscon.it/talks/whats-new-in-notifications/ + + <p>Over the past 6 months I&#8217;ve been working on improving notifications for the GNU/Linux desktop. This includes a new version of the xdg-desktop-portal notification spec, improved notification UI in GNOME Shell, and various backend components (e.g. GLib and portals).</p> +<p>In this talk I&#8217;ll explain why it was so difficult, how we untangled it, and what&#8217;s in store for the future.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Julian Sparber + + 1 + 1 + + + 15:40 + 00:15 + Sync Your Tunes, Sync Your Screen: Introducing SyncWall + https://www.sfscon.it/talks/sync-your-tunes-sync-your-screen-introducing-syncwall/ + + <p>Ever wished your computer could visually represent your playlist? SyncWall lets you turn every song into a unique visual experience, by dynamically matching your desktop wallpaper to the music currently playing on Spotify!</p> +<p>We&#8217;ll demonstrate SyncWall in action, showcasing its capabilities, and then we&#8217;ll dive deeper into the code and the process of creating the images.</p> +<p>SyncWall relies on two core components: Spotify&#8217;s API, which provides with all the necessary song information, and Python&#8217;s PIL library, which allows to easily manipulate images. Throughout the presentation, we will explore the key concepts and most useful functions of these two technologies, providing you with practical tools to integrate into your own projects.</p> +<p>Even if Syncwall is designed for GNOME, we will dive deep on how to make it work also in different desktop environments. This will cover all the steps and the challenges involved.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Giovanni Enrico Loni + + 1 + 1 + + + 16:00 + 00:15 + Nurturing OpenJDK distribution: Eclipse Temurin Success History and plan + https://www.sfscon.it/talks/nurturing-openjdk-distribution-eclipse-temurin-success-history-and-plan/ + + <p>Join me as we explore the pillars that make Eclipse Temurin one of the most widely adopted, enterprise-ready OpenJDK Runtime (over 20M monthly downloads) and also delve into the future of Adoptium and explore the goals set for 2024.<br /> +As we navigate the landscape of open source Java runtimes, Adoptium is committed to fostering vibrant, healthy projects that thrive with the support of robust communities. In this talk, we will also shine a spotlight on our dedication to delivering top-notch quality and outstanding performance, with a special focus on our AQAvit project and Security Effort.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Carmen Delgado + Ivar Grimstad + + 1 + 1 + + + 16:20 + 00:15 + Designing open source tools for Citizen Coders + https://www.sfscon.it/talks/designing-open-source-tools-for-citizen-coders/ + + Empower non-professional developers to drive innovation! + Empower non-professional developers to drive innovation! + <p>In a world where proprietary no-code platforms with vendor lock-in and opacity dominate, there is a crucial need to enhance the developer experience of open source applications, libraries, and tools.</p> +<p>We will explore how we can make open source software more accessible to citizen developers and non-professional programmers who face significant barriers to entry with modern open source tools. Showing the importance of collaborating with these developers, who are often closer to real-world problems, to improve the quality and usability of open source software.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Luca Rainone + + 1 + 1 + + + 16:40 + 00:15 + Free your Games + https://www.sfscon.it/talks/free-your-games/ + + A Minetest story + A Minetest story + <p>Videogames are part of our daily life. They allow us to unplug, to relax, to compete, simulating a reality that puts us at the centre of a new digital world. However, if we go deeper into the way videogames are made, we&#8217;ll learn that their market can be brutal and the ethics of their business models highly debatable &#8211; if not plain unbearable. Nowadays, playing a videogame usually means renouncing to our privacy and shaking hands with realities that we might not tolerate if we knew what they conceal. It was during the pandemic that a Minetest server called AES was born. Made by volunteers, AES decided to go against that: to build an online space where to play without strings attached. A place where everyone can have fun and nothing is proprietary. Four years later, this is its story.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Marco Amato + + 1 + 1 + + + 17:00 + 00:15 + How to set up an Open Source Program Office? Get insights and use cases from the OSPO Alliance + https://www.sfscon.it/talks/how-to-set-up-an-open-source-program-office-get-insights-and-use-cases-from-the-ospo-alliance/ + + <p>The Good Governance Initiative (GGI) developped by the OSPO Alliance proposes a methodological framework to assess open-source awareness, compliance and governance in any kind of organizations, helping them to structure and improve the use of FOSS towards an OSPO. This presentation will highlight the main progresses and new features achieved since last year&#8217;s introduction at SFScon, such as the translation of the GGI Good Governance in five languages, the recent OSPO testimonies presented in the OnRamp meeting series, and many more.</p> + + OW2 + OW2 + OW2 + https://www.sfscon.it/tracks/ow2-track-2024/ + + Valentina Del Prete + + 1 + 1 + + + 17:20 + 00:15 + Decentralized Search Over Decentralized Storage + https://www.sfscon.it/talks/decentralized-search-over-decentralized-storage/ + + Coupling an AI-powered search engine with a self-hosted personal cloud + Coupling an AI-powered search engine with a self-hosted personal cloud + <p>In this talk, we will explore an innovative decentralized search system developed in collaboration between the teams of On My Disk, a personal cloud storage solution, and PeARS, a self-hosted search engine. This system is designed to enable user-friendly, AI-powered, multilingual search capabilities directly over a decentralized storage environment, empowering individuals to manage and search their data across devices without relying on third-party servers. By combining cutting-edge AI with a robust, local-first approach, this solution allows users to maintain complete control over their data, ensuring secure, fast, and personalized search results in a user-controlled environment. Learn how this technology is setting a new standard for privacy and autonomy in data storage and retrieval.</p> + + OW2 + OW2 + OW2 + https://www.sfscon.it/tracks/ow2-track-2024/ + + Alexey Volkov + + 1 + 1 + + + 17:40 + 00:15 + Optimizing Cloud Compute Resources with Spare Cores + https://www.sfscon.it/talks/optimizing-cloud-compute-resources-with-spare-cores/ + + <p>Spare Cores is a vendor-independent, open-source, Python ecosystem that offers a comprehensive inventory and performance evaluation of compute resources across cloud server providers. We start all server types publicly (GHA) to run hardware inspection tools and benchmarks for different workloads. Our findings are published as open data and open-source tools to help you identify and optionally start the most cost-efficient instance type for your specific use cases (e.g. ML model training or CI/CD pipelines) in your cloud environment. Additionally, Spare Cores provides a seamless SaaS solution built on this open-source ecosystem, managing the entire lifecycle of containerized batch jobs without requiring direct vendor engagement.</p> + + OW2 + OW2 + OW2 + https://www.sfscon.it/tracks/ow2-track-2024/ + + Gergely Daroczi + + 1 + 1 + + + + + 13:00 + 00:30 + NOI Hackathon SFSCON Edition + + Side Event - Hackathon + Side Event - Hackathon + Side Event,Hackathon + 0 + 0 + + + + + 14:00 + 00:40 + Human and environmental Impacts of the actual “Artificial Intelligence” Industry, how to humanize? + + Side Event - Crane Hall BOF meetings + Side Event - Crane Hall BOF meetings + Side Event,Crane Hall BOF meetings + https://www.sfscon.it/tracks/crane-hall-bof-meetings-2024/ + + Roberto Innocenti + + 0 + 0 + + + + + + + 08:30 + 00:30 + Starting of the second day + + SFSCON + SFSCON + SFSCON + 0 + 0 + + + 13:00 + 00:30 + Closing of the SFSCON 2024 + + SFSCON + SFSCON + SFSCON + 0 + 0 + + + + + 08:30 + 00:30 + Welcome Coffee + + SFSCON + SFSCON + SFSCON + 0 + 0 + + + + + 09:20 + 01:00 + Let’s spark more Adas in our tech world! workshop + + Women* in tech + Women* in tech + <p>In this workshop we will dive into the possibilities of encouraging women*, especially girls, to thinker and to code. With tools such as the Free Software Foundation Europe’s (FSFE) illustrated book &#8220;Ada &amp; Zangemann &#8211; A Tale of Software, Skateboards, and Raspberry Ice Cream&#8221;everybody can create ways to spark the participation of women* and girls in tech.The book tells the story of Ada, a girl who loves to experiment with hardware and software. Ada realises how crucial it is to control technology and decides to stand up to the mighty inventor Zangemann.This workshop will also intend to explore ways to promote diversity and gender equity in the Free Software community and beyond. Together we will identify the challenges women* face in participating in such communities and discuss how we can create more inclusive environments, especially for the future generations.We encourage you to join us to share your experiences, ideas and perspectives, and collaborate in creating a more inclusive and diverse future in the Free Software community for all.</p> +<p><b>REGISTRATION NEEDED AT: </b><a href="https://pretix.eu/noi-digital/sfscon24/4260077/">https://pretix.eu/noi-digital/sfscon24/4260077/</a></p> +<p><em>*women, inter, trans and non-binary people.</em></p> +<p>Supported by: <strong><a href="https://fsfe.org/" target="_blank" rel="noopener">FSFE – Free Software Foundation Europe</a> </strong>&amp; <a href="https://shetechitaly.org/"><strong>SheTech</strong></a></p> + + Side Event - Women* in tech + Side Event - Women* in tech + Side Event,Women* in tech + https://www.sfscon.it/tracks/women-in-tech-track-2024/ + + Lina Ceballos + Ana Galan + + 0 + 0 + + + 10:40 + 00:55 + Knitting Our Internet workshop + + An interactive journey through the history of the Internet, and how to save it, together + An interactive journey through the history of the Internet, and how to save it, together + <p>“Knitting Our Internet” (KOI) is a workshop that explores the history of the Internet, and offers a perspective for a collective re-imagination of participatory, decentralized networks.</p> +<p>The workshop aims at questioning the very essence of today’s social media, exposing the critical limits posed by centralization, monopoly, and surveillance capitalism.</p> +<p>KOI was conceived in June 2023 by <a href="https://tommi.space">Tommaso Marmo</a>, who was looking for a simple yet critical and accurate way to introduce the concept of the Fediverse to non-experts.</p> +<p>The content and structure of the workshop matured over time, as it adapted to very diverse audiences of any ages and backgrounds. Furthermore, the experience is based on Tommaso’s academic research, mainly conducted for “<a href="https://tommi.space/csss/">Computer Sciences are Social Sciences</a>”, his bachelor’s thesis.</p> +<p><strong>Content</strong></p> +<p>During the activity, Tommaso will be using a yarn his grandmother gifted him to simulate centralized and decentralized networks, employing concrete metaphors to actively involve the participants. Every individual attending the workshop will be given a quote or an image relevant in the early and contemporary history of the Internet, and they will be asked to share it as the story unfolds.</p> +<p>Allowing them to understand the essential challenges society faces in relation to technological advancement, participants will be empowered to get involved in the Fediverse, especially understanding the importance of decentralization, Free Software, and the political role played by technical tools.</p> +<p><strong>Notes</strong></p> +<p>Given its malleable and open structure, the content of the workshop can be adapted, enriched, and edited to match the key topics of SFSCON 2024 in the best possible way.</p> +<p>The interactive parts of the workshop can be limited and a more theoretical presentation, diving in the thoughts of philosophers and computer sciences, could be added, too.</p> +<p>Supported by: <strong><a href="https://fsfe.org/" target="_blank" rel="noopener">FSFE – Free Software Foundation Europe</a></strong></p> + + Fediverse + Fediverse + Fediverse + https://www.sfscon.it/tracks/fediverse-track-2024/ + + Tommaso Marmo + + 0 + 0 + + + 11:40 + 00:15 + about:Fediverse + https://www.sfscon.it/talks/aboutfediverse/ + + An introduction to the decentralised social network + An introduction to the decentralised social network + <p>The Fediverse is a decentralised social network. But what does that mean?</p> +<p>In this talk I will give a short introduction to the Fediverse of 2024 and how it started to evolve in 2008. I will explain the basic concepts of ActivityPub as the protocol of the Fediverse and how the use of this open protocol has enabled a diverse group of Free Software projects to build a social network of (micro) blogging, video streaming, podcasting and event organising. A network where users can share and interact with each other regardless of the platform they use. What will be possible in the Fediverse of 2024? And how can you get started today?</p> +<p>This talk does not require any technical knowledge of the Fediverse. However, you should know what an email is.</p> + + Fediverse + Fediverse + Fediverse + https://www.sfscon.it/tracks/fediverse-track-2024/ + + Tobias Diekershoff + + 1 + 1 + + + 12:00 + 00:15 + How to build a website for the IndieWeb + https://www.sfscon.it/talks/how-to-build-a-website-for-the-indieweb/ + + <p>Have you ever heard of terms like POSSE, syndication, or webmention?<br /> +What about protocols like Web Sign-In or Micropub?<br /> +These terms are all connected to the IndieWeb, a community of websites built on open standards and open source technologies.</p> +<p>In today&#8217;s digital age, our online content and identities are more important than ever. Relying on random companies and social networks to manage them isn&#8217;t ideal. Instead, we should take control of our online presence by building our own website for the IndieWeb.</p> +<p>In this talk, you&#8217;ll learn how to:</p> +<p>1. Publish content on your website via a Micropub server.<br /> +2. Syndicate that content elsewhere (i.e., republish it on another website).<br /> +3. Gather comments from social networks and display them on your website.</p> +<p>We will achieve all of this using a static website and a few open-source tools.</p> + + Fediverse + Fediverse + Fediverse + https://www.sfscon.it/tracks/fediverse-track-2024/ + + Giacomo Debidda + + 1 + 1 + + + + + 09:20 + 00:15 + ARM Linux Laptops for Developers Status Report + https://www.sfscon.it/talks/arm-linux-laptops-for-developers-status-report/ + + <p>Intrigued by 22+ hours of battery life with comparable performance to current Intel / AMD systems? Starting from June this year a bunch of new ARM based laptops have been launched. All major laptop vendors launched devices, with over 33 to choose from at the time of this writing.</p> +<p>While ARM based laptops have been available for years, they mostly have been targeted as cheap entry level ChromeBooks or MacBooks designed for MacOS only. Luckily with this new wave of ARM based laptops there should be something for everybody.</p> +<p>The core question is how well they behave under Linux. Being designed for<br /> +Windows-on-ARM there is a risk Linux support is rudimentary at best. Stefan set out to test this and is reporting back here. Does a boot with UEFI work out of the box? Are all hardware features supported? Is the firmware for various drivers available? How is the performance?</p> +<p>And the most important question: how does it stack up against an Intel based laptop from the same timeframe as daily driver for software development?</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Stefan Schmidt + + 1 + 1 + + + 09:40 + 00:35 + Building a no-drama community + https://www.sfscon.it/talks/building-a-no-drama-community/ + + <p>In this talk, we&#8217;ll focus on how the AlmaLinux project has chosen to foster a positive, drama-free community in the Linux ecosystem.</p> +<p>&#8212;</p> +<p>Whether you&#8217;re starting a new community or wrangling an existing one, it can be tempting to fall into the trap of bonding over shared enemies to see short-term, high-numbers growth. But, benny has spent the last 10 years building drama-free communities with a different kind of success.</p> +<p>While many open-source projects rally members through shared frustrations or negativity, AlmaLinux took the more challenging path of uniting people through thoughtful dialogue and focusing on helping each other. By prioritizing respect, collaboration, and inclusivity, the AlmaLinux community grew healthier and stronger without the need for battle cries or infusing drama. Learn how this approach not only built a stable and thriving community around AlmaLinux, but is also setting a new standard for open-source communities &#8211; and proving that progress doesn’t have to be divisive.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + benny Vasquez + + 1 + 1 + + + 10:20 + 02:40 + Voices of Free Software: connect, learn, inspire! + + FSFE Italian Community Meeting + FSFE Italian Community Meeting + <p>You are invited to join the volunteers, supporters, and friends of the FSFE Italian Community!</p> +<p>Join us to learn from one another, find inspiration, and tackle future challenges together in the realm of Free Software. As a volunteer, you have a platform to share your story, discuss the most pressing topics surrounding Free Software, and connect with fellow enthusiasts. We encourage you to collaborate with the community on common initiatives and work together to forge new paths forward.</p> +<p>This is an <strong>hybrid event</strong>. You can join us either online or in person.</p> +<p><b>REGISTRATION NEEDED AT: </b><a href="https://pretix.eu/noi-digital/sfscon24/4259648/">https://pretix.eu/noi-digital/sfscon24/4259648/</a></p> +<p>Please note, the official language of the FSFE Italian Community is Italian, hence the event will be held in <strong>Italian</strong>.</p> +<p>Supported by: <strong><a href="https://fsfe.org/" target="_blank" rel="noopener">FSFE – Free Software Foundation Europe</a></strong></p> + + Side Event - FSFE - Italian community meeting + Side Event - FSFE - Italian community meeting + Side Event,FSFE,Italian community meeting + https://www.sfscon.it/tracks/fsfe-italian-community-meeting-2024/ + + Marta Andreoli + + 0 + 0 + + + + + 09:30 + 02:30 + Scratch Stories with Ada & Zangemann + + Side Event - MiniNOI x SFSCON + Side Event - MiniNOI x SFSCON + Side Event,MiniNOI x SFSCON + 0 + 0 + + + + + 16:30 + 00:30 + Winner proclamation and closing of the NOI Hackathon SFSCON Edition + + Side Event - Hackathon + Side Event - Hackathon + Side Event,Hackathon + 0 + 0 + + + + diff --git a/src/tests/assets/sfscon2024.session-removed.xml b/src/tests/assets/sfscon2024.session-removed.xml new file mode 100644 index 0000000..f27cbe1 --- /dev/null +++ b/src/tests/assets/sfscon2024.session-removed.xml @@ -0,0 +1,2231 @@ + + + + sfscon-2024 + SFSCON 2024 + + + Ethics, Policy, Legal & Economics + Data Spaces + Open Hardware + Developers + Community Building + Cybersecurity + Fediverse + DevOps + Side Event - Hackathon + Side Event - School Reading + Side Event - MiniNOI x SFSCON + OW2 + Side Event - Women* in tech + Side Event - Crane Hall BOF meetings + Side Event - FSFE - Italian community meeting + + + + + 08:30 + 00:30 + Check-in SFSCON 2024 + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + 0 + 0 + + + + + 09:00 + 00:15 + Opening SFSCON 2024 + https://www.sfscon.it/talks/opening-sfscon-2024/ + + <p>Opening SFSCON 2024</p> + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Philipp Achammer + + 1 + 1 + + + 09:15 + 00:05 + Greetings from NOI + https://www.sfscon.it/talks/greetings-from-noi/ + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Vincent Mauroit + + 1 + 1 + + + 09:20 + 00:05 + Greetings from Gruppo FOS + https://www.sfscon.it/talks/greetings-from-gruppo-fos/ + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Giorgio Allasia + + 1 + 1 + + + 09:25 + 00:05 + Greetings from Telmekom + https://www.sfscon.it/talks/greetings-from-telmekom/ + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Sergio Vemic + + 1 + 1 + + + 09:30 + 00:30 + Keynote speaker &#8211; coming soon + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Emily Omier + + 0 + 0 + + + 10:00 + 00:15 + European SFS Award 2024 + + Free Software Foundation Europe (FSFE) and Linux User Group Bozen-Bolzano-Bulsan assign the “European SFS Award” + Free Software Foundation Europe (FSFE) and Linux User Group Bozen-Bolzano-Bulsan assign the “European SFS Award” + <p>The award is given to a person who contributed to the introduction of the culture of Free Software.</p> + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + 0 + 0 + + + 10:15 + 00:15 + SFS Award 2024 + + Linux User Group Bozen-Bolzano-Bulsan assigns the “South Tyrol Free Software Award” + Linux User Group Bozen-Bolzano-Bulsan assigns the “South Tyrol Free Software Award” + <p>Every year the Linux User Group Bozen-Bolzano-Bulsan assigns the &#8220;South Tyrol Free Software Award&#8221; (SFS Award). The award is given to a person who contributed to the introduction of the culture of Free Software in the Province of Bolzano.</p> + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + 0 + 0 + + + 10:40 + 00:20 + Open Source in EU policy + https://www.sfscon.it/talks/open-source-in-eu-policy/ + + Making laws with the Open Source community in mind + Making laws with the Open Source community in mind + <p>Over the past three years, the Open Source Community has had to mobilise to fix flaws in European Union policy initiatives, like the Cyber Resilience Act, Product Liability Directive, and the AI act, all of which could have negatively impacted Open Source developers.</p> +<p>This talk explores why this mobilisation was necessary, how the Community is preparing for future legislation, and how the Open Source community has changed the way the EU makes and implements laws.</p> +<p>It will then delve into the particular case of the AI act and its Open Source AI exemption. It will cover how the exemption came about, why it has prompted a wave of AI open-washing, and what can be done to fix it.</p> + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Jordan Maris + + 1 + 1 + + + 11:00 + 00:15 + Let’s all get over the CRA! + https://www.sfscon.it/talks/lets-all-get-over-the-cra/ + + how I stopped worrying about the consequences of the CRA for Open Source innovation in Europe and moved to something else + how I stopped worrying about the consequences of the CRA for Open Source innovation in Europe and moved to something else + <p>The adoption of the CRA (Cyber Resilience Act) has caused some real anxiety among the FOSS ecosystem. Even in its amended form, many questions remain opened and debated, and more to the point, a lot of uncertainty still surrounds it, not just at the level of its general architecture but also at the implementation level.<br /> +It is perhaps fair to mention that the CRA itself does not exist in a void and is building on already existing regulations and ideas. However, it should be explained how the CRA itself was not born inside the institutions of the European Union but is an almost pure product of governmental cyber security circles and agencies. Because of that, the digital ecosystem at large is at pain understanding some of its logic. This talk will start with what we know and what we can infer from the CRA, and how it fits within the general regulatory framework of the European Union. We will thus clarify the following points:</p> +<p>&#8211; what does the CRA mean in terms of software security assessment and certification &#8211; and how that plays a key role in understanding what the CRA is and what it is not<br /> +&#8211; CRA within the European regulatory framework<br /> +&#8211; CRA implementation: the bad, the ugly, and the unknown</p> +<p>We will then discuss what the concerns are for the FOSS communities. Most notably:</p> +<p>&#8211; barriers of entry for Free Software companies, esp. the small and medium ones<br /> +&#8211; legal inability to develop Free and Open Source Software<br /> +&#8211; what will Free and Open Source software foundations do in edge cases and what are they expected to bring in terms of guidance to the companies contributing to their projects</p> +<p>It will then discuss how we can best prepare for it, and make some suggestions on how to solve FOSS specific challenges related to CRA. In particular the talk will explore the following possibilities:</p> +<p>&#8211; evolving the role or cross project security teams<br /> +-promoting best practices in development (CI CD, code auditability) turning the CRA against proprietary software practices<br /> +&#8211; Pooling security audits<br /> +&#8211; Better release management</p> +<p>Last but not least, this talk will discuss the economics behind the CRA and why this may not end up being less of a problem than we think.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Charles-H. Schulz + + 1 + 1 + + + 11:21 + 00:15 + On the ethical challenges raised by robots powered by Artificial Intelligence + https://www.sfscon.it/talks/on-the-ethical-challenges-raised-by-robots-powered-by-artificial-intelligence/ + + <p>The integration of generative AI into robot systems has the potential to boost several industries by enabling robots to understand their environments, create courses of action, and autonomously react to complex situations. However, the adoption of generative AI techniques brings about profound ethical concerns that need to be addressed to ensure the responsible development and deployment of such technologies. In this talk, I will explore the multifaceted ethical challenges associated with generative AI-powered robots, focusing on issues such as robot autonomy, decision-making, accountability of robot actions, and their impact on humans and society as a whole.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Fulvio Mastrogiovanni + + 1 + 1 + + + 11:40 + 00:15 + CRA & PLD Liability rules and Software Freedom + https://www.sfscon.it/talks/cra-pld-liability-rules-and-software-freedom/ + + <p>With CRA and PLD liability rules for software have been introduced with a broad exception for Free Software. After long and intense debates individual developers and non for profit work are safeguarded. I will shed light on those new rules.</p> +<p>Already at an early stage, the FSFE argued in a hearing in the EU Parliament, for the inclusion of clear and precise exemptions for Free Software development in the legislation and for liability to be transferred to those who significantly financially benefit from it on the market.</p> +<p>In the future, individual developers and non-profit development of Free Software will be exempt from the CRA and the PLD. Nevertheless, the wording in both the regulations are different and a standardisation processes and guidelines are still being drawn up.</p> +<p>In this talk I will discuss what this new regulation means for software freedom in future and what happens at this stage and how to be involved in implementation.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Alexander Sander + + 1 + 1 + + + 12:00 + 00:15 + Cyber Resilience Act, already too late to comply? + https://www.sfscon.it/talks/cyber-resilience-act-already-too-late-to-comply/ + + Compliance is dead, long live compliance + Compliance is dead, long live compliance + <p>If you are taking your decisions now for complying with all the requirements of CRA, you might be too late to find adequate external resources to comply , although &#8212; at submission time &#8212; it is not yet in force. So what are you gonna do? Being open source would help only to a certain point, if you monetize the software. Some guidance tips for Open Source projects and businesses.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Carlo Piana + Alberto Pianon + + 1 + 1 + + + 12:20 + 00:15 + AI no-code for marketing + https://www.sfscon.it/talks/ai-no-code-for-marketing/ + + How artificial intelligence can really help create a marketing strategy + How artificial intelligence can really help create a marketing strategy + <p>The process of creating a Marketing strategy and the subsequent steps of drafting editorial calendars, selecting channels, designing, and publishing advertising campaigns, is a complex journey.<br /> +Marketers have always dedicated a lot of time and resources to creating the most effective strategy for a brand’s success and translating it into concrete actions.<br /> +Today, is it possible to use artificial intelligence as a tangible support for the development of the strategic, technical, and operational assets necessary to create a successful marketing plan?<br /> +Let’s discover ATENA together, a methodology and an easy process through which you can simplify, accelerate, and enhance the quality of your marketing strategy, thanks to the practical support of AI.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Alessandro Agnati + + 1 + 1 + + + 12:40 + 00:15 + We went to court against Apple &#8211; a case for Software Freedom + https://www.sfscon.it/talks/for-the-right-of-general-purpose-computers/ + + Breaking lock-ins over devices with Free Software + Breaking lock-ins over devices with Free Software + <p>Our smartphones, tablets, laptops, and other connected devices are general purpose computers. That means we can potentially run any software we want to make full use of the hardware. This potential is fostered by Free Software.</p> +<p>However, device manufacturers, vendors, and internet platforms have been restricting software freedom by exercising their monopolistic control over end-user equipment. This power is used over key features and components of devices such as operating systems, browsers, and app stores.</p> +<p>Basic freedoms such as installing and uninstalling software are being unfairly limited by these companies, commonly referred to as &#8220;gatekeepers&#8221;, because of their monopolistic control over devices.</p> +<p>As a concrete example, this talk will present the policy and legal work of FSFE in denouncing the detrimental commercial practices of a worldwide known gatekeeper: Apple.</p> +<p>Apple&#8217;s monopolistic power over its devices is detrimental to Free Software and a high risk for the right of general purpose computers. The company&#8217;s &#8220;notarization&#8221;, its barriers to software freedom and lack of interoperability are highly negative to Free Software.</p> +<p>In conclusion, this talk will present Device Neutrality as a policy solution to enable end-users to bypass gatekeepers in order to run Free Software independently of the control exercised by hardware manufacturers, vendors, and platforms. Device Neutrality can enable end&#8211;users to regain control over their devices.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Lucas Lasota + + 1 + 1 + + + 13:00 + 00:15 + 25 Years of Copyleft Enforcement: The Road Ahead for Defending Software Rights + https://www.sfscon.it/talks/25-years-of-copyleft-enforcement-the-road-ahead-for-defending-software-rights/ + + <p>In 1999, I worked my first GPL enforcement matter: a large storage had made proprietary modifications to GNU tar and failed to release the complete, corresponding source code to its customers. In early 2000, I did my first “CCS check” (complete, corresponding sourcecode check) — wherein one attempts to build the “CCS candidate” provided by the vendor to investigate whether the CCS candidate is actually complete, and whether it corresponds to the binaries that were distributed.</p> +<p>In those days, violations of copyleft licenses were rare, and once uncovered, companies eventually corrected their behavior. Yet, even then, it took years of work to convince the company to comply. And often, by the time compliance was achieved, a new generation of the product was released.</p> +<p>25 years later, we face the same problems with nearly every vendor.<br /> +Almost every product on the market today contains Linux, BusyBox, the GNU C Library, GNU Bash, and dozen other packages licensed under the GPL and/or LGPL. Almost none of these companies, even if an offer for source code is made, provide CCS.</p> +<p>This talk will look both to the past and future as we investigate software rights and freedoms of the average consumer, and how we reached this difficult situation. Attendees can learn the history of copyleft and its enforcement, and leave with an understanding of how much work remains and what individuals can do to make a real impact on the rights of users under copyleft.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Bradley Kuhn + + 1 + 1 + + + 13:20 + 00:15 + SPDXv3: Advancing Transparency in Software + https://www.sfscon.it/talks/spdxv3-advancing-transparency-in-software/ + + A newly released standard for complete information + A newly released standard for complete information + <p>SBOMs are a crucial tool for understanding the composition of software, which is particularly important in the context of managing security risks and licensing compliance. Recent regulatory efforts from, among others, the US and the EU, explicitly move towards requiring SBOM for each software delivery.<br /> +SPDX (System Package Data Exchange) is a freely available ISO standard that provides a set of specifications for communicating SBOM information. It offers a common format for companies and organizations to share important data accurately and efficiently.</p> +<p>This presentation will delve into the details of the newly released version of SPDX, providing a comprehensive understanding of their importance in the software industry.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Alexios Zavras + + 1 + 1 + + + 13:40 + 00:15 + (re)classifying FOSS licenses + https://www.sfscon.it/talks/reclassifying-foss-licenses/ + + New strategy for classifying licenses in a better way + New strategy for classifying licenses in a better way + <p>There are many efforts trying to classify licenses, for different use cases such as checking compatibility or for complying with the license terms. Most of these efforts seem to, explicitly or implicitly, have a certain use case in mind.</p> +<p>This project sets out to:<br /> +Consider provisioning case &#8211; how is the software provided to your user (e.g. binary distribution, SaaS, Web UI)<br /> +Consider use case &#8211; how is the software used (e.g. compiler, library)<br /> +Trust model &#8211; why should you trust the contributor of a classification or you should be able to exclude a contributor’s work etc<br /> +Identify and generalize FOSS license clauses<br /> +Identify and generalize when a clauses is triggered<br /> +Determine how clauses are compatible with each other (a license clause matrix)<br /> +Identify the clauses and triggers for each license</p> +<p>Keeping track of how 100 licenses are compatible with each other will result in a matrix with 10 000 (100 x 100) values. This is hard to maintain. Extending to 200 licenses requires 40 000 values. By instead looking at the license clauses we will end up with a much smaller problem, assuming we identify 20-30 of them, which will result in a matrix of 400-900 values. This is big, but maintainable. Adding a new license will not increase the size of the (license clause) matrix, which means that our approach scales much better. From the license definitions and license clause matrix we can compile a license compatibility matrix (for fast compatibility lookup).</p> +<p>This project sets out to provide to users:<br /> +A license obligation checklist for each provisioning case &#8211; for making compliance checks easy<br /> +A license compatibility matrix for each provisioning case &#8211; for fast compatibility lookup</p> +<p>All data and source code will be released under FOSS licenses.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Henrik Sandklef + + 1 + 1 + + + 14:00 + 00:15 + Lessons from the EU&#8217;s Next Generation Internet Initiatives + https://www.sfscon.it/talks/lessons-from-the-eus-next-generation-internet-initiatives/ + + What We've Learnt From Looking At 500 Free Software Projects + What We've Learnt From Looking At 500 Free Software Projects + <p>The FSFE is a consortium member of the EU&#8217;s Next Generation Internet initiatives (https://fsfe.org/activities/ngi/ngi.en.html). As part of our work there over the past 6 years, we have looked at hundreds of participating Free Software projects, to assist them with their legal and licensing questions, as well as to help them become REUSE compliant.</p> +<p>This talk will speak about some simple trends in Free Software legal and licensing that we&#8217;ve observed over the years in independent Free Software projects and their developers, and how these affect aspects of the Free Software ecosystem.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Gabriel Ku Wei Bin + + 1 + 1 + + + 14:20 + 00:15 + The ZOOOM project: final results and future outlooks + https://www.sfscon.it/talks/the-zooom-project-final-results-and-future-outlooks/ + + <p>The ZOOOM project, concluding in Sept 2024, aimed to raise awareness about the role of open licenses (open source software, open hardware, and open data &#8211; 3Os) in intellectual property valorization. In this talk, we&#8217;ll summarize key results, share recommendations for businesses leveraging 3Os, and demonstrate tools developed to aid knowledge generators and supporting organizations in navigating the legal and business implications of 3Os. Additionally, we&#8217;ll discuss the future of ZOOOM and its potential impact on the industry and research.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Elisa Morganti + + 1 + 1 + + + 14:40 + 00:15 + AI Law & Ethics: developing responsible AI systems + https://www.sfscon.it/talks/ai-law-ethics-developing-responsible-ai-systems/ + + <p>The aim of this talk is to explore AI law and ethics in developing responsible AI systems. It covers the forthcoming AI Act and EU regulations, focusing on accountability, risk management, and privacy-by-design. Through use cases, it shows how developers can ensure AI transparency, fairness, and compliance, balancing innovation with ethics. Attendees will gain insights for creating sustainable, ethical AI solutions.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Federico Sartore + Francesco Vadori + + 1 + 1 + + + 15:00 + 00:15 + Impact and Innovation: The Crucial Role of OSPOs in Shaping a More Sustainable Capitalism + https://www.sfscon.it/talks/impact-and-innovation-the-crucial-role-of-ospos-in-shaping-a-more-sustainable-capitalism/ + + <p>In an era where sustainability and responsible innovation are not just valued but expected, Open Source Program Offices (OSPOs) stand at the forefront of a transformative wave that merges open innovation with sustainable business practices. This session explores the pivotal role of OSPOs in fostering open innovation environments that not only drive technological advancement but also align with the principles of impact-oriented capitalism</p> +<p>We will delve into how OSPOs can leverage open source ecosystems to catalyze change within their organizations, promoting not just compliance and security but also environmental, social, and governance (ESG) goals. Through case studies and practical insights, attendees will learn how integrating OSPO strategies with corporate sustainability objectives can create a powerful synergy that propels companies toward a more ethical and profitable future.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Stefano Pampaloni + + 1 + 1 + + + 15:20 + 00:15 + From Personalized to Programmed + https://www.sfscon.it/talks/from-personalized-to-programmed/ + + The Dilemma of AI Customization + The Dilemma of AI Customization + <p>When considering the core values of mass customization, such as individual expression, fun in co-creating, and creativity, AI may introduce disadvantages, potentially leading to the homogenization of experiences. This lightning talk aims to explore the potential risks and drawbacks of utilizing AI in mass customization, highlighting the tension between leveraging technology for customization and preserving the unique human elements that form the foundation of personalized experiences. Could the reliance on algorithms diminish the consumer’s role in the creative process? If so, it might challenge the essence of what makes mass customization truly unique and innovative.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Thomas Aichner + + 1 + 1 + + + 15:40 + 00:15 + Fostering Innovation in IT Businesses through Open Source Software Involvement + https://www.sfscon.it/talks/fostering-innovation-in-it-businesses-through-open-source-software-involvement/ + + <p>All IT companies depend on free and open source software to some extent. Once they reach a certain size, they spontaneously become supporters of the projects on which they base their business. This happens because of first order consequences: my business depends on it, if I help it strive, my business will benefit.<br /> +In this talk, we will address the second-order consequences of software engineers interacting with open source projects, and show why dedicating internal resources to this activity is an effective strategy for enabling the discovery of new or modified (software) entities, which is the prerequisite for innovation.<br /> +The benefits are visible for companies of any size, even if their business does not depend on a specific project to which they could contribute: compelling arguments will be presented to motivate business owners to encourage their IT staff to engage in open source activities (and to developers to convince their bosses).</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Daniele Gobbetti + + 1 + 1 + + + 16:00 + 00:15 + Tackling Openwashers, Freeloaders and Cuckoos + https://www.sfscon.it/talks/tackling-openwashers-freeloaders-and-cuckoos/ + + How to safeguard the Free Software market against unfair competition + How to safeguard the Free Software market against unfair competition + <p>Companies that produce and sell Free Software face a problem: some competitors use unethical and destructive means to compete, making their products cheaper and winning bids. This kind of market behaviour is increasingly becoming a problem for Free Software producers.</p> +<p>Destructive practices include marketing proprietary software under the guise of being Free Software, whether by using free/open wording, by introducing new licences that falsely appear to be free, or by imposing additional barriers that make it more difficult to use the freedoms offered by Free Software.</p> +<p>Other competitors sell Free Software products without contributing to their development and maintenance, profiting from the work of others but giving nothing back to the community. This allows them to offer low prices while raising the costs of maintenance for the original manufacturers. For some players, there seems to be no limit to their creativity when it comes to undercutting competitors and winning bids.</p> +<p>The Free Software Foundation Europe has been analysing these and other problematic market practices over the last few years. In this talk we will take a closer look at them and show why they harm Free Software manufacturers and the Free Software ecosystem. We will then discuss ways to limit the success of such practices.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Johannes Näder + + 1 + 1 + + + 16:20 + 00:15 + Web Accessibility is actually well-forgotten old + https://www.sfscon.it/talks/web-accessibility-is-actually-well-forgotten-old/ + + <p>Trends are cyclical, even in the tech world. A few years ago, everyone was talking about D&amp;I in the workplace. This season, web accessibility absolutely occupies the first lines of code. How is it shown? Let&#8217;s talk about it &#8211; many do not understand how to implement it in their project.</p> +<p>First, relax. This is a really complex topic that requires not only a well-created website, but also communication with real users who cannot fully use the Internet, for example, without a screen reader.</p> +<p>A checklist that will convince you to try implementing WA into your application:</p> +<p>◦ What can be adapted for WA?<br /> +◦ How is WA testing done?<br /> +◦ How to use AI in WA?</p> +<p>If we haven&#8217;t convinced you, then look at WA from the point of view of strengthening your personal brand in the market.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Sofia Etingof + Juri Solovjov + + 1 + 1 + + + 16:40 + 00:15 + LibreOffice as JavaScript idiomatic WebWidget + Library + https://www.sfscon.it/talks/libreoffice-as-javascript-idiomatic-webwidget-library/ + + Making LibreOffice a native part of the web, using FOSS for highly customizable office document handling in the browser, based on WASM. + Making LibreOffice a native part of the web, using FOSS for highly customizable office document handling in the browser, based on WASM. + <p>LibreOffice can be highly integrated into desktop and server applications and we wanted to make this also possible for web apps. Running fully client side with Web Assembly, LibreOffice can now be used and customized by a JavaScript idiomatic API, becoming an easy usable component for web development. With this Free Software opens the door to a completely different approach for bringing office document handling into the browser, then from what&#8217;s known from Google Docs and Co.. Use cases may be the integration of widgets with rich text documents, including classic desktop macros, into browser based applications or enabling JavaScript to interact live with values in spreadsheets. But LibreOffice can also work as background WASM library, converting documents from and to all supported formats like ODF (ODT, &#8230;), MS formats (DocX, XlsX, Doc, &#8230;), PDF or HTML, while applying custom conversion filters for things like macro sanitization.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Moritz Duge + + 1 + 1 + + + 17:00 + 00:15 + Using software tools and AI to audit e-commerce food regulations + https://www.sfscon.it/talks/using-software-tools-and-ai-to-audit-e-commerce-food-regulations/ + + <p>Selling food products on a website or e-commerce platform in Italy is subject to the Food Information of Consumers (FIC) regulations. These regulations dictate mandatory information that must be communicated on the product page, with fines for non-compliance. In this talk, we will cover the key guidelines and legal requirements, and demonstrate how we can use software tools and artificial intelligence to check large quantities of product listings for discrepancies. Join us to learn how to streamline the process of verifying food information and enhance consumer trust.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Davide Montesin + + 1 + 1 + + + 17:20 + 00:15 + Tag manager + https://www.sfscon.it/talks/tag-manager/ + + <p>Presentation of our tool, which is an free alternative to Google Tag Manager and also helps manage cookie banners.</p> +<p>Features:<br /> +&#8211; code injector<br /> +&#8211; code templating<br /> +&#8211; cookie banner manger</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Sandro Antonucci + + 1 + 1 + + + 17:40 + 00:15 + State of Microsoft Windows Refund (2024) + https://www.sfscon.it/talks/state-of-microsoft-windows-refund-2024/ + + Getting a Refund of your Microsoft Windows License - present and future + Getting a Refund of your Microsoft Windows License - present and future + <p>If you are a lover of the Free Software movement you probably already tried something else than Microsoft Windows on a computer.</p> +<p>What you may not know, is that computer resellers usually charge end-users with the Fee of the Microsoft Windows License, even before you accept the Microsoft Terms of Services, and even if you completely want to uninstall Windows from your computer.</p> +<p>This is a critical Tech Neutrality issue that fuels non-European proprietary software houses. What to do?</p> +<p>&#8211; heritage of Luca Bonissi against Big Tech(s)<br /> +&#8211; current status and problems<br /> +&#8211; opportunities in Europe, and partnership between Free Software Foundation Europe and Italian Linux Society.</p> +<p>Thanksgiving to community members who tried the procedure, and simplifying that procedure.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Valerio Bozzolan + + 1 + 1 + + + + + 10:30 + 00:30 + Ada & Zangemann + + Side Event - School Reading + Side Event - School Reading + Side Event,School Reading + 0 + 0 + + + + + 11:00 + 00:15 + Open Access for Museum Collections and Research + https://www.sfscon.it/talks/open-access-for-museum-collections-and-research/ + + <p>The digital era has revolutionised the way we access information and interact with it. Museums, as custodians of cultural and historical artefacts, can benefit substantially from this transformation. Open Access and FOSS can greatly increase the potential of museums for public outreach: enhance their educational impact and inspire new forms of cultural engagement and knowledge discovery. For example, by digitising collections and enabling Open Access for diverse audiences, accessibility barriers are eliminated and thousands of hidden treasures become available to both researchers and the wider public. Additionally, innovative data visualisations via FOSS platforms can reveal compelling insights into object collections and the research associated with them; Open Access can thus make complex research accessible and engaging to a broader audience. Through such practices, museums can democratise their activities and enrich the visitor experience. The process is not without obstacles; common challenges museums face in adopting Open Access policies are copyright issues, data privacy, and resource limitations.</p> +<p>The presentation will discuss the aforementioned opportunities and issues currently emerging in the museum sector. The talk will be illustrated with examples from the Deutsches Museum in Munich, the world’s largest museum of science and technology.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Artemis Yagou + + 1 + 1 + + + 11:20 + 00:15 + Journeying through Data Spaces – New Path to Interoperability? + https://www.sfscon.it/talks/journeying-through-data-spaces-new-path-to-interoperability/ + + <p>Data spaces play a pivotal role in advancing digitalisation and interoperability within and across different business domains, both on a national level and cross-borders. However, it&#8217;s not a new concept since its roots date back to 2005. The definition has evolved over the years and today it covers all four layers of interoperability defined by the European Interoperability Framework (EIF).</p> +<p>Today, the term data space has several different definitions depending on whom you ask. Also, multiple international initiatives are working on data spaces to create common governance models, specifications, reference implementations, etc. The aim of this talk is to discuss the data space concept, different actors working on data spaces and their roles and responsibilities, and available specifications and building blocks.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Petteri Kivimäki + + 1 + 1 + + + 11:40 + 00:15 + DOOF – an Open Source Orchestration Framework for Decentralized Consent Management + https://www.sfscon.it/talks/doof-an-open-source-orchestration-framework-for-decentralized-consent-management/ + + <p>DOOF stands for Data Ownership Orchestration Framework. It is a framework developed for NGI Trustchain Project within a broader Next Generation Internet scheme of the EU in order to address a lack of decentralization in consent management regarding users’ sharing of their data. The aim of DOOF is to revolutionize personal data governance and normalise the deployment of consent management and privacy enhancing technologies. It uniquely enables individuals to control their rights over data sharing, fostering greater trust and regulatory compliance, essential for building a resilient and transparent data economy.<br /> +DOOF targets the gap in current centralized consent management, where GDPR and Data Act demand seamless data exchange and regulatory compliance. Yet the sharing and consent management regarding users’ data is centralized &#8211; a responsibility of the data intermediary &#8211; which comes with great costs and liabilities.<br /> +With DOOF, Ecosteer aims to separate and decouple the layer of physical data transferring from the layer of consent management. DOOF offers companies a framework that allows them to easily adopt Privacy Enhancing Technologies (PETs) for the actual sharing of data and enforcement of users’ decisions.<br /> +The framework consists of a set of SDKs, libraries and a Smart Contract for decentralised consent management. The main component of the framework is a worker pipeline, consisting of extensible, plug-in processors. This pipeline contributes to the low-code movement, offering a framework that can be easily adapted to different business needs. Companies can easily build verticals on this existing framework by just extending some of its functionalities.<br /> +This talk will focus on the concept of decentralized consent management as well as pipeline-based orchestration framework, outlining the process of creating a novel, re-usable and extensible open-source project.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Georgiana Bud + + 1 + 1 + + + 12:00 + 00:15 + Accelerating territory&#8217;s development through Open Data + https://www.sfscon.it/talks/accelerating-territorys-development-through-open-data/ + + Open Data Hub and south tyrolean examples + Open Data Hub and south tyrolean examples + <p>In recent years, Open Data has revolutionized the way governments, companies and individuals access and use information. The openness of public and private data represents a milestone on the path towards a more transparent, participatory and competitive society.<br /> +Open Data represent a resource for society and businesses and contribute to the development of a territory. This added value manifests itself in various forms, including transparency and democratic participation, technological innovation, economic development and improved services.<br /> +The talk will focus on specific case studies from the Open Data Hub in the Autonomous Province of Bolzano, a region which has shown a strong commitment to the adoption and promotion of Open Data.<br /> +Through the analysis of these cases, the aim is to demonstrate how the initiatives based on Open Data have led to concrete and tangible results, offering useful and applicable insights also in extra-regional contexts.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Luisa Marangon + + 1 + 1 + + + 12:20 + 00:15 + Sensor Things API QGIS core provider + https://www.sfscon.it/talks/sensor-things-api-qgis-core-provider/ + + <p>Sensor Things API (STA, in short), is an OGC specification for storing and retrieving (timeseries of) Sensor Observations.</p> +<p>FROST-Server, developed by Fraunhofer IOSB, is one of the most consolidated implementations of STA with a very detailed documentation and a lot of background information. The implementation includes a REST endpoint to insert, modify and retrieve STA entities with a query language based on OASIS Odata URL patterns and query options.</p> +<p>A QGIS experimental plugin, developed by Deda Next srl in 2022 and implemented in python within the EU project Air-Break, is currently available to connect to STA-compliant endpoints and retrieve sensor data (e.g. European Air Quality data from this endpoint). The plugin has an embedded data provider which is currently designed to retrieve sensors&#8217; locations as geometrical features and then request the time series of observations for specific locations.</p> +<p>However, in order to offer support to a wider range of use cases and more complex queries on STA model entities, Faunalia and DedaNext (funded by BRGM) started to plan for a dedicated STA data provider for GIS: a development group was set up involving the QGIS community, formal acceptance of the proposal was sought within the QGIS community (QEP #257) and possible development options for the provider (ex: python vs C++) were analyzed. As STA is an OGC standard, it seemed appropriate to implement it in C++ as a core element of QGIS.</p> +<p>Development has therefore been carried out in close interaction with the QGIS developer community with the focus on supporting complex STA queries, implementing among other things:</p> +<p>&#8211; expansion of relations among model entities;<br /> +&#8211; independent attribute filtering and sorting on all entities;<br /> +&#8211; efficient data caching to limit unnecessary data transfers;</p> +<p>This new core element is available from QGIS version 3.37 (currently only available as nightly release).</p> +<p>Finally, plans are underway to develop a new version of the QGIS STA plugin (originally developed by Deda Next within project AirBreak) focused on data exploration and analysis that will be able to leverage on the newly released core STA data provider to support a wider range of use cases, such as:</p> +<p>&#8211; Time series analysis: This is the case of the old STA plugin. Fetch Locations, show them on the map. Then, upon selection of one location, fetch all related Things and Datastreams, and finally, fetch the Observations of the desired Datastream to be shown in a table or plot;<br /> +&#8211; Space-time series analysis: Given a selected set of Datastreams from a moving sensor, get all the FeaturesOfInterest of those Datastreams and plot them on the map, so to have a view of the path of the moving sensor and a hold on its values on every part of that path;<br /> +&#8211; Monitoring and inspection: Fetch all the latest observations of all Datastreams (or a selection based on the ObservedProperty) and show these at their Locations, styled by the result of the latest Observation of a given ObservedProperty. Then, in a second phase (eg. if a value is over a threshold), inspect the full timeseries of that one Datastream.<br /> +&#8211; Tracking of moving things: Show all Things with their current Location and their HistoricalLocations with the Temporal Controller (time slider).</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Matteo Ghetta + Luca Giovannini + + 1 + 1 + + + 12:40 + 00:15 + EO4MULTIHAZARDS Web Application + https://www.sfscon.it/talks/eo4multihazards-web-application/ + + <p>The EO4MULTIHA project (https://eo4multihazards.gmv.com/), funded by the European Space Agency, aims at developing an open database gathering and harmonizing event information coming from already existing event databases to support multi-hazard(-risk) research.<br /> +To pursue this aim, this project which has been developed in the EURAC research, Center for Sensing Solutions, presents a comprehensive web application designed to analyze and visualize multi-hazard events, developed using Django and PostgreSQL. Leveraging the strengths of open-source technologies, the application provides a robust platform for researchers, policymakers, and the public to access and understand the complexities of multi-hazard scenarios. The main parts of this web application is explained in the following paragraphs:</p> +<p>(i) The core of the application is built with Django, a high-level Python web framework known for its rapid development capabilities and clean, pragmatic design. PostgreSQL, a powerful and scalable open-source relational database system, ensures efficient data storage and management. Together, these technologies offer a reliable and flexible foundation for handling diverse and large datasets.</p> +<p>(ii) To visualize the events, Leaflet Map which is an open source contributor to the OpenStreet Map has been used.</p> +<p>(iii) To populate the database, the application exploits various RESTful APIs, integrating data from multiple sources, including satellite imagery, climatological records, in-situ measurements, and relevant statistical data. This multi-source approach allows for a comprehensive characterization of risks, exposures, and susceptibilities associated with multi-hazard events benefiting from the Open Data Standards such as OGC Standard.</p> +<p>(iiii)Key features of the application include spatial and temporal filtering of events, cross-linking of data sets for enhanced reusability, and compliance with open standards such as RESTful APIs and OGC standards. The platform is designed to be expandable, with the potential to incorporate additional locations and datasets in the future.</p> +<p>By providing an accessible online platform, this web application aims to support the understanding and analysis of multi-hazard events, facilitating informed decision-making and effective disaster management strategies. The use of open-source technologies and the integration of diverse data sources underscore the project&#8217;s commitment to innovation, scalability, and community-driven development.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Mahtab Niknahad + + 1 + 1 + + + 13:00 + 00:15 + BASIC CORE South Tyrol + https://www.sfscon.it/talks/basic-core-south-tyrol/ + + A project to solve the topographical complexity of the National Spatial Data Catalogue + A project to solve the topographical complexity of the National Spatial Data Catalogue + <p>The project has its roots in a precise and simplified cartographic updating methodology introduced by the Consortium of Municipalities of the Province of Bolzano in the early 2000s. This methodology, which was consolidated over the years, could no longer be applied following the adoption of the Territorial Data Catalogue (Ministerial Decree 10.11.2011 &#8220;Technical rules for defining the content specifications of geotopographic databases&#8221; and subsequent amendments) due to the complexity and articulation of the new national model. The primary objective of the project was to research and define a minimum set of information that could adequately describe the territory within the typical use context of the public administration, ensuring its sustainability in terms of the ability to keep it updated and aligned with the transformations of the territory. Simplifying the definition and understanding of the basic technical layer that every public administration producing geographic data must guarantee within their institutional activities for geotopographic databases is a fundamental step to adequately support territorial management. Lightened of the informational content already managed by the Provincial Administration within archives or sectoral Information Systems, and consequently already included in existing and consolidated maintenance and updating flows, as well as everything that can be considered three-dimensional data nowadays obtainable through faster and more accurate systems, the Basic Core (BC) specification was produced by reorganizing and simplifying the information levels contained in the National Territorial Data Catalogue with reference to the identified minimum subset of required information known as the National Core (NC). To make it practically usable, only the themes considered objectively useful and easily updatable were included in the Basic Core. Our presentation will outline the key points that enabled the design of the Basic Core content specification and illustrates the technological tools developed, as well as the automatic transformation and simplification procedures that led to the significant reduction in the number of object classes provided by the National Core (from 59 to only 23), demonstrating that the Basic Core project is not a merely theoretical exercise, but a practical and concrete application currently tested and successfully used in South Tyrol. The specifically developed Dashboard for managing, correcting and updating the provincial Geotopographic Database, built on the basis of this new simplified specification, will be explained in detail. This dashboard allows effective operation on every management aspect, including the crucial task of sharing maintenance responsibilities between the Provincial and Municipal levels, thus ensuring the full efficiency of this fundamental geographic base. Particular attention will be given to illustrating the guided editing functionality available directly from the online interface, as well as the options for creating and exporting QGIS projects. QGIS projects are designed to perform the most significant and advanced corrections and/or updates. We will conclude the overview of this innovative system with a demonstration of the processes for reimporting and validating the updated data. Finally, practical cases in which the Basic Core has been used will be presented, as well as future developments, already planned and those still under evaluation, that the system will receive in order to refine and make its use more robust.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Edoardo Scepi + + 1 + 1 + + + 13:20 + 00:15 + Sharing Connects People + https://www.sfscon.it/talks/sharing-connects-people/ + + The experience of Think Open at CIMeC + The experience of Think Open at CIMeC + <p>Think Open is an Open Science initiative born within CIMeC in 2018 whose goal is to build a virtual space within which researchers at the Center can share different kinds of outputs from research, integrating and merging information from different sources and stages of the knowledge-building process. A number of achievements have been made over the years, both from the point of view of training (seminars, hands-on, courses for doctoral students, awards, etc.) and implementation of best practices (code and data sharing, adoption of free-software tools, etc.). Here we will describe how sharing open practices in everyday working routines foster connections between people, creating practice-based communities.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Vittorio Iacovella + + 1 + 1 + + + 13:40 + 00:15 + Hacking your (electric) car: the importance of Open Data + https://www.sfscon.it/talks/hacking-your-electric-car-the-importance-of-open-data/ + + Gathering information from the OBD (On Board Diagnostic) port of your car could be challenging + Gathering information from the OBD (On Board Diagnostic) port of your car could be challenging + <p>Any car has a diagnostic connector from which you can gather and/or set data from the various ECU (Engine Control Unit) that are present in your car, such as odometer, temperatures, motor rotation speed, accelerator depression percentage, wheel angle, lights, and – in an electric car – information about battery, remain energy, charging/discharging power, etc.<br /> +The big challenge is that the meaning of fathered data is usually not known and car manufacturers are reluctant to share this information.<br /> +This talk will illustrate how to scan the available data and make reverse engineering in order to try to create a shared database containing (useful) car data and PIDs (Parameter IDs) from ECUs of your car.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Luca Bonissi + + 1 + 1 + + + 14:00 + 00:15 + The Innovation Paradox + https://www.sfscon.it/talks/the-innovation-paradox/ + + Do you really know how to unleash and manage innovation? + Do you really know how to unleash and manage innovation? + <p>In the era of the Fifth Industrial Revolution, leaders, innovators and pioneers design, generate, and shape future-proof organizations, driven by a meaningful purpose promoting social impacts, combining emerging technologies and new ways of collaborating and conceiving work. While the &#8220;why&#8221; is clear and quite declared by many, the &#8220;what&#8221; to do and the &#8220;how&#8221; to do it remain very nebulous and, in some cases, obscure. Those ones who lead innovation within an organization suffer the innovation paradox: must innovate without knowing what and how. Innovators and pioneers are often alone, without a framework and processes for an open innovation execution. How can we unlock and unleash innovation, ensuring that the actions taken are always driven by what is truly needed to evolve your organization?</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Andrea Solimene + + 1 + 1 + + + 14:20 + 00:15 + The FSFE Italy Project from Understanding to Testing + https://www.sfscon.it/talks/the-fsfe-italy-project-from-understanding-to-testing/ + + How I applied design-thinking to re-design the Italian Free Software Community + How I applied design-thinking to re-design the Italian Free Software Community + <p>The role of Deputy Coordinator Italy within the Free Software Foundation Europe (FSFE) was born in 2022 out of the need of re-establishing the presence of the Foundation on the territory. I designed this three years experimental project together with the <a href="https://freesoftwarelab.noi.bz.it/">Free Software Lab</a> of NOI Techpark with the value proposition of (re)designing the FSFE Italian Community.</p> +<p>The project followed a human centric approach, moving along the five core stages of design-thinking. The goal of my talk is to describe the FSFE Italy project and the design-thinking approach adopted.</p> +<p>The first year (Y1) served as the understanding phase: I got involved as an FSFE representative in the main communication channels used by the Free Software (FS) community on the territory. I conducted interviews with volunteers, associations’ heads and enthusiasts, took part into the main FS events organized on the territory, mapped all stakeholders (understanding-observing) and created my own point of view (POV). By the end of 2022 I had already became an established FSFE representative on the territory, having gathered inputs and ideas on how to kick off the community into year two (Y2). The goal of year two was to build on these new ideas (ideation) and put these thoughts into action (prototyping) by finding common goals and activities with the main FS associations active on the territory and signing Memorandum of Understandings, preparing the ground to test it in the third year (Y3). Guess what was the result?</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Marta Andreoli + + 1 + 1 + + + 14:40 + 00:15 + NGI: No more EU funding for Free Software?! + https://www.sfscon.it/talks/ngi-no-more-eu-funding-for-free-software/ + + <p>During the summer the European Commission made the decision to stop funding Free Software projects within the Next Generation Internet initiative (NGI). This decision results in a loss of €27 million for software freedom. Since 2018, the European Commission has supported the Free Software ecosystem through NGI, that provided funding and technical assistance to Free Software projects. This decision unfortunately exposes a larger issue: that software freedom in the EU needs more stable, long-term financial support. The ease with which this funding was excluded underlines this need.<br /> +This talk shows the urgent need for sustainable, long-term financial support for Free Software to ensure Europe&#8217;s technological independence.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Alexander Sander + + 1 + 1 + + + 15:00 + 00:15 + What the open source community means to me + https://www.sfscon.it/talks/what-the-open-source-community-means-to-me/ + + Some very personal thoughts on why contributing can enrich your life + Some very personal thoughts on why contributing can enrich your life + <p>Everytime I tell my friends about my hobby which noawadays has also become my job, I face lots of questions. A worldwide community? Contributors around the globe? An open source community? What is this all about?</p> +<p>In this talk, I&#8217;d like to share my very personal view about what the open source community means to me, how to grow from user into community member, how the credit of trust helps you to discover your own skills, how to make friends around the world and why it&#8217;s not only fun to get active in a community, but also a big benefit for your whole life that can help you to broaden your mind.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Florian Effenberger + + 1 + 1 + + + 15:20 + 00:15 + A Journey of Contribution and Collaboration in Open Source + https://www.sfscon.it/talks/a-journey-of-contribution-and-collaboration-in-open-source/ + + Why Foundations are Essential + Why Foundations are Essential + <p>Have you ever worked on a project that didn&#8217;t use any open source tools, libraries, or products? Didn&#8217;t think so&#8230;Using open source has been such an integral part of our daily work life that we don&#8217;t even think about it. We just expect it to be available, secure, stable, and bug-free. But how many of you are actually contributing back to an open source project?</p> +<p>This session will go through a couple of the aspects to consider when you are embarking on your open source journey. We will look at different kinds of open source projects, and what the open source foundations bring to the table.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Ivar Grimstad + + 1 + 1 + + + 15:40 + 00:15 + Jakarta EE: Why and how to get involved in Open Source Software? + https://www.sfscon.it/talks/jakarta-ee-why-and-how-to-get-involved-in-open-source-software/ + + <p>In this session you will learn how to become part of an open source community, how to get involved and most importantly why you need to do it! You will learn about the Jakarta EE and its plans for the future, so you can start right away! This presentation will also provide you with key insights into the industry-wide, open source collaboration to modernize Java enterprise systems for cloud-centric use cases.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Tanja Obradovic + + 1 + 1 + + + 16:00 + 00:15 + From Concept to Camp: Project Management Strategies for IT Education Events + + + <p>In today’s fast-paced technological landscape, the need for immersive and hands-on educational experiences is more crucial than ever. &#8220;From Concept to Camp: Project Management Strategies for IT Education Events&#8221; delves into the meticulous process of organizing successful IT camps from a project management perspective.</p> +<p>Join us as we explore the comprehensive journey of bringing an IT camp from initial concept to a fully realized event. We will cover essential project management strategies, including planning, scheduling, resource allocation, risk management, and post-event evaluation. Participants will gain insights into: Defining Objectives and Scope; Budgeting and Resource Management; Team Collaboration and Leadership; Marketing and Participant Recruitment; Logistics and Event Planning; Evaluation and Feedback.</p> +<p>Through real-world examples and practical advice based on the Red Hat Summer Camp Brno project, this talk will equip you with the tools and knowledge needed to transform your vision of an IT camp into a reality.</p> +<p>Whether you’re planning your first event or looking to enhance your current approach, this session will provide valuable takeaways to elevate your project management skills and deliver exceptional educational experiences.</p> + + SFSCON + SFSCON + SFSCON + + Juri Solovjov + Yuliia Kliuchnikova + + 1 + 1 + + + 16:20 + 00:15 + Building the Public Interest Desktop + https://www.sfscon.it/talks/building-the-public-interest-desktop/ + + Our experience organizing GNOME's Sovereign Tech Fund project + Our experience organizing GNOME's Sovereign Tech Fund project + <p>The Sovereign Tech Fund is a new funding program for critical free software infrastructure by the German government. As part of this, members of the GNOME community have been working on fixing important issues across the free desktop stack. This includes security, accessibility, maintainability, hardware support, and more.</p> +<p>In this talk Sonny and Tobias will give an overview of how we organized the project, the work done as part of it, and the massive impact a relatively small amount of public money can have on making the free desktop better.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Tobias Bernard + Sonny Piers + + 1 + 1 + + + 16:40 + 00:15 + Let&#8217;s share our love for Free Software + https://www.sfscon.it/talks/lets-share-our-love-for-free-software/ + + I love Free Software Day 2025 + I love Free Software Day 2025 + <p>We often underestimate the power of a simple Thank You. Free Software contributors do important work for our society and the &#8220;I Love Free Software Day&#8221; on 14 February is the perfect opportunity for you to express your special gratitude. Since 2010, we have celebrated this wonderful annual event with an ever-growing and diverse community. ♥</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Ana Galan + + 1 + 1 + + + 17:00 + 00:15 + MoodleXR: A Next-Generation Open-Source Platform for Immersive Learning + https://www.sfscon.it/talks/moodlexr-a-next-generation-open-source-platform-for-immersive-learning/ + + <p>This project aims to develop a state-of-the-art Learning Management System (LMS) based on Moodle, optimized for delivering Virtual Reality (VR) and Augmented Reality (AR) learning modules.</p> +<p>By leveraging the open-source nature of Moodle and integrating advanced immersive technologies, the project seeks to create an innovative educational platform that transforms traditional learning experiences.</p> +<p>The LMS will incorporate open-source VR/AR tools and libraries, such as A-Frame, AR.js, and Blender, enabling educators to seamlessly integrate and manage immersive content. It will support various VR headsets and AR devices, ensuring broad accessibility. The platform will feature interactive learning modules, robust analytics, and scalable infrastructure, all built on open-source technologies like Kubernetes and Matomo.</p> +<p>Additionally, the project will emphasize accessibility and privacy compliance, utilizing tools like WAVE and Let’s Encrypt.</p> +<p>By fostering a community-driven development model, this LMS will offer a flexible, cost-effective solution that revolutionizes education through experiential learning, making it more engaging, interactive, and effective for students and educators alike.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Luca Bagna + + 1 + 1 + + + 17:20 + 00:15 + Implementing digital examinations in free software systems + https://www.sfscon.it/talks/implementing-digital-examinations-in-free-software-systems/ + + <p>In Finnish upper secondary schools course and final exams have been digital for some years now. Ordinary student laptops are routinely booted from USB flash drives to a special operating system, which provides a restricted environment allowing students to take an exam with no distractions or tools to cheat. Up to these days, this was implemented with Debian GNU/Linux, also meaning that student laptops must be Linux-compatible.</p> +<p>This is now changing. Not every modern laptop can simply boot from a USB drive to run Linux, these including chromebooks, Apple laptops and some new Windows laptops. Some schools may want to buy these devices and do not want a separate set of computers only for examinations. The current system is being replaced by an exam application, meant to run on different operating systems, which are to provide guarantees that no cheating can occur. The exam application activates the &#8220;assessment mode&#8221;, provided by operating system vendors, and this mode should provide a safe place where no cheating can occur, even on computers owned by the students.</p> +<p>Does that even make sense? Can that really be done, and with free software? In this presentation we take a peek at some technologies in Linux systems that can be used to secure a computer against an attacker with a physical access to the machine. We will also look at possible ways to implement an &#8220;assessment mode&#8221; in Linux desktops.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Juha Erkkilä + + 1 + 1 + + + 17:40 + 00:15 + Let’s spark children’s interest in coding + https://www.sfscon.it/talks/lets-spark-childrens-interest-in-coding/ + + Our experiences and how you can contribute + Our experiences and how you can contribute + <p>Today it is impossible to imagine daily life without software. The majority of us can&#8217;t spend a single day without using it. People use software in the workplace, on laptops, and on mobile phones. Software is also found in less obvious places however: in trains, cars, televisions, washing-machines, fridges, and many other devices. None of these devices could function without software. Without software we couldn&#8217;t write e-mails, make phone calls, go shopping, or travel as we are accustomed to. Software is our society&#8217;s central tool. How do we ensure that the next generation is motivated and capable of shaping technology for society&#8217;s benefits?</p> +<p>The Free Software Foundation Europe&#8217;s volunteers and staff have interacted with over 1700 children between 6 to 10 years in the past months. Children, especially girls, afterwards were motivated to start experimenting with hardware and software. In the discussions we saw that they realise how crucial technology will be for them. Furthermore with the FSFE&#8217;s coding competition &#8220;Youth Hacking 4 Freedom&#8221; we gathered experiences working with teenagers who program, tinker, and have fun with software.</p> +<p>Learn more about the experiences how the FSFE sparks children&#8217;s and teenagers interest to tinker, experiment and program. Furthermore you will see how fulfilling those activities can be for yourself.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Matthias Kirschner + + 1 + 1 + + + + + 11:00 + 00:15 + Open-source silicon chips + https://www.sfscon.it/talks/open-source-silicon-chips/ + + <p>We have all heard that there is &#8216;Intel inside&#8217;, but what is inside Intel? Almost all integrated circuits today are literally black boxes. They may contain unwanted or malicious features and, most importantly, they do not encourage reuse, nor do they allow it. The two main causes of such secrecy are: 1. standard design tools explicitly forbid the publication of any output, and 2. most foundries disallow disclosing technology details. Designers moreover face additional problems: The licence cost of standard design tools is unaffordable for most SMEs (unless questionable discount policies are applied), and lock-in threats arise at many levels, from IP blocks to foundry details to file formats. Yet exceptional progress has been made in recent years: Hundreds of silicon chips have been designed using free and open-source tools, and three foundries have made details of their processes public: The doors to free silicon are open! Hence how is politics reacting? What are the next steps to be taken? What are the opportunities for users, society and companies?</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Luca Alloatti + + 1 + 1 + + + 11:20 + 00:15 + Opt out? Opt in? Opt Green! Bringing Free Software To Eco-Consumers + https://www.sfscon.it/talks/opt-out-opt-in-opt-green-bringing-free-software-to-eco-consumers/ + + <p>Free Software gives consumers what they want, but many don&#8217;t know it &#8230; yet! We aim to change that by reaching out directly to eco-consumers in the &#8220;Opt Green&#8221; project, a new KDE Eco initiative funded by the German Environmental Agency.</p> +<p>Consumers want sustainable software: in a recent European poll 50% of respondents say the two primary reasons they purchase a new device are non-functioning software and software performance issues. This is as good a time as ever for an &#8220;Opt Green&#8221; message. In the next couple of years Windows 10 end-of-life and the phasing out of Intel-based macOS support will make e-waste out of hundreds of millions of computers. Functioning but vendor-abandoned devices can stay out of the landfill and in use for many years to come. With software designed for users&#8217; needs, not vendors&#8217;, it is possible to run software on the devices one already owns. Lean, efficient Free Software even runs on devices that are decades old. This is good for users, and better for the environment!</p> +<p>In this lightning talk I will provide an overview of the whys and hows of KDE Eco&#8217;s &#8220;Opt Green&#8221; initiative. Through campaigns and workshops over the next 2 years, we will raise awareness about environmental issues driven by software and demonstrate the power of Free Software to drive down resource use and keep devices running smoothly for years beyond official vendor support. This is all possible because Free Software *is* right-to-repair software: it removes vendor dependencies and guarantees transparency and user autonomy, providing full control over software, and thus hardware. I will describe the ways we plan to reach our target audience, including materials designed for eco-consumers and events well outside usual tech circles, such as open-air organic, artisanal, and fair trade markets, cultural centers, and others. These activities give us the opportunity to align our values in the Free Software community with those in allied communities striving for a sustainable modern lifestyle.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Joseph P. De Veaugh-Geiss + + 1 + 1 + + + 11:40 + 00:15 + ClapMetrics: Decoding Users’ Gender and Age Through Smartwatch Gesture Dynamics + https://www.sfscon.it/talks/clapmetrics-decoding-users-gender-and-age-through-smartwatch-gesture-dynamics/ + + <p>In this presentation, we introduce ClapMetrics &#8211; an innovative and seamless method for deducing the gender and age of smartwatch users. This system ingeniously harnesses the capabilities of the smartwatch’s integrated 3D sensors — specifically, the accelerometer and gyroscope—to capture the wearer’s arm movements during a clapping action. ClapMetrics operates on the principle that each clap is a complex interplay of motion, unique to the individual, much like a fingerprint. By analyzing these movements, ClapMetrics can gather rich biometric data without any active input or effort from the user, making it a remarkably non-intrusive technology. We will delve into the specifics of how ClapMetrics processes sensor data to make its estimations. We will explore the Neural Network’s architecture, the training process, and how the model interprets the sensor data to make reliable predictions about the wearer’s gender and age.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Attaullah Buriro + + 1 + 1 + + + 12:00 + 00:15 + Adoption Determinants of Open Hardware Across Industries + https://www.sfscon.it/talks/adoption-determinants-of-open-hardware-across-industries/ + + <p>Open Hardware (OH) is revolutionizing the way we approach technology in several areas, such as agriculture and healthcare. These areas, which are fundamental to food availability and human well-being, are undergoing an important shift as open hardware licensing strategies, inspired by open-source software (OSS), make solutions more accessible, affordable, and customizable. In this talk, we review major factors determining the use and adoption of OH technologies, including economic advantages, opportunities, and challenges.<br /> +Similar to OSS, OH applications are gaining momentum. In agriculture, farmers and researchers are turning to OH for precision farming tools, environmental monitoring, and robotics. These technologies not only reduce development costs but can be easily adapted to specific local needs, enhancing their effectiveness in diverse agricultural environments – crucial for small-scale farmers in developing countries and rural areas who face financial constraints. Likewise, the healthcare industry is benefiting from OH through the development of affordable medical devices, diagnostic tools, and treatment systems. The high costs and regulatory challenges associated with traditional medical devices often limit access to essential healthcare, especially in underdeveloped regions. Examples include open-source ventilators, syringe pumps, and diagnostic devices.<br /> +Applications of OH will be showcased through a comparative analysis of successful projects, particularly those with high engagement on platforms like GitHub, characterized by community engagement, active forums, and regular updates. Finally, we will draw conclusions about the potential of OH for industries beyond agriculture and healthcare, encouraging further innovation and collaboration in the open-source community.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Seckin Celik + Davide Serpico + + 1 + 1 + + + 12:20 + 00:15 + Enabling global interoperability among smart devices is only possible through Open Source + https://www.sfscon.it/talks/enabling-global-interoperability-among-smart-devices-is-only-possible-through-open-source/ + + Oniro and OpenHarmony a cooperation to build a global ecosystem + Oniro and OpenHarmony a cooperation to build a global ecosystem + <p>Global interoperability is probably the biggest problem that smart devices have been studied for more than 10 years. Multiple solutions have been proposed with different results, but none of them has established a reference framework and a global adoption. One of the main reasons for this to stay as a key element for research and investment is the diversity among the whole technology stack and geographical dispersion of device manufacturers. In the last years, there is a solution that is capturing the attention by demonstrating how an open source operating system can enable global interoperability in a huge domestic market like China. This solution is OpenHarmony and through a cooperation with Eclipse Foundation Oniro project, it is intended to use open source to drive interoperability and therefore solve one of the biggest challenges in the IoT and smart device industry. During the talk, it will be presented the approach followed by these two independent initiatives to cooperate while keeping the independence of the open source communities behind them.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Juan Rico + + 1 + 1 + + + 12:40 + 00:15 + Smart Werke Meran &#8211; Lorawan Use Cases + https://www.sfscon.it/talks/smart-werke-meran-lorawan-use-cases/ + + Our Use Cases realized with 100% Open Source + Our Use Cases realized with 100% Open Source + <p>Stadtwerke Meran has had a Chripstack Lorawan server and 19 Lorawan gateways for a year now. Merano has a well-developed Lorawan network.</p> +<p>We have realized the following use cases:</p> +<p>Remote control of public lighting.<br /> +Temperature measurement ( Just Nature project)<br /> +Smart metering for our water customer<br /> +GPS tracking for waste compactors of our major customers</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Stefan Mutschlechner + + 1 + 1 + + + 13:00 + 00:15 + 2025 scenario on OpenISA OpenPower Open Hardware computing + https://www.sfscon.it/talks/2025-scenario-on-openisa-openpower-open-hardware-computing/ + + 2025 Real scenario on Open Hardware based on OpenISA OpenPower CPU + 2025 Real scenario on Open Hardware based on OpenISA OpenPower CPU + <p>We see on 2025 which OpenISA OpenPower low power chip will give life to new Open Hardware computers, we examine in detail which open hardware computers will be ready for 2025 based on these chips. It will be the first time that OpenPower OpenISA low power Chip will be produced, and what is more, it will be produced from other Silicon Companies different from IBM.<br /> +We will see who are the GNU/Linux distros that support PPC64 and PPC64el and PowerPC architecture that runs on these computers and how you can join to experiment with it and push forward these architectures.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Roberto Innocenti + + 1 + 1 + + + 13:20 + 00:15 + The SMART Box of AURA Project + https://www.sfscon.it/talks/the-smart-box-of-aura-project/ + + <p>AURA project centers on the development of &#8220;Green &amp; Smart Urban Furniture,&#8221; a new generation of urban furniture that transcends traditional roles by incorporating eco-friendly and intelligent features. These urban elements are designed with bioabsorbent vegetation capable of mitigating atmospheric pollutants, making them environmentally sustainable. Furthermore, they are outfitted with advanced IoT sensors that monitor a range of environmental parameters, including climate data, urban pollution, and vehicular traffic.</p> +<p>These smart urban furniture units not only establish an extensive urban monitoring network but also actively combat pollution through the sequestration and reduction of harmful substances via the integrated vegetation. The embedded IoT sensors provide innovative capabilities for tracking the impact of these elements on the surrounding urban environment, such as monitoring air pollution levels and assessing the effects of heat islands. Each furniture piece is equipped with a &#8220;smart box,&#8221; a hardware system constructed using low-cost commercial off-the-shelf (COTS) components. This system includes climate and environmental sensors, gas measurement devices, a processing unit, and a data transmission module. The accompanying software, developed from scratch, delivers localized information—such as CO2 sequestration, temperature, and humidity—and contributes to a comprehensive environmental monitoring network aimed at predictive analysis, including weather risks, heat wave alerts, and health risks associated with air pollution. The presentation will delve into the custom-developed software and its ability to meet the field-level requirements of the AURA Architecture, encompassing individual sensors, sensor nodes (smart-boxes within the furniture), and the broader network of these nodes. It will highlight the significant impact and benefits of utilizing free and open-source technologies throughout the development process. Key focus areas include the creation of drivers for individual sensors, with emphasis on the most representative examples, the development of software for sensor nodes—covering features like self-testing, over-the-air (OTA) updates, and MQTT communication—and the design of a dynamic web app for data presentation, leveraging JavaScript, Bootstrap, and a JSON Data Lake. This comprehensive approach underscores the importance of open technologies in accelerating innovation, ensuring flexibility, and delivering robust, scalable solutions for smart urban environments.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Angelo Serino + + 1 + 1 + + + 13:40 + 00:15 + Raspberry Pi and Node-RED: Open Source Tools for Local Automation and Industrial IoT applications + https://www.sfscon.it/talks/raspberry-pi-and-node-red-open-source-tools-for-local-automation-and-industrial-iot-applications/ + + <p>This talk will explore how Raspberry Pi and Node-RED enable robust solutions for automation and control systems in both industrial and local applications. Leveraging open-source technology, these platforms can handle a wide range of tasks, from reading sensor data and managing actuators, to controlling devices through industrial communication protocols such as Modbus, RS485 ascii RTU etc. Node-RED&#8217;s message-driven architecture simplifies the creation of control logic, even for complex operations, while Raspberry Pi serves as a powerful and cost-effective alternative to traditional PLCs and IPCs. The integration of these tools allows for seamless data processing, remote communication, and the development of HMI interfaces both user-friendly or more traditiconal SCADA-like, making these technologies ideal for creating IIoT-native solutions. This presentation will focus on the technical capabilities, showing how these platforms can empower engineers and developers to build flexible and scalable automation solutions.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Federico Boero + Alberto Nicoletti + + 1 + 1 + + + 14:00 + 00:15 + Approaches to Object Detection: Edge-Based and AI-Based + https://www.sfscon.it/talks/approaches-to-object-detection-edge-based-and-ai-based/ + + <p>This presentation explains why we passed to the expert system based on edge-based object detection on traditional image analysis techniques to the AI-based, leveraging advanced machine learning. The first method uses parameters derived from image analysis tools, focusing on attributes such as shape, size, and color of objects, informed by preliminary tests and expert data. The machine learning method employs a sophisticated algorithm that dynamically learns and identifies objects in images. We used both approaches using diverse datasets and measured their accuracy and efficiency under various conditions. The aim of this presentation is to show the improvement obtained by using the AI-based system applied for real-time detection and classification, offering insights into their practical strengths and applications.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Giovanni Giannotta + Orneda Lecini + + 1 + 1 + + + 14:20 + 00:15 + Proxmox Backup Server: Backup for your Datacenter + https://www.sfscon.it/talks/proxmox-backup-server-backup-for-your-datacenter/ + + <p>Backups are an essential component of every IT infrastructure, from small scale businesses up to large datacenters, spanning multiple locations. With the Proxmox Backup Server a fully Free and Open Source backup solution is available, being highly integrated with the Proxmox Virtual Environment.<br /> +This talk will present a short overview of the capabilites provided by Proxmox Backup Server, giving some insights into new and recently added features. Further, by peeking into the inner workings and the software design will show how fast, space efficient and reliable backups are created and how data consistency and integrity are guaranteed. Topics covered will include backups for Virtual Machines and Linux Containers running on top of Proxmox Virtual Environment as well as host level backups.</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Christian Ebner + + 1 + 1 + + + 14:40 + 00:15 + Cloud Costs with ClickHouse and OpenCost + https://www.sfscon.it/talks/cloud-costs-with-clickhouse-and-opencost/ + + <p>Managing costs and billing across numerous Cloud-managed Kubernetes clusters presents significant challenges. In this talk, we&#8217;ll explore these challenges and discuss solutions using ClickHouse and OpenCost. Leveraging ClickHouse&#8217;s capabilities, we&#8217;ll demonstrate how it efficiently imports diverse Cloud billing data streams. Additionally, we&#8217;ll delve into how OpenCost addresses the complexities of real-time cost management within a multitenant architecture. Join us to uncover practical insights into optimizing cloud costs effectively.</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Denys Kondratenko + + 1 + 1 + + + 15:00 + 00:15 + Ansible + https://www.sfscon.it/talks/ansible/ + + Lazy Engineer's Best Friend! + Lazy Engineer's Best Friend! + <p>For a software engineer DRY is not only a washing machine progam, but it represents a deeply-held mantra: Don&#8217;t Repeat Yourself.</p> +<p>To avoid repetitive manual work, automation tools like Ansible enable engineers to quickly configure infrastructure and easily deploy applications.</p> +<p>In this talk, we will explore the key concepts and benefits of Ansible for configuration management, deployment and orchestration of remote devices. We will start with an overview of Ansible&#8217;s utility, how it works, and common use cases. We will see how YAML files describe configurations and playbooks define automated tasks and processes.</p> +<p>Practical examples will show Ansible automation in action, including a quick introduction to initializing and keeping your operating system up to date by automating the installation and maintenance of system tools. We will also introduce the concept of dotfiles for configuration.</p> +<p>What are you waiting for? Learn how to spend 30 minutes automating 5-second tasks with Ansible! (It&#8217;ll save you time in the long run, I promise!)</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Marco Lampis + + 1 + 1 + + + 15:20 + 00:15 + Efficient Log Management in Large-Scale Kubernetes Clusters + + + <p>Large Kubernetes clusters can generate significant volumes of logs, especially when housing thousands of running pods. This may demand substantial CPU, RAM, disk IO, and disk space for storing and querying large log volumes. In this talk, we will look into different strategies of storing those logs in ElasticSearch, Grafana Loki and VictoriaLogs and examine how we can save 10x or more on infrastructure costs.</p> +<p>This talk presents real-world examples of efficient log management in large-scale Kubernetes clusters. It includes setup demonstrations, numerical data, and graphical representations from reproducible benchmarks.</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Aliaksandr Valialkin + + 1 + 1 + + + 15:40 + 00:15 + KubeVirt + + + making running virtual machines in a kubernetes cluster a mainstream activity + making running virtual machines in a kubernetes cluster a mainstream activity + <p>KubeVirt is a Kubernetes addon for running virtual machines inside a Kubernetes cluster.</p> +<p>Currently being in CNCF incubating state, it has a wide range of adopters by both vendors and end users, such as NVidia, Suse, ARM and Red Hat to name a few.</p> +<p>This talk gives an overview of what is currently possible with KubeVirt on your cluster and what its future may look like. We will describe some of the features it supports, i.e. VM Import, LiveMigration, Snapshot/Restore and Monitoring.</p> +<p>At the end of the talk attendees will have an idea of how they can use it to better integrate existing virtual machines with containers in their existing application landscape.</p> + + SFSCON + SFSCON + SFSCON + + Daniel Hiller + + 1 + 1 + + + 16:00 + 00:15 + Why free backup software matters + https://www.sfscon.it/talks/why-free-backup-software-matters/ + + <p>It is 2024, we&#8217;re in the middle of the cloud-era.<br /> +Almost every service you desire is available in &#8220;the cloud&#8221;.<br /> +At least some of your company&#8217;s critical data is stored at some cloud provider.<br /> +Does your provider actually keep backups?<br /> +Can you live with their Recovery Time Objective (RTO)?<br /> +Do you believe they will actually meet the RTO?<br /> +Maybe you have another copy of your data?<br /> +In a format that you can actually access and read?</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Andreas Rogge + + 1 + 1 + + + 16:20 + 00:15 + Demystifying JWTs + https://www.sfscon.it/talks/demystifying-jwts/ + + <p>JSON Web Tokens (JWTs) have become a popular method for securely transmitting information between two parties. They are widely used in modern web applications for authentication and data exchange. However, their inner workings and security implications can be complex and often misunderstood by the developers.</p> +<p>In this talk, we aim to demystify JWTs by exploring their structure, how they work, and the cryptographic mechanisms that ensure their integrity and confidentiality. We will discuss the components of a JWT, including headers, payloads, and signatures, and illustrate how they combine to form a token.</p> +<p>Furthermore, we will dive into best practices for JWT usage, common pitfalls to avoid, and security considerations such as token expiration, payload size, and the choice of cryptographic algorithms. Finally, we will explore how a WebSocket connection can be secured with JWTs. Security is increasingly an overlooked necessity while utilizing a protocol that does not support authentication by default.</p> +<p>By the end of the session, attendees will have a clear understanding of how JWTs operate, their advantages over traditional session-based authentication, and how to implement them securely in their own applications.</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Dominika Bobik + + 1 + 1 + + + 16:40 + 00:15 + Containerization and micro-services in real life change security and vulnerability management. Let’s Discuss. + https://www.sfscon.it/talks/containerization-and-micro-services-in-real-life-chandge-security-and-vulnerability-management/ + + Security Configuration for Containerization and micro-services applications + Security Configuration for Containerization and micro-services applications + <p>Containerization and micro-services change the way software is deployed and used in production contexts. Re-evaluation of the criteria for secure development and above all for secure configuration of these solutions. It would probably be appropriate to implement security already during the creation of the solution itself.</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Carlo Falciola + + 1 + 1 + + + 17:00 + 00:15 + Cyber Risk Management: let’s try to manage it with open source and free software + https://www.sfscon.it/talks/cyber-risk-management-lets-try-to-manage-it-with-open-source-and-free-software/ + + Open source solutions in the cybersecurity landscape, oriented to manage processes + Open source solutions in the cybersecurity landscape, oriented to manage processes + <p>Cyber Risk Management is what you need to manage to ensure your business can operate being aware of threats, vulnerabilities, and to ensure that your business transactions and data are confidential, intact, available.</p> +<p>Let’s discuss and explore solutions and resources coming from open source and free software that can help organization to manage their cybersecurity programs, with an approach that looks at sharing knowledge, adopt tools and pay attention to the budget.</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Graziano Specchierla + + 1 + 1 + + + 17:20 + 00:15 + IT Security – Don’t let Open Source Software become the next menace + https://www.sfscon.it/talks/it-security-dont-let-open-source-software-become-the-next-menace/ + + Criminals and Govs are levereging Open Source tools, libraries and software to break into organizations. Let's stop 'em. + Criminals and Govs are levereging Open Source tools, libraries and software to break into organizations. Let's stop 'em. + <p>There is a prevalent myth that open source software is inherently secure. However, this is not true. Open source software is susceptible to vulnerabilities just like any other software. Moreover, the fact that anyone can review the code does not guarantee that the right people will do so. Open source software faces two important threats than not everybody are aware of:</p> +<p>Vulnerabilities: Open source developers need to understand and communicate the security posture of their projects to users. They must adopt robust security practices. The Log4j incident in 2021, which led to the Log4Shell vulnerability, triggered a catastrophic wave of attacks due to inadequate support for the logging framework and its critical role in company procedures.</p> +<p>Dev teams infiltration: Criminal organizations and government hacking teams are executing highly sophisticated social engineering operations to infiltrate understaffed open source projects. Their goal is to compromise development teams and insert backdoors into the software. The most recent attack on a significant project was discovered in April 2024.</p> +<p>Objective of the Talk: Inform the community about these two security scenarios and demonstrate how to effectively address them.</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Giancarlo Calzetta + + 1 + 1 + + + 17:40 + 00:15 + Biting the Apple + https://www.sfscon.it/talks/biting-the-apple/ + + MacBook Forensic with Fuji + MacBook Forensic with Fuji + <p>Description: Fuji is a free software, licensed under GPL v3, that leverages Apple Software Restore (ASR) and Rsync to create forensic images of macOS systems. It operates on logged-in computers to efficiently capture disk images while maintaining data integrity.</p> +<p>Bypassing encryption on Apple silicon processors presents significant challenges due to their advanced hardware encryption mechanisms and secure enclave protections. These processors employ complex security protocols that safeguard data at a hardware level, making unauthorized access and decryption extremely difficult. Without proper authentication or specific exploits, forensic imaging on these devices requires substantial technical expertise and often necessitates the cooperation of the device owner.</p> +<p>We&#8217;ll see how to acquire forensically MacBook data with free software</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Alessandro Farina + + 1 + 1 + + + + + 11:00 + 00:15 + Apisense – Easily monitor and track your REST-API data quality + https://www.sfscon.it/talks/apisense-easily-monitor-and-track-your-rest-api-data-quality/ + + An easy and modular solution to faulty REST-API data developed in collaboration with the Open Data Hub + An easy and modular solution to faulty REST-API data developed in collaboration with the Open Data Hub + <p>Ever had the issue of fetching invalid or faulty data from a REST-API and noticing only later, when everything broke down? Not anymore!</p> +<p>Apisense was developed in collaboration with the Open Data Hub to be an easy and modular tool to fit every need possible used to ensure and monitor the availability, quality and correctness of data provided via REST-APIs.</p> +<p>Sounds too good to be true? Tune in to find out how Apisense can help both producers and consumers of data to be aware of the quality and reliability of the data they provide/consume.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Aurelio Buonomo + Christian Zanotti + + 1 + 1 + + + 11:20 + 00:15 + MongoDB Alternatives: Is There A Need For A New Open Standard? + + + <p>This talk takes you on a journey through the history of SQL as an Open Standard, emphasizing its pivotal role in shaping the database industry. It also highlights the pressing need for a similar standard in MongoDB-compatible open databases. The presentation introduces FerretDB as a groundbreaking solution bridging MongoDB and open databases, ensuring seamless transitions without extensive application-level changes. This talk illuminates the importance of open standards and presents a path forward for enhanced compatibility and collaboration within the open-source database community.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Peter Farkas + + 1 + 1 + + + 11:40 + 00:15 + MariaDB Vector: Why your AI data should be in an RDBMS + https://www.sfscon.it/talks/mariadb-vector-why-your-ai-data-should-be-in-an-rdbms/ + + Databases and AI: How to supercharge application development with MariaDB vector + Databases and AI: How to supercharge application development with MariaDB vector + <p>As AI apps become mainstream, conventional IT wisdoms apply. AI apps must be no monoliths, but need to be logged, audited, and overall well integrated into normal IT. This means all AI data – vectors, input, output – is best stored in a normal RDBMS. Better still: In an open source database with performance, stability, and ease of use. Here is an overview of the AI opportunities, possibilities, methodologies, and features in MariaDB Server.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Kaj Arnö + + 1 + 1 + + + 12:00 + 00:15 + 1, 2, 3, Doc Kit! + https://www.sfscon.it/talks/1-2-3-doc-kit/ + + Automate the creation of software documentation + Automate the creation of software documentation + <p>Doc Kit is an open source command line tool that automates the creation of software documentation and release notes.<br /> +It can be used in conjunction with DocBook Authoring and Publishing Suite (DAPS) for quickly preparing the skeleton of professional looking software documentation.</p> +<p>Doc Kit has been designed for initialising SUSE or openSUSE documentation repositories but in a few steps it can be re-used for other projects too.<br /> +The tool consists of two parts:<br /> +1. a command-line tool called doc-kit that can download documentation boilerplate files<br /> +2. a repository of documentation boilerplate files, such as the SUSE/openSUSE book preface and entity files.</p> +<p>The presentation will show how to use Doc Kit and how to customise the provided templates for creating a brand new documentation or release notes projects.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Marina Latini + + 1 + 1 + + + 12:20 + 00:15 + codEEmoji – Making code more informative with emojis + https://www.sfscon.it/talks/codeemoji-making-code-more-informative-with-emojis/ + + <p>This presentation focuses on the open-source project codEEmoji, an IDE plugin that adds additional information to the code through emojis. The talk starts by discussing the benefits of this approach compared to other ways to present information for the developer in IDEs. It follows by presenting the plugin and its main functionalities, which go from pointing out bad practices in method and variable naming to presenting modifiers and method characteristics in their usage. Next, it is presented how the plugin structure was designed to receive new contributions. The talk finishes by presenting some challenges and future features.</p> +<p>https://github.com/codeemoji/codeemoji-plugin</p> +<p>https://plugins.jetbrains.com/plugin/22416-codeemoji</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Eduardo Guerra + + 1 + 1 + + + 12:40 + 00:15 + Can Test Driven Development be speeded up with Generative AI? + https://www.sfscon.it/talks/can-test-driven-development-be-speeded-up-with-generative-ai/ + + <p>Generative AI tools, like ChatGPT, have shown remarkable capabilities in natural language processing. It is logical to explore their potential in programming, yet the quality of generated code raises concerns. Test-Driven Development (TDD) offers a promising approach to address these concerns. In this talk, we will explore how developers can effectively collaborate with generative AI tools to enhance TDD practices, ensuring higher code quality and streamlined development processes. To this aim, we will present two interaction patterns between a human and an AI.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Moritz Mock + Barbara Russo + Jorge Melegati + + 1 + 1 + + + 13:00 + 00:15 + ScrapeGraphAI + https://www.sfscon.it/talks/scrapegraphai/ + + you only scrape once + you only scrape once + <p>ScrapeGraphAI is an innovative Python library designed to revolutionize the field of web scraping and in less than 4 months it collected over than 12k stars on Github and more than 100k downloads on pip. It allows to scrape which website you want with the knowledge of the HTML code and with the LLM models. By seamlessly integrating a natural language model within its architecture, ScrapeGraphAI enables the extraction of valuable information from websites with unparalleled flexibility and accuracy. Unlike traditional scraping tools that rely on rigid patterns or manual configuration, ScrapeGraphAI constructs a dynamic graph of operations to interrogate web pages, ensuring that relevant data is captured even in the face of changing website structures. This library&#8217;s unique fusion of language models and directed graph logic empowers developers to create sophisticated scraping workflows with minimal coding required, thereby streamlining the process of extracting valuable insights from online content. More info at this link: https://github.com/VinciGit00/Scrapegraph-ai</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Marco Vinciguerra + + 1 + 1 + + + 13:20 + 00:15 + Software Engineering Automation: From early tools to Generative AI and beyond + https://www.sfscon.it/talks/software-engineering-automation-from-early-tools-to-generative-ai-and-beyond/ + + <p>The emergence of Generative AI tools, such as ChatGPT and Copilot, promises to disrupt knowledge-based work, including software development. However, these are not the first tools to support the automation of software engineering. From the early days, various tools have been developed to remove repetitive tasks, reduce workload, and consequently increase the abstraction of software development, such as auto-completion and automatic refactoring. In this talk, we present the different levels of the automation of software engineering. We will examine how past and present tools have achieved these levels, the current capabilities of Generative AI tools, and what we can expect for the future.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Jorge Melegati + + 1 + 1 + + + 13:40 + 00:15 + The Crucial Role of Openness in Modern Software Development + https://www.sfscon.it/talks/the-crucial-role-of-openness-in-modern-software-development/ + + <p>Developers and providers of software-based products as well as other new technologies for the global market know that the winning solutions for future-proof projects share one key feature: interoperability with products from other suppliers. Achieving this interoperability means relying on open standards, open-source technologies and establishing key partnerships with other industry players.</p> +<p>In effect, openness principles are increasingly essential to software development. This talk will provide an in-depth analysis of how these concepts underpin interoperability, security and innovation in today&#8217;s technological landscape.</p> +<p>It will discuss the importance of open standards in creating seamless integration between diverse systems and applications, ensuring that technological advancements remain accessible and adaptable. The session will also cover key strategies and best practices for the adoption of open solutions that drive compatibility and competitiveness.</p> +<p>Finally, by examining Jakarta EE and the Payara Community, the talk will illustrate how these frameworks exemplify the power of open source in building innovative, scalable and future-oriented applications.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Chiara Civardi + Dominika Tasarz-Sochacka + + 1 + 1 + + + 14:00 + 00:15 + AI Tools for Jakarta EE + https://www.sfscon.it/talks/ai-tools-for-jakarta-ee/ + + <p>Discover how AI-powered tools for Jakarta EE streamline the entire development lifecycle.</p> +<p>Over the years, there have been many ways of starting a project: archetypes, project generators, visual designers, and so on. What do we get when we add a language model to the mix? A project generator that scaffolds domain-relevant Jakarta EE applications with backend and frontend functionalities in place.</p> +<p>Experience the future of enterprise application development through practical, cutting-edge demonstrations.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Gaurav Gupta + + 1 + 1 + + + 14:20 + 00:15 + How to start contributing and still have fun + https://www.sfscon.it/talks/how-to-start-contributing-and-still-have-fun/ + + <p>Are you new to Open Source and about to create your first commit, but still haven&#8217;t clicked on &#8220;New Pull Request&#8221; button?</p> +<p>There will be always something holding you back.</p> +<p>Or do you want to gain experience that can be applied at your school or work but don&#8217;t know how?</p> +<p>Open Source gives you that opportunity.</p> +<p>Let&#8217;s talk about it because we all go through it: how to find your project; fear of the first commit, the first code review, the first mistakes and everything is public; fight toxic communities &#8211; no one is perfect; when to open your code;</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Juri Solovjov + + 1 + 1 + + + 14:40 + 00:15 + Monolith Splitter + https://www.sfscon.it/talks/monolith-splitter/ + + <p>Migration from monolithic systems to microservices has earned significant interest in recent years. Software architects and developers welcome approaches, techniques, and patterns that can facilitate and automate the migration process. This talk will present Monolith Splitter, a tool that employs various approaches for splitting a monolith into a microservices architecture. This tool could be beneficial for software architects looking to migrate monolithic projects to a more scalable architecture. It uses execution traces to analyze monolithic software and suggests which classes should be grouped together in separate services according to criteria such as cohesion, modularity, and independence of evolvability. We will showcase the application of the tool to a series of open source software projects, discussing the outcomes, the benefits, and the current limitations.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Michal Skipala + Bruno Rossi + + 1 + 1 + + + 15:00 + 00:15 + The Next Level of Metrics in Microservices + https://www.sfscon.it/talks/the-next-level-of-metrics-in-microservices/ + + Going beyond measuring workload and performance + Going beyond measuring workload and performance + <p>In Microservices, measuring workload and performance are old news! They&#8217;re still important, but we can do more. In this talk, we&#8217;re navigating through new ideas on how to use metrics to tell us more than the basics about our microservices. Did you know we can evaluate our microservices in the architectural level? So we&#8217;ll have concrete data to support our decision-making. Between patterns and bad smells, we can use metrics to detect the points where they happen. Let&#8217;s explore these new possibilities to improve our experience when evolving a microservice system, towards a more robust and maintainable direction! Bonus: you&#8217;ll learn about an open-source tool to facilitate this process, of which I&#8217;m a maintainer, and you could be too!</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + João Francisco Lino Daniel + + 1 + 1 + + + 15:20 + 00:15 + What’s New in Notifications + https://www.sfscon.it/talks/whats-new-in-notifications/ + + <p>Over the past 6 months I&#8217;ve been working on improving notifications for the GNU/Linux desktop. This includes a new version of the xdg-desktop-portal notification spec, improved notification UI in GNOME Shell, and various backend components (e.g. GLib and portals).</p> +<p>In this talk I&#8217;ll explain why it was so difficult, how we untangled it, and what&#8217;s in store for the future.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Julian Sparber + + 1 + 1 + + + 15:40 + 00:15 + Sync Your Tunes, Sync Your Screen: Introducing SyncWall + https://www.sfscon.it/talks/sync-your-tunes-sync-your-screen-introducing-syncwall/ + + <p>Ever wished your computer could visually represent your playlist? SyncWall lets you turn every song into a unique visual experience, by dynamically matching your desktop wallpaper to the music currently playing on Spotify!</p> +<p>We&#8217;ll demonstrate SyncWall in action, showcasing its capabilities, and then we&#8217;ll dive deeper into the code and the process of creating the images.</p> +<p>SyncWall relies on two core components: Spotify&#8217;s API, which provides with all the necessary song information, and Python&#8217;s PIL library, which allows to easily manipulate images. Throughout the presentation, we will explore the key concepts and most useful functions of these two technologies, providing you with practical tools to integrate into your own projects.</p> +<p>Even if Syncwall is designed for GNOME, we will dive deep on how to make it work also in different desktop environments. This will cover all the steps and the challenges involved.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Giovanni Enrico Loni + + 1 + 1 + + + 16:00 + 00:15 + Nurturing OpenJDK distribution: Eclipse Temurin Success History and plan + https://www.sfscon.it/talks/nurturing-openjdk-distribution-eclipse-temurin-success-history-and-plan/ + + <p>Join me as we explore the pillars that make Eclipse Temurin one of the most widely adopted, enterprise-ready OpenJDK Runtime (over 20M monthly downloads) and also delve into the future of Adoptium and explore the goals set for 2024.<br /> +As we navigate the landscape of open source Java runtimes, Adoptium is committed to fostering vibrant, healthy projects that thrive with the support of robust communities. In this talk, we will also shine a spotlight on our dedication to delivering top-notch quality and outstanding performance, with a special focus on our AQAvit project and Security Effort.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Carmen Delgado + Ivar Grimstad + + 1 + 1 + + + 16:20 + 00:15 + Designing open source tools for Citizen Coders + https://www.sfscon.it/talks/designing-open-source-tools-for-citizen-coders/ + + Empower non-professional developers to drive innovation! + Empower non-professional developers to drive innovation! + <p>In a world where proprietary no-code platforms with vendor lock-in and opacity dominate, there is a crucial need to enhance the developer experience of open source applications, libraries, and tools.</p> +<p>We will explore how we can make open source software more accessible to citizen developers and non-professional programmers who face significant barriers to entry with modern open source tools. Showing the importance of collaborating with these developers, who are often closer to real-world problems, to improve the quality and usability of open source software.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Luca Rainone + + 1 + 1 + + + 16:40 + 00:15 + Free your Games + https://www.sfscon.it/talks/free-your-games/ + + A Minetest story + A Minetest story + <p>Videogames are part of our daily life. They allow us to unplug, to relax, to compete, simulating a reality that puts us at the centre of a new digital world. However, if we go deeper into the way videogames are made, we&#8217;ll learn that their market can be brutal and the ethics of their business models highly debatable &#8211; if not plain unbearable. Nowadays, playing a videogame usually means renouncing to our privacy and shaking hands with realities that we might not tolerate if we knew what they conceal. It was during the pandemic that a Minetest server called AES was born. Made by volunteers, AES decided to go against that: to build an online space where to play without strings attached. A place where everyone can have fun and nothing is proprietary. Four years later, this is its story.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Marco Amato + + 1 + 1 + + + 17:00 + 00:15 + How to set up an Open Source Program Office? Get insights and use cases from the OSPO Alliance + https://www.sfscon.it/talks/how-to-set-up-an-open-source-program-office-get-insights-and-use-cases-from-the-ospo-alliance/ + + <p>The Good Governance Initiative (GGI) developped by the OSPO Alliance proposes a methodological framework to assess open-source awareness, compliance and governance in any kind of organizations, helping them to structure and improve the use of FOSS towards an OSPO. This presentation will highlight the main progresses and new features achieved since last year&#8217;s introduction at SFScon, such as the translation of the GGI Good Governance in five languages, the recent OSPO testimonies presented in the OnRamp meeting series, and many more.</p> + + OW2 + OW2 + OW2 + https://www.sfscon.it/tracks/ow2-track-2024/ + + Valentina Del Prete + + 1 + 1 + + + 17:20 + 00:15 + Decentralized Search Over Decentralized Storage + https://www.sfscon.it/talks/decentralized-search-over-decentralized-storage/ + + Coupling an AI-powered search engine with a self-hosted personal cloud + Coupling an AI-powered search engine with a self-hosted personal cloud + <p>In this talk, we will explore an innovative decentralized search system developed in collaboration between the teams of On My Disk, a personal cloud storage solution, and PeARS, a self-hosted search engine. This system is designed to enable user-friendly, AI-powered, multilingual search capabilities directly over a decentralized storage environment, empowering individuals to manage and search their data across devices without relying on third-party servers. By combining cutting-edge AI with a robust, local-first approach, this solution allows users to maintain complete control over their data, ensuring secure, fast, and personalized search results in a user-controlled environment. Learn how this technology is setting a new standard for privacy and autonomy in data storage and retrieval.</p> + + OW2 + OW2 + OW2 + https://www.sfscon.it/tracks/ow2-track-2024/ + + Alexey Volkov + + 1 + 1 + + + 17:40 + 00:15 + Optimizing Cloud Compute Resources with Spare Cores + https://www.sfscon.it/talks/optimizing-cloud-compute-resources-with-spare-cores/ + + <p>Spare Cores is a vendor-independent, open-source, Python ecosystem that offers a comprehensive inventory and performance evaluation of compute resources across cloud server providers. We start all server types publicly (GHA) to run hardware inspection tools and benchmarks for different workloads. Our findings are published as open data and open-source tools to help you identify and optionally start the most cost-efficient instance type for your specific use cases (e.g. ML model training or CI/CD pipelines) in your cloud environment. Additionally, Spare Cores provides a seamless SaaS solution built on this open-source ecosystem, managing the entire lifecycle of containerized batch jobs without requiring direct vendor engagement.</p> + + OW2 + OW2 + OW2 + https://www.sfscon.it/tracks/ow2-track-2024/ + + Gergely Daroczi + + 1 + 1 + + + + + 13:00 + 00:30 + NOI Hackathon SFSCON Edition + + Side Event - Hackathon + Side Event - Hackathon + Side Event,Hackathon + 0 + 0 + + + + + 14:00 + 00:40 + Human and environmental Impacts of the actual “Artificial Intelligence” Industry, how to humanize? + + Side Event - Crane Hall BOF meetings + Side Event - Crane Hall BOF meetings + Side Event,Crane Hall BOF meetings + https://www.sfscon.it/tracks/crane-hall-bof-meetings-2024/ + + Roberto Innocenti + + 0 + 0 + + + + + + + 08:30 + 00:30 + Starting of the second day + + SFSCON + SFSCON + SFSCON + 0 + 0 + + + 13:00 + 00:30 + Closing of the SFSCON 2024 + + SFSCON + SFSCON + SFSCON + 0 + 0 + + + + + 08:30 + 00:30 + Welcome Coffee + + SFSCON + SFSCON + SFSCON + 0 + 0 + + + + + 09:20 + 01:00 + Let’s spark more Adas in our tech world! workshop + + Women* in tech + Women* in tech + <p>In this workshop we will dive into the possibilities of encouraging women*, especially girls, to thinker and to code. With tools such as the Free Software Foundation Europe’s (FSFE) illustrated book &#8220;Ada &amp; Zangemann &#8211; A Tale of Software, Skateboards, and Raspberry Ice Cream&#8221;everybody can create ways to spark the participation of women* and girls in tech.The book tells the story of Ada, a girl who loves to experiment with hardware and software. Ada realises how crucial it is to control technology and decides to stand up to the mighty inventor Zangemann.This workshop will also intend to explore ways to promote diversity and gender equity in the Free Software community and beyond. Together we will identify the challenges women* face in participating in such communities and discuss how we can create more inclusive environments, especially for the future generations.We encourage you to join us to share your experiences, ideas and perspectives, and collaborate in creating a more inclusive and diverse future in the Free Software community for all.</p> +<p><b>REGISTRATION NEEDED AT: </b><a href="https://pretix.eu/noi-digital/sfscon24/4260077/">https://pretix.eu/noi-digital/sfscon24/4260077/</a></p> +<p><em>*women, inter, trans and non-binary people.</em></p> +<p>Supported by: <strong><a href="https://fsfe.org/" target="_blank" rel="noopener">FSFE – Free Software Foundation Europe</a> </strong>&amp; <a href="https://shetechitaly.org/"><strong>SheTech</strong></a></p> + + Side Event - Women* in tech + Side Event - Women* in tech + Side Event,Women* in tech + https://www.sfscon.it/tracks/women-in-tech-track-2024/ + + Lina Ceballos + Ana Galan + + 0 + 0 + + + 10:40 + 00:55 + Knitting Our Internet workshop + + An interactive journey through the history of the Internet, and how to save it, together + An interactive journey through the history of the Internet, and how to save it, together + <p>“Knitting Our Internet” (KOI) is a workshop that explores the history of the Internet, and offers a perspective for a collective re-imagination of participatory, decentralized networks.</p> +<p>The workshop aims at questioning the very essence of today’s social media, exposing the critical limits posed by centralization, monopoly, and surveillance capitalism.</p> +<p>KOI was conceived in June 2023 by <a href="https://tommi.space">Tommaso Marmo</a>, who was looking for a simple yet critical and accurate way to introduce the concept of the Fediverse to non-experts.</p> +<p>The content and structure of the workshop matured over time, as it adapted to very diverse audiences of any ages and backgrounds. Furthermore, the experience is based on Tommaso’s academic research, mainly conducted for “<a href="https://tommi.space/csss/">Computer Sciences are Social Sciences</a>”, his bachelor’s thesis.</p> +<p><strong>Content</strong></p> +<p>During the activity, Tommaso will be using a yarn his grandmother gifted him to simulate centralized and decentralized networks, employing concrete metaphors to actively involve the participants. Every individual attending the workshop will be given a quote or an image relevant in the early and contemporary history of the Internet, and they will be asked to share it as the story unfolds.</p> +<p>Allowing them to understand the essential challenges society faces in relation to technological advancement, participants will be empowered to get involved in the Fediverse, especially understanding the importance of decentralization, Free Software, and the political role played by technical tools.</p> +<p><strong>Notes</strong></p> +<p>Given its malleable and open structure, the content of the workshop can be adapted, enriched, and edited to match the key topics of SFSCON 2024 in the best possible way.</p> +<p>The interactive parts of the workshop can be limited and a more theoretical presentation, diving in the thoughts of philosophers and computer sciences, could be added, too.</p> +<p>Supported by: <strong><a href="https://fsfe.org/" target="_blank" rel="noopener">FSFE – Free Software Foundation Europe</a></strong></p> + + Fediverse + Fediverse + Fediverse + https://www.sfscon.it/tracks/fediverse-track-2024/ + + Tommaso Marmo + + 0 + 0 + + + 11:40 + 00:15 + about:Fediverse + https://www.sfscon.it/talks/aboutfediverse/ + + An introduction to the decentralised social network + An introduction to the decentralised social network + <p>The Fediverse is a decentralised social network. But what does that mean?</p> +<p>In this talk I will give a short introduction to the Fediverse of 2024 and how it started to evolve in 2008. I will explain the basic concepts of ActivityPub as the protocol of the Fediverse and how the use of this open protocol has enabled a diverse group of Free Software projects to build a social network of (micro) blogging, video streaming, podcasting and event organising. A network where users can share and interact with each other regardless of the platform they use. What will be possible in the Fediverse of 2024? And how can you get started today?</p> +<p>This talk does not require any technical knowledge of the Fediverse. However, you should know what an email is.</p> + + Fediverse + Fediverse + Fediverse + https://www.sfscon.it/tracks/fediverse-track-2024/ + + Tobias Diekershoff + + 1 + 1 + + + 12:00 + 00:15 + How to build a website for the IndieWeb + https://www.sfscon.it/talks/how-to-build-a-website-for-the-indieweb/ + + <p>Have you ever heard of terms like POSSE, syndication, or webmention?<br /> +What about protocols like Web Sign-In or Micropub?<br /> +These terms are all connected to the IndieWeb, a community of websites built on open standards and open source technologies.</p> +<p>In today&#8217;s digital age, our online content and identities are more important than ever. Relying on random companies and social networks to manage them isn&#8217;t ideal. Instead, we should take control of our online presence by building our own website for the IndieWeb.</p> +<p>In this talk, you&#8217;ll learn how to:</p> +<p>1. Publish content on your website via a Micropub server.<br /> +2. Syndicate that content elsewhere (i.e., republish it on another website).<br /> +3. Gather comments from social networks and display them on your website.</p> +<p>We will achieve all of this using a static website and a few open-source tools.</p> + + Fediverse + Fediverse + Fediverse + https://www.sfscon.it/tracks/fediverse-track-2024/ + + Giacomo Debidda + + 1 + 1 + + + + + 09:20 + 00:15 + ARM Linux Laptops for Developers Status Report + https://www.sfscon.it/talks/arm-linux-laptops-for-developers-status-report/ + + <p>Intrigued by 22+ hours of battery life with comparable performance to current Intel / AMD systems? Starting from June this year a bunch of new ARM based laptops have been launched. All major laptop vendors launched devices, with over 33 to choose from at the time of this writing.</p> +<p>While ARM based laptops have been available for years, they mostly have been targeted as cheap entry level ChromeBooks or MacBooks designed for MacOS only. Luckily with this new wave of ARM based laptops there should be something for everybody.</p> +<p>The core question is how well they behave under Linux. Being designed for<br /> +Windows-on-ARM there is a risk Linux support is rudimentary at best. Stefan set out to test this and is reporting back here. Does a boot with UEFI work out of the box? Are all hardware features supported? Is the firmware for various drivers available? How is the performance?</p> +<p>And the most important question: how does it stack up against an Intel based laptop from the same timeframe as daily driver for software development?</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Stefan Schmidt + + 1 + 1 + + + 09:40 + 00:35 + Building a no-drama community + https://www.sfscon.it/talks/building-a-no-drama-community/ + + <p>In this talk, we&#8217;ll focus on how the AlmaLinux project has chosen to foster a positive, drama-free community in the Linux ecosystem.</p> +<p>&#8212;</p> +<p>Whether you&#8217;re starting a new community or wrangling an existing one, it can be tempting to fall into the trap of bonding over shared enemies to see short-term, high-numbers growth. But, benny has spent the last 10 years building drama-free communities with a different kind of success.</p> +<p>While many open-source projects rally members through shared frustrations or negativity, AlmaLinux took the more challenging path of uniting people through thoughtful dialogue and focusing on helping each other. By prioritizing respect, collaboration, and inclusivity, the AlmaLinux community grew healthier and stronger without the need for battle cries or infusing drama. Learn how this approach not only built a stable and thriving community around AlmaLinux, but is also setting a new standard for open-source communities &#8211; and proving that progress doesn’t have to be divisive.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + benny Vasquez + + 1 + 1 + + + 10:20 + 02:40 + Voices of Free Software: connect, learn, inspire! + + FSFE Italian Community Meeting + FSFE Italian Community Meeting + <p>You are invited to join the volunteers, supporters, and friends of the FSFE Italian Community!</p> +<p>Join us to learn from one another, find inspiration, and tackle future challenges together in the realm of Free Software. As a volunteer, you have a platform to share your story, discuss the most pressing topics surrounding Free Software, and connect with fellow enthusiasts. We encourage you to collaborate with the community on common initiatives and work together to forge new paths forward.</p> +<p>This is an <strong>hybrid event</strong>. You can join us either online or in person.</p> +<p><b>REGISTRATION NEEDED AT: </b><a href="https://pretix.eu/noi-digital/sfscon24/4259648/">https://pretix.eu/noi-digital/sfscon24/4259648/</a></p> +<p>Please note, the official language of the FSFE Italian Community is Italian, hence the event will be held in <strong>Italian</strong>.</p> +<p>Supported by: <strong><a href="https://fsfe.org/" target="_blank" rel="noopener">FSFE – Free Software Foundation Europe</a></strong></p> + + Side Event - FSFE - Italian community meeting + Side Event - FSFE - Italian community meeting + Side Event,FSFE,Italian community meeting + https://www.sfscon.it/tracks/fsfe-italian-community-meeting-2024/ + + Marta Andreoli + + 0 + 0 + + + + + 09:30 + 02:30 + Scratch Stories with Ada & Zangemann + + Side Event - MiniNOI x SFSCON + Side Event - MiniNOI x SFSCON + Side Event,MiniNOI x SFSCON + 0 + 0 + + + + + 16:30 + 00:30 + Winner proclamation and closing of the NOI Hackathon SFSCON Edition + + Side Event - Hackathon + Side Event - Hackathon + Side Event,Hackathon + 0 + 0 + + + + diff --git a/src/tests/assets/sfscon2024.xml b/src/tests/assets/sfscon2024.xml new file mode 100644 index 0000000..6d29fd9 --- /dev/null +++ b/src/tests/assets/sfscon2024.xml @@ -0,0 +1,2248 @@ + + + + sfscon-2024 + SFSCON 2024 + + + Ethics, Policy, Legal & Economics + Data Spaces + Open Hardware + Developers + Community Building + Cybersecurity + Fediverse + DevOps + Side Event - Hackathon + Side Event - School Reading + Side Event - MiniNOI x SFSCON + OW2 + Side Event - Women* in tech + Side Event - Crane Hall BOF meetings + Side Event - FSFE - Italian community meeting + + + + + 08:30 + 00:30 + Check-in SFSCON 2024 + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + 0 + 0 + + + + + 09:00 + 00:15 + Opening SFSCON 2024 + https://www.sfscon.it/talks/opening-sfscon-2024/ + + <p>Opening SFSCON 2024</p> + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Philipp Achammer + + 1 + 1 + + + 09:15 + 00:05 + Greetings from NOI + https://www.sfscon.it/talks/greetings-from-noi/ + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Vincent Mauroit + + 1 + 1 + + + 09:20 + 00:05 + Greetings from Gruppo FOS + https://www.sfscon.it/talks/greetings-from-gruppo-fos/ + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Giorgio Allasia + + 1 + 1 + + + 09:25 + 00:05 + Greetings from Telmekom + https://www.sfscon.it/talks/greetings-from-telmekom/ + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Sergio Vemic + + 1 + 1 + + + 09:30 + 00:30 + Keynote speaker &#8211; coming soon + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Emily Omier + + 0 + 0 + + + 10:00 + 00:15 + European SFS Award 2024 + + Free Software Foundation Europe (FSFE) and Linux User Group Bozen-Bolzano-Bulsan assign the “European SFS Award” + Free Software Foundation Europe (FSFE) and Linux User Group Bozen-Bolzano-Bulsan assign the “European SFS Award” + <p>The award is given to a person who contributed to the introduction of the culture of Free Software.</p> + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + 0 + 0 + + + 10:15 + 00:15 + SFS Award 2024 + + Linux User Group Bozen-Bolzano-Bulsan assigns the “South Tyrol Free Software Award” + Linux User Group Bozen-Bolzano-Bulsan assigns the “South Tyrol Free Software Award” + <p>Every year the Linux User Group Bozen-Bolzano-Bulsan assigns the &#8220;South Tyrol Free Software Award&#8221; (SFS Award). The award is given to a person who contributed to the introduction of the culture of Free Software in the Province of Bolzano.</p> + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + 0 + 0 + + + 10:30 + 00:10 + AlmaLinux in brief + https://www.sfscon.it/talks/almalinux-in-brief/ + + <p>In this quick chat, benny will summarize 20 years of context and 4 years of growth in just 10 minutes by highlighting the major points that brought AlmaLinux to the world, how the project has adjusted for each challenge along the way, and what they&#8217;re planning next.</p> + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + benny Vasquez + + 1 + 1 + + + 10:40 + 00:20 + Open Source in EU policy + https://www.sfscon.it/talks/open-source-in-eu-policy/ + + Making laws with the Open Source community in mind + Making laws with the Open Source community in mind + <p>Over the past three years, the Open Source Community has had to mobilise to fix flaws in European Union policy initiatives, like the Cyber Resilience Act, Product Liability Directive, and the AI act, all of which could have negatively impacted Open Source developers.</p> +<p>This talk explores why this mobilisation was necessary, how the Community is preparing for future legislation, and how the Open Source community has changed the way the EU makes and implements laws.</p> +<p>It will then delve into the particular case of the AI act and its Open Source AI exemption. It will cover how the exemption came about, why it has prompted a wave of AI open-washing, and what can be done to fix it.</p> + + SFSCON - Main track + SFSCON - Main track + SFSCON,Main track + + Jordan Maris + + 1 + 1 + + + 11:00 + 00:15 + Let’s all get over the CRA! + https://www.sfscon.it/talks/lets-all-get-over-the-cra/ + + how I stopped worrying about the consequences of the CRA for Open Source innovation in Europe and moved to something else + how I stopped worrying about the consequences of the CRA for Open Source innovation in Europe and moved to something else + <p>The adoption of the CRA (Cyber Resilience Act) has caused some real anxiety among the FOSS ecosystem. Even in its amended form, many questions remain opened and debated, and more to the point, a lot of uncertainty still surrounds it, not just at the level of its general architecture but also at the implementation level.<br /> +It is perhaps fair to mention that the CRA itself does not exist in a void and is building on already existing regulations and ideas. However, it should be explained how the CRA itself was not born inside the institutions of the European Union but is an almost pure product of governmental cyber security circles and agencies. Because of that, the digital ecosystem at large is at pain understanding some of its logic. This talk will start with what we know and what we can infer from the CRA, and how it fits within the general regulatory framework of the European Union. We will thus clarify the following points:</p> +<p>&#8211; what does the CRA mean in terms of software security assessment and certification &#8211; and how that plays a key role in understanding what the CRA is and what it is not<br /> +&#8211; CRA within the European regulatory framework<br /> +&#8211; CRA implementation: the bad, the ugly, and the unknown</p> +<p>We will then discuss what the concerns are for the FOSS communities. Most notably:</p> +<p>&#8211; barriers of entry for Free Software companies, esp. the small and medium ones<br /> +&#8211; legal inability to develop Free and Open Source Software<br /> +&#8211; what will Free and Open Source software foundations do in edge cases and what are they expected to bring in terms of guidance to the companies contributing to their projects</p> +<p>It will then discuss how we can best prepare for it, and make some suggestions on how to solve FOSS specific challenges related to CRA. In particular the talk will explore the following possibilities:</p> +<p>&#8211; evolving the role or cross project security teams<br /> +-promoting best practices in development (CI CD, code auditability) turning the CRA against proprietary software practices<br /> +&#8211; Pooling security audits<br /> +&#8211; Better release management</p> +<p>Last but not least, this talk will discuss the economics behind the CRA and why this may not end up being less of a problem than we think.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Charles-H. Schulz + + 1 + 1 + + + 11:21 + 00:15 + On the ethical challenges raised by robots powered by Artificial Intelligence + https://www.sfscon.it/talks/on-the-ethical-challenges-raised-by-robots-powered-by-artificial-intelligence/ + + <p>The integration of generative AI into robot systems has the potential to boost several industries by enabling robots to understand their environments, create courses of action, and autonomously react to complex situations. However, the adoption of generative AI techniques brings about profound ethical concerns that need to be addressed to ensure the responsible development and deployment of such technologies. In this talk, I will explore the multifaceted ethical challenges associated with generative AI-powered robots, focusing on issues such as robot autonomy, decision-making, accountability of robot actions, and their impact on humans and society as a whole.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Fulvio Mastrogiovanni + + 1 + 1 + + + 11:40 + 00:15 + CRA & PLD Liability rules and Software Freedom + https://www.sfscon.it/talks/cra-pld-liability-rules-and-software-freedom/ + + <p>With CRA and PLD liability rules for software have been introduced with a broad exception for Free Software. After long and intense debates individual developers and non for profit work are safeguarded. I will shed light on those new rules.</p> +<p>Already at an early stage, the FSFE argued in a hearing in the EU Parliament, for the inclusion of clear and precise exemptions for Free Software development in the legislation and for liability to be transferred to those who significantly financially benefit from it on the market.</p> +<p>In the future, individual developers and non-profit development of Free Software will be exempt from the CRA and the PLD. Nevertheless, the wording in both the regulations are different and a standardisation processes and guidelines are still being drawn up.</p> +<p>In this talk I will discuss what this new regulation means for software freedom in future and what happens at this stage and how to be involved in implementation.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Alexander Sander + + 1 + 1 + + + 12:00 + 00:15 + Cyber Resilience Act, already too late to comply? + https://www.sfscon.it/talks/cyber-resilience-act-already-too-late-to-comply/ + + Compliance is dead, long live compliance + Compliance is dead, long live compliance + <p>If you are taking your decisions now for complying with all the requirements of CRA, you might be too late to find adequate external resources to comply , although &#8212; at submission time &#8212; it is not yet in force. So what are you gonna do? Being open source would help only to a certain point, if you monetize the software. Some guidance tips for Open Source projects and businesses.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Carlo Piana + Alberto Pianon + + 1 + 1 + + + 12:20 + 00:15 + AI no-code for marketing + https://www.sfscon.it/talks/ai-no-code-for-marketing/ + + How artificial intelligence can really help create a marketing strategy + How artificial intelligence can really help create a marketing strategy + <p>The process of creating a Marketing strategy and the subsequent steps of drafting editorial calendars, selecting channels, designing, and publishing advertising campaigns, is a complex journey.<br /> +Marketers have always dedicated a lot of time and resources to creating the most effective strategy for a brand’s success and translating it into concrete actions.<br /> +Today, is it possible to use artificial intelligence as a tangible support for the development of the strategic, technical, and operational assets necessary to create a successful marketing plan?<br /> +Let’s discover ATENA together, a methodology and an easy process through which you can simplify, accelerate, and enhance the quality of your marketing strategy, thanks to the practical support of AI.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Alessandro Agnati + + 1 + 1 + + + 12:40 + 00:15 + We went to court against Apple &#8211; a case for Software Freedom + https://www.sfscon.it/talks/for-the-right-of-general-purpose-computers/ + + Breaking lock-ins over devices with Free Software + Breaking lock-ins over devices with Free Software + <p>Our smartphones, tablets, laptops, and other connected devices are general purpose computers. That means we can potentially run any software we want to make full use of the hardware. This potential is fostered by Free Software.</p> +<p>However, device manufacturers, vendors, and internet platforms have been restricting software freedom by exercising their monopolistic control over end-user equipment. This power is used over key features and components of devices such as operating systems, browsers, and app stores.</p> +<p>Basic freedoms such as installing and uninstalling software are being unfairly limited by these companies, commonly referred to as &#8220;gatekeepers&#8221;, because of their monopolistic control over devices.</p> +<p>As a concrete example, this talk will present the policy and legal work of FSFE in denouncing the detrimental commercial practices of a worldwide known gatekeeper: Apple.</p> +<p>Apple&#8217;s monopolistic power over its devices is detrimental to Free Software and a high risk for the right of general purpose computers. The company&#8217;s &#8220;notarization&#8221;, its barriers to software freedom and lack of interoperability are highly negative to Free Software.</p> +<p>In conclusion, this talk will present Device Neutrality as a policy solution to enable end-users to bypass gatekeepers in order to run Free Software independently of the control exercised by hardware manufacturers, vendors, and platforms. Device Neutrality can enable end&#8211;users to regain control over their devices.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Lucas Lasota + + 1 + 1 + + + 13:00 + 00:15 + 25 Years of Copyleft Enforcement: The Road Ahead for Defending Software Rights + https://www.sfscon.it/talks/25-years-of-copyleft-enforcement-the-road-ahead-for-defending-software-rights/ + + <p>In 1999, I worked my first GPL enforcement matter: a large storage had made proprietary modifications to GNU tar and failed to release the complete, corresponding source code to its customers. In early 2000, I did my first “CCS check” (complete, corresponding sourcecode check) — wherein one attempts to build the “CCS candidate” provided by the vendor to investigate whether the CCS candidate is actually complete, and whether it corresponds to the binaries that were distributed.</p> +<p>In those days, violations of copyleft licenses were rare, and once uncovered, companies eventually corrected their behavior. Yet, even then, it took years of work to convince the company to comply. And often, by the time compliance was achieved, a new generation of the product was released.</p> +<p>25 years later, we face the same problems with nearly every vendor.<br /> +Almost every product on the market today contains Linux, BusyBox, the GNU C Library, GNU Bash, and dozen other packages licensed under the GPL and/or LGPL. Almost none of these companies, even if an offer for source code is made, provide CCS.</p> +<p>This talk will look both to the past and future as we investigate software rights and freedoms of the average consumer, and how we reached this difficult situation. Attendees can learn the history of copyleft and its enforcement, and leave with an understanding of how much work remains and what individuals can do to make a real impact on the rights of users under copyleft.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Bradley Kuhn + + 1 + 1 + + + 13:20 + 00:15 + SPDXv3: Advancing Transparency in Software + https://www.sfscon.it/talks/spdxv3-advancing-transparency-in-software/ + + A newly released standard for complete information + A newly released standard for complete information + <p>SBOMs are a crucial tool for understanding the composition of software, which is particularly important in the context of managing security risks and licensing compliance. Recent regulatory efforts from, among others, the US and the EU, explicitly move towards requiring SBOM for each software delivery.<br /> +SPDX (System Package Data Exchange) is a freely available ISO standard that provides a set of specifications for communicating SBOM information. It offers a common format for companies and organizations to share important data accurately and efficiently.</p> +<p>This presentation will delve into the details of the newly released version of SPDX, providing a comprehensive understanding of their importance in the software industry.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Alexios Zavras + + 1 + 1 + + + 13:40 + 00:15 + (re)classifying FOSS licenses + https://www.sfscon.it/talks/reclassifying-foss-licenses/ + + New strategy for classifying licenses in a better way + New strategy for classifying licenses in a better way + <p>There are many efforts trying to classify licenses, for different use cases such as checking compatibility or for complying with the license terms. Most of these efforts seem to, explicitly or implicitly, have a certain use case in mind.</p> +<p>This project sets out to:<br /> +Consider provisioning case &#8211; how is the software provided to your user (e.g. binary distribution, SaaS, Web UI)<br /> +Consider use case &#8211; how is the software used (e.g. compiler, library)<br /> +Trust model &#8211; why should you trust the contributor of a classification or you should be able to exclude a contributor’s work etc<br /> +Identify and generalize FOSS license clauses<br /> +Identify and generalize when a clauses is triggered<br /> +Determine how clauses are compatible with each other (a license clause matrix)<br /> +Identify the clauses and triggers for each license</p> +<p>Keeping track of how 100 licenses are compatible with each other will result in a matrix with 10 000 (100 x 100) values. This is hard to maintain. Extending to 200 licenses requires 40 000 values. By instead looking at the license clauses we will end up with a much smaller problem, assuming we identify 20-30 of them, which will result in a matrix of 400-900 values. This is big, but maintainable. Adding a new license will not increase the size of the (license clause) matrix, which means that our approach scales much better. From the license definitions and license clause matrix we can compile a license compatibility matrix (for fast compatibility lookup).</p> +<p>This project sets out to provide to users:<br /> +A license obligation checklist for each provisioning case &#8211; for making compliance checks easy<br /> +A license compatibility matrix for each provisioning case &#8211; for fast compatibility lookup</p> +<p>All data and source code will be released under FOSS licenses.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Henrik Sandklef + + 1 + 1 + + + 14:00 + 00:15 + Lessons from the EU&#8217;s Next Generation Internet Initiatives + https://www.sfscon.it/talks/lessons-from-the-eus-next-generation-internet-initiatives/ + + What We've Learnt From Looking At 500 Free Software Projects + What We've Learnt From Looking At 500 Free Software Projects + <p>The FSFE is a consortium member of the EU&#8217;s Next Generation Internet initiatives (https://fsfe.org/activities/ngi/ngi.en.html). As part of our work there over the past 6 years, we have looked at hundreds of participating Free Software projects, to assist them with their legal and licensing questions, as well as to help them become REUSE compliant.</p> +<p>This talk will speak about some simple trends in Free Software legal and licensing that we&#8217;ve observed over the years in independent Free Software projects and their developers, and how these affect aspects of the Free Software ecosystem.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Gabriel Ku Wei Bin + + 1 + 1 + + + 14:20 + 00:15 + The ZOOOM project: final results and future outlooks + https://www.sfscon.it/talks/the-zooom-project-final-results-and-future-outlooks/ + + <p>The ZOOOM project, concluding in Sept 2024, aimed to raise awareness about the role of open licenses (open source software, open hardware, and open data &#8211; 3Os) in intellectual property valorization. In this talk, we&#8217;ll summarize key results, share recommendations for businesses leveraging 3Os, and demonstrate tools developed to aid knowledge generators and supporting organizations in navigating the legal and business implications of 3Os. Additionally, we&#8217;ll discuss the future of ZOOOM and its potential impact on the industry and research.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Elisa Morganti + + 1 + 1 + + + 14:40 + 00:15 + AI Law & Ethics: developing responsible AI systems + https://www.sfscon.it/talks/ai-law-ethics-developing-responsible-ai-systems/ + + <p>The aim of this talk is to explore AI law and ethics in developing responsible AI systems. It covers the forthcoming AI Act and EU regulations, focusing on accountability, risk management, and privacy-by-design. Through use cases, it shows how developers can ensure AI transparency, fairness, and compliance, balancing innovation with ethics. Attendees will gain insights for creating sustainable, ethical AI solutions.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Federico Sartore + Francesco Vadori + + 1 + 1 + + + 15:00 + 00:15 + Impact and Innovation: The Crucial Role of OSPOs in Shaping a More Sustainable Capitalism + https://www.sfscon.it/talks/impact-and-innovation-the-crucial-role-of-ospos-in-shaping-a-more-sustainable-capitalism/ + + <p>In an era where sustainability and responsible innovation are not just valued but expected, Open Source Program Offices (OSPOs) stand at the forefront of a transformative wave that merges open innovation with sustainable business practices. This session explores the pivotal role of OSPOs in fostering open innovation environments that not only drive technological advancement but also align with the principles of impact-oriented capitalism</p> +<p>We will delve into how OSPOs can leverage open source ecosystems to catalyze change within their organizations, promoting not just compliance and security but also environmental, social, and governance (ESG) goals. Through case studies and practical insights, attendees will learn how integrating OSPO strategies with corporate sustainability objectives can create a powerful synergy that propels companies toward a more ethical and profitable future.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Stefano Pampaloni + + 1 + 1 + + + 15:20 + 00:15 + From Personalized to Programmed + https://www.sfscon.it/talks/from-personalized-to-programmed/ + + The Dilemma of AI Customization + The Dilemma of AI Customization + <p>When considering the core values of mass customization, such as individual expression, fun in co-creating, and creativity, AI may introduce disadvantages, potentially leading to the homogenization of experiences. This lightning talk aims to explore the potential risks and drawbacks of utilizing AI in mass customization, highlighting the tension between leveraging technology for customization and preserving the unique human elements that form the foundation of personalized experiences. Could the reliance on algorithms diminish the consumer’s role in the creative process? If so, it might challenge the essence of what makes mass customization truly unique and innovative.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Thomas Aichner + + 1 + 1 + + + 15:40 + 00:15 + Fostering Innovation in IT Businesses through Open Source Software Involvement + https://www.sfscon.it/talks/fostering-innovation-in-it-businesses-through-open-source-software-involvement/ + + <p>All IT companies depend on free and open source software to some extent. Once they reach a certain size, they spontaneously become supporters of the projects on which they base their business. This happens because of first order consequences: my business depends on it, if I help it strive, my business will benefit.<br /> +In this talk, we will address the second-order consequences of software engineers interacting with open source projects, and show why dedicating internal resources to this activity is an effective strategy for enabling the discovery of new or modified (software) entities, which is the prerequisite for innovation.<br /> +The benefits are visible for companies of any size, even if their business does not depend on a specific project to which they could contribute: compelling arguments will be presented to motivate business owners to encourage their IT staff to engage in open source activities (and to developers to convince their bosses).</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Daniele Gobbetti + + 1 + 1 + + + 16:00 + 00:15 + Tackling Openwashers, Freeloaders and Cuckoos + https://www.sfscon.it/talks/tackling-openwashers-freeloaders-and-cuckoos/ + + How to safeguard the Free Software market against unfair competition + How to safeguard the Free Software market against unfair competition + <p>Companies that produce and sell Free Software face a problem: some competitors use unethical and destructive means to compete, making their products cheaper and winning bids. This kind of market behaviour is increasingly becoming a problem for Free Software producers.</p> +<p>Destructive practices include marketing proprietary software under the guise of being Free Software, whether by using free/open wording, by introducing new licences that falsely appear to be free, or by imposing additional barriers that make it more difficult to use the freedoms offered by Free Software.</p> +<p>Other competitors sell Free Software products without contributing to their development and maintenance, profiting from the work of others but giving nothing back to the community. This allows them to offer low prices while raising the costs of maintenance for the original manufacturers. For some players, there seems to be no limit to their creativity when it comes to undercutting competitors and winning bids.</p> +<p>The Free Software Foundation Europe has been analysing these and other problematic market practices over the last few years. In this talk we will take a closer look at them and show why they harm Free Software manufacturers and the Free Software ecosystem. We will then discuss ways to limit the success of such practices.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Johannes Näder + + 1 + 1 + + + 16:20 + 00:15 + Web Accessibility is actually well-forgotten old + https://www.sfscon.it/talks/web-accessibility-is-actually-well-forgotten-old/ + + <p>Trends are cyclical, even in the tech world. A few years ago, everyone was talking about D&amp;I in the workplace. This season, web accessibility absolutely occupies the first lines of code. How is it shown? Let&#8217;s talk about it &#8211; many do not understand how to implement it in their project.</p> +<p>First, relax. This is a really complex topic that requires not only a well-created website, but also communication with real users who cannot fully use the Internet, for example, without a screen reader.</p> +<p>A checklist that will convince you to try implementing WA into your application:</p> +<p>◦ What can be adapted for WA?<br /> +◦ How is WA testing done?<br /> +◦ How to use AI in WA?</p> +<p>If we haven&#8217;t convinced you, then look at WA from the point of view of strengthening your personal brand in the market.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Sofia Etingof + Juri Solovjov + + 1 + 1 + + + 16:40 + 00:15 + LibreOffice as JavaScript idiomatic WebWidget + Library + https://www.sfscon.it/talks/libreoffice-as-javascript-idiomatic-webwidget-library/ + + Making LibreOffice a native part of the web, using FOSS for highly customizable office document handling in the browser, based on WASM. + Making LibreOffice a native part of the web, using FOSS for highly customizable office document handling in the browser, based on WASM. + <p>LibreOffice can be highly integrated into desktop and server applications and we wanted to make this also possible for web apps. Running fully client side with Web Assembly, LibreOffice can now be used and customized by a JavaScript idiomatic API, becoming an easy usable component for web development. With this Free Software opens the door to a completely different approach for bringing office document handling into the browser, then from what&#8217;s known from Google Docs and Co.. Use cases may be the integration of widgets with rich text documents, including classic desktop macros, into browser based applications or enabling JavaScript to interact live with values in spreadsheets. But LibreOffice can also work as background WASM library, converting documents from and to all supported formats like ODF (ODT, &#8230;), MS formats (DocX, XlsX, Doc, &#8230;), PDF or HTML, while applying custom conversion filters for things like macro sanitization.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Moritz Duge + + 1 + 1 + + + 17:00 + 00:15 + Using software tools and AI to audit e-commerce food regulations + https://www.sfscon.it/talks/using-software-tools-and-ai-to-audit-e-commerce-food-regulations/ + + <p>Selling food products on a website or e-commerce platform in Italy is subject to the Food Information of Consumers (FIC) regulations. These regulations dictate mandatory information that must be communicated on the product page, with fines for non-compliance. In this talk, we will cover the key guidelines and legal requirements, and demonstrate how we can use software tools and artificial intelligence to check large quantities of product listings for discrepancies. Join us to learn how to streamline the process of verifying food information and enhance consumer trust.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Davide Montesin + + 1 + 1 + + + 17:20 + 00:15 + Tag manager + https://www.sfscon.it/talks/tag-manager/ + + <p>Presentation of our tool, which is an free alternative to Google Tag Manager and also helps manage cookie banners.</p> +<p>Features:<br /> +&#8211; code injector<br /> +&#8211; code templating<br /> +&#8211; cookie banner manger</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Sandro Antonucci + + 1 + 1 + + + 17:40 + 00:15 + State of Microsoft Windows Refund (2024) + https://www.sfscon.it/talks/state-of-microsoft-windows-refund-2024/ + + Getting a Refund of your Microsoft Windows License - present and future + Getting a Refund of your Microsoft Windows License - present and future + <p>If you are a lover of the Free Software movement you probably already tried something else than Microsoft Windows on a computer.</p> +<p>What you may not know, is that computer resellers usually charge end-users with the Fee of the Microsoft Windows License, even before you accept the Microsoft Terms of Services, and even if you completely want to uninstall Windows from your computer.</p> +<p>This is a critical Tech Neutrality issue that fuels non-European proprietary software houses. What to do?</p> +<p>&#8211; heritage of Luca Bonissi against Big Tech(s)<br /> +&#8211; current status and problems<br /> +&#8211; opportunities in Europe, and partnership between Free Software Foundation Europe and Italian Linux Society.</p> +<p>Thanksgiving to community members who tried the procedure, and simplifying that procedure.</p> + + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + Ethics, Policy, Legal & Economics + https://www.sfscon.it/tracks/ethics-policy-legal-economycs-track-2024/ + + Valerio Bozzolan + + 1 + 1 + + + + + 10:30 + 00:30 + Ada & Zangemann + + Side Event - School Reading + Side Event - School Reading + Side Event,School Reading + 0 + 0 + + + + + 11:00 + 00:15 + Open Access for Museum Collections and Research + https://www.sfscon.it/talks/open-access-for-museum-collections-and-research/ + + <p>The digital era has revolutionised the way we access information and interact with it. Museums, as custodians of cultural and historical artefacts, can benefit substantially from this transformation. Open Access and FOSS can greatly increase the potential of museums for public outreach: enhance their educational impact and inspire new forms of cultural engagement and knowledge discovery. For example, by digitising collections and enabling Open Access for diverse audiences, accessibility barriers are eliminated and thousands of hidden treasures become available to both researchers and the wider public. Additionally, innovative data visualisations via FOSS platforms can reveal compelling insights into object collections and the research associated with them; Open Access can thus make complex research accessible and engaging to a broader audience. Through such practices, museums can democratise their activities and enrich the visitor experience. The process is not without obstacles; common challenges museums face in adopting Open Access policies are copyright issues, data privacy, and resource limitations.</p> +<p>The presentation will discuss the aforementioned opportunities and issues currently emerging in the museum sector. The talk will be illustrated with examples from the Deutsches Museum in Munich, the world’s largest museum of science and technology.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Artemis Yagou + + 1 + 1 + + + 11:20 + 00:15 + Journeying through Data Spaces – New Path to Interoperability? + https://www.sfscon.it/talks/journeying-through-data-spaces-new-path-to-interoperability/ + + <p>Data spaces play a pivotal role in advancing digitalisation and interoperability within and across different business domains, both on a national level and cross-borders. However, it&#8217;s not a new concept since its roots date back to 2005. The definition has evolved over the years and today it covers all four layers of interoperability defined by the European Interoperability Framework (EIF).</p> +<p>Today, the term data space has several different definitions depending on whom you ask. Also, multiple international initiatives are working on data spaces to create common governance models, specifications, reference implementations, etc. The aim of this talk is to discuss the data space concept, different actors working on data spaces and their roles and responsibilities, and available specifications and building blocks.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Petteri Kivimäki + + 1 + 1 + + + 11:40 + 00:15 + DOOF – an Open Source Orchestration Framework for Decentralized Consent Management + https://www.sfscon.it/talks/doof-an-open-source-orchestration-framework-for-decentralized-consent-management/ + + <p>DOOF stands for Data Ownership Orchestration Framework. It is a framework developed for NGI Trustchain Project within a broader Next Generation Internet scheme of the EU in order to address a lack of decentralization in consent management regarding users’ sharing of their data. The aim of DOOF is to revolutionize personal data governance and normalise the deployment of consent management and privacy enhancing technologies. It uniquely enables individuals to control their rights over data sharing, fostering greater trust and regulatory compliance, essential for building a resilient and transparent data economy.<br /> +DOOF targets the gap in current centralized consent management, where GDPR and Data Act demand seamless data exchange and regulatory compliance. Yet the sharing and consent management regarding users’ data is centralized &#8211; a responsibility of the data intermediary &#8211; which comes with great costs and liabilities.<br /> +With DOOF, Ecosteer aims to separate and decouple the layer of physical data transferring from the layer of consent management. DOOF offers companies a framework that allows them to easily adopt Privacy Enhancing Technologies (PETs) for the actual sharing of data and enforcement of users’ decisions.<br /> +The framework consists of a set of SDKs, libraries and a Smart Contract for decentralised consent management. The main component of the framework is a worker pipeline, consisting of extensible, plug-in processors. This pipeline contributes to the low-code movement, offering a framework that can be easily adapted to different business needs. Companies can easily build verticals on this existing framework by just extending some of its functionalities.<br /> +This talk will focus on the concept of decentralized consent management as well as pipeline-based orchestration framework, outlining the process of creating a novel, re-usable and extensible open-source project.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Georgiana Bud + + 1 + 1 + + + 12:00 + 00:15 + Accelerating territory&#8217;s development through Open Data + https://www.sfscon.it/talks/accelerating-territorys-development-through-open-data/ + + Open Data Hub and south tyrolean examples + Open Data Hub and south tyrolean examples + <p>In recent years, Open Data has revolutionized the way governments, companies and individuals access and use information. The openness of public and private data represents a milestone on the path towards a more transparent, participatory and competitive society.<br /> +Open Data represent a resource for society and businesses and contribute to the development of a territory. This added value manifests itself in various forms, including transparency and democratic participation, technological innovation, economic development and improved services.<br /> +The talk will focus on specific case studies from the Open Data Hub in the Autonomous Province of Bolzano, a region which has shown a strong commitment to the adoption and promotion of Open Data.<br /> +Through the analysis of these cases, the aim is to demonstrate how the initiatives based on Open Data have led to concrete and tangible results, offering useful and applicable insights also in extra-regional contexts.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Luisa Marangon + + 1 + 1 + + + 12:20 + 00:15 + Sensor Things API QGIS core provider + https://www.sfscon.it/talks/sensor-things-api-qgis-core-provider/ + + <p>Sensor Things API (STA, in short), is an OGC specification for storing and retrieving (timeseries of) Sensor Observations.</p> +<p>FROST-Server, developed by Fraunhofer IOSB, is one of the most consolidated implementations of STA with a very detailed documentation and a lot of background information. The implementation includes a REST endpoint to insert, modify and retrieve STA entities with a query language based on OASIS Odata URL patterns and query options.</p> +<p>A QGIS experimental plugin, developed by Deda Next srl in 2022 and implemented in python within the EU project Air-Break, is currently available to connect to STA-compliant endpoints and retrieve sensor data (e.g. European Air Quality data from this endpoint). The plugin has an embedded data provider which is currently designed to retrieve sensors&#8217; locations as geometrical features and then request the time series of observations for specific locations.</p> +<p>However, in order to offer support to a wider range of use cases and more complex queries on STA model entities, Faunalia and DedaNext (funded by BRGM) started to plan for a dedicated STA data provider for GIS: a development group was set up involving the QGIS community, formal acceptance of the proposal was sought within the QGIS community (QEP #257) and possible development options for the provider (ex: python vs C++) were analyzed. As STA is an OGC standard, it seemed appropriate to implement it in C++ as a core element of QGIS.</p> +<p>Development has therefore been carried out in close interaction with the QGIS developer community with the focus on supporting complex STA queries, implementing among other things:</p> +<p>&#8211; expansion of relations among model entities;<br /> +&#8211; independent attribute filtering and sorting on all entities;<br /> +&#8211; efficient data caching to limit unnecessary data transfers;</p> +<p>This new core element is available from QGIS version 3.37 (currently only available as nightly release).</p> +<p>Finally, plans are underway to develop a new version of the QGIS STA plugin (originally developed by Deda Next within project AirBreak) focused on data exploration and analysis that will be able to leverage on the newly released core STA data provider to support a wider range of use cases, such as:</p> +<p>&#8211; Time series analysis: This is the case of the old STA plugin. Fetch Locations, show them on the map. Then, upon selection of one location, fetch all related Things and Datastreams, and finally, fetch the Observations of the desired Datastream to be shown in a table or plot;<br /> +&#8211; Space-time series analysis: Given a selected set of Datastreams from a moving sensor, get all the FeaturesOfInterest of those Datastreams and plot them on the map, so to have a view of the path of the moving sensor and a hold on its values on every part of that path;<br /> +&#8211; Monitoring and inspection: Fetch all the latest observations of all Datastreams (or a selection based on the ObservedProperty) and show these at their Locations, styled by the result of the latest Observation of a given ObservedProperty. Then, in a second phase (eg. if a value is over a threshold), inspect the full timeseries of that one Datastream.<br /> +&#8211; Tracking of moving things: Show all Things with their current Location and their HistoricalLocations with the Temporal Controller (time slider).</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Matteo Ghetta + Luca Giovannini + + 1 + 1 + + + 12:40 + 00:15 + EO4MULTIHAZARDS Web Application + https://www.sfscon.it/talks/eo4multihazards-web-application/ + + <p>The EO4MULTIHA project (https://eo4multihazards.gmv.com/), funded by the European Space Agency, aims at developing an open database gathering and harmonizing event information coming from already existing event databases to support multi-hazard(-risk) research.<br /> +To pursue this aim, this project which has been developed in the EURAC research, Center for Sensing Solutions, presents a comprehensive web application designed to analyze and visualize multi-hazard events, developed using Django and PostgreSQL. Leveraging the strengths of open-source technologies, the application provides a robust platform for researchers, policymakers, and the public to access and understand the complexities of multi-hazard scenarios. The main parts of this web application is explained in the following paragraphs:</p> +<p>(i) The core of the application is built with Django, a high-level Python web framework known for its rapid development capabilities and clean, pragmatic design. PostgreSQL, a powerful and scalable open-source relational database system, ensures efficient data storage and management. Together, these technologies offer a reliable and flexible foundation for handling diverse and large datasets.</p> +<p>(ii) To visualize the events, Leaflet Map which is an open source contributor to the OpenStreet Map has been used.</p> +<p>(iii) To populate the database, the application exploits various RESTful APIs, integrating data from multiple sources, including satellite imagery, climatological records, in-situ measurements, and relevant statistical data. This multi-source approach allows for a comprehensive characterization of risks, exposures, and susceptibilities associated with multi-hazard events benefiting from the Open Data Standards such as OGC Standard.</p> +<p>(iiii)Key features of the application include spatial and temporal filtering of events, cross-linking of data sets for enhanced reusability, and compliance with open standards such as RESTful APIs and OGC standards. The platform is designed to be expandable, with the potential to incorporate additional locations and datasets in the future.</p> +<p>By providing an accessible online platform, this web application aims to support the understanding and analysis of multi-hazard events, facilitating informed decision-making and effective disaster management strategies. The use of open-source technologies and the integration of diverse data sources underscore the project&#8217;s commitment to innovation, scalability, and community-driven development.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Mahtab Niknahad + + 1 + 1 + + + 13:00 + 00:15 + BASIC CORE South Tyrol + https://www.sfscon.it/talks/basic-core-south-tyrol/ + + A project to solve the topographical complexity of the National Spatial Data Catalogue + A project to solve the topographical complexity of the National Spatial Data Catalogue + <p>The project has its roots in a precise and simplified cartographic updating methodology introduced by the Consortium of Municipalities of the Province of Bolzano in the early 2000s. This methodology, which was consolidated over the years, could no longer be applied following the adoption of the Territorial Data Catalogue (Ministerial Decree 10.11.2011 &#8220;Technical rules for defining the content specifications of geotopographic databases&#8221; and subsequent amendments) due to the complexity and articulation of the new national model. The primary objective of the project was to research and define a minimum set of information that could adequately describe the territory within the typical use context of the public administration, ensuring its sustainability in terms of the ability to keep it updated and aligned with the transformations of the territory. Simplifying the definition and understanding of the basic technical layer that every public administration producing geographic data must guarantee within their institutional activities for geotopographic databases is a fundamental step to adequately support territorial management. Lightened of the informational content already managed by the Provincial Administration within archives or sectoral Information Systems, and consequently already included in existing and consolidated maintenance and updating flows, as well as everything that can be considered three-dimensional data nowadays obtainable through faster and more accurate systems, the Basic Core (BC) specification was produced by reorganizing and simplifying the information levels contained in the National Territorial Data Catalogue with reference to the identified minimum subset of required information known as the National Core (NC). To make it practically usable, only the themes considered objectively useful and easily updatable were included in the Basic Core. Our presentation will outline the key points that enabled the design of the Basic Core content specification and illustrates the technological tools developed, as well as the automatic transformation and simplification procedures that led to the significant reduction in the number of object classes provided by the National Core (from 59 to only 23), demonstrating that the Basic Core project is not a merely theoretical exercise, but a practical and concrete application currently tested and successfully used in South Tyrol. The specifically developed Dashboard for managing, correcting and updating the provincial Geotopographic Database, built on the basis of this new simplified specification, will be explained in detail. This dashboard allows effective operation on every management aspect, including the crucial task of sharing maintenance responsibilities between the Provincial and Municipal levels, thus ensuring the full efficiency of this fundamental geographic base. Particular attention will be given to illustrating the guided editing functionality available directly from the online interface, as well as the options for creating and exporting QGIS projects. QGIS projects are designed to perform the most significant and advanced corrections and/or updates. We will conclude the overview of this innovative system with a demonstration of the processes for reimporting and validating the updated data. Finally, practical cases in which the Basic Core has been used will be presented, as well as future developments, already planned and those still under evaluation, that the system will receive in order to refine and make its use more robust.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Edoardo Scepi + + 1 + 1 + + + 13:20 + 00:15 + Sharing Connects People + https://www.sfscon.it/talks/sharing-connects-people/ + + The experience of Think Open at CIMeC + The experience of Think Open at CIMeC + <p>Think Open is an Open Science initiative born within CIMeC in 2018 whose goal is to build a virtual space within which researchers at the Center can share different kinds of outputs from research, integrating and merging information from different sources and stages of the knowledge-building process. A number of achievements have been made over the years, both from the point of view of training (seminars, hands-on, courses for doctoral students, awards, etc.) and implementation of best practices (code and data sharing, adoption of free-software tools, etc.). Here we will describe how sharing open practices in everyday working routines foster connections between people, creating practice-based communities.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Vittorio Iacovella + + 1 + 1 + + + 13:40 + 00:15 + Hacking your (electric) car: the importance of Open Data + https://www.sfscon.it/talks/hacking-your-electric-car-the-importance-of-open-data/ + + Gathering information from the OBD (On Board Diagnostic) port of your car could be challenging + Gathering information from the OBD (On Board Diagnostic) port of your car could be challenging + <p>Any car has a diagnostic connector from which you can gather and/or set data from the various ECU (Engine Control Unit) that are present in your car, such as odometer, temperatures, motor rotation speed, accelerator depression percentage, wheel angle, lights, and – in an electric car – information about battery, remain energy, charging/discharging power, etc.<br /> +The big challenge is that the meaning of fathered data is usually not known and car manufacturers are reluctant to share this information.<br /> +This talk will illustrate how to scan the available data and make reverse engineering in order to try to create a shared database containing (useful) car data and PIDs (Parameter IDs) from ECUs of your car.</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Luca Bonissi + + 1 + 1 + + + 14:00 + 00:15 + The Innovation Paradox + https://www.sfscon.it/talks/the-innovation-paradox/ + + Do you really know how to unleash and manage innovation? + Do you really know how to unleash and manage innovation? + <p>In the era of the Fifth Industrial Revolution, leaders, innovators and pioneers design, generate, and shape future-proof organizations, driven by a meaningful purpose promoting social impacts, combining emerging technologies and new ways of collaborating and conceiving work. While the &#8220;why&#8221; is clear and quite declared by many, the &#8220;what&#8221; to do and the &#8220;how&#8221; to do it remain very nebulous and, in some cases, obscure. Those ones who lead innovation within an organization suffer the innovation paradox: must innovate without knowing what and how. Innovators and pioneers are often alone, without a framework and processes for an open innovation execution. How can we unlock and unleash innovation, ensuring that the actions taken are always driven by what is truly needed to evolve your organization?</p> + + Data Spaces + Data Spaces + Data Spaces + https://www.sfscon.it/tracks/data-spaces-track-2024/ + + Andrea Solimene + + 1 + 1 + + + 14:20 + 00:15 + The FSFE Italy Project from Understanding to Testing + https://www.sfscon.it/talks/the-fsfe-italy-project-from-understanding-to-testing/ + + How I applied design-thinking to re-design the Italian Free Software Community + How I applied design-thinking to re-design the Italian Free Software Community + <p>The role of Deputy Coordinator Italy within the Free Software Foundation Europe (FSFE) was born in 2022 out of the need of re-establishing the presence of the Foundation on the territory. I designed this three years experimental project together with the <a href="https://freesoftwarelab.noi.bz.it/">Free Software Lab</a> of NOI Techpark with the value proposition of (re)designing the FSFE Italian Community.</p> +<p>The project followed a human centric approach, moving along the five core stages of design-thinking. The goal of my talk is to describe the FSFE Italy project and the design-thinking approach adopted.</p> +<p>The first year (Y1) served as the understanding phase: I got involved as an FSFE representative in the main communication channels used by the Free Software (FS) community on the territory. I conducted interviews with volunteers, associations’ heads and enthusiasts, took part into the main FS events organized on the territory, mapped all stakeholders (understanding-observing) and created my own point of view (POV). By the end of 2022 I had already became an established FSFE representative on the territory, having gathered inputs and ideas on how to kick off the community into year two (Y2). The goal of year two was to build on these new ideas (ideation) and put these thoughts into action (prototyping) by finding common goals and activities with the main FS associations active on the territory and signing Memorandum of Understandings, preparing the ground to test it in the third year (Y3). Guess what was the result?</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Marta Andreoli + + 1 + 1 + + + 14:40 + 00:15 + NGI: No more EU funding for Free Software?! + https://www.sfscon.it/talks/ngi-no-more-eu-funding-for-free-software/ + + <p>During the summer the European Commission made the decision to stop funding Free Software projects within the Next Generation Internet initiative (NGI). This decision results in a loss of €27 million for software freedom. Since 2018, the European Commission has supported the Free Software ecosystem through NGI, that provided funding and technical assistance to Free Software projects. This decision unfortunately exposes a larger issue: that software freedom in the EU needs more stable, long-term financial support. The ease with which this funding was excluded underlines this need.<br /> +This talk shows the urgent need for sustainable, long-term financial support for Free Software to ensure Europe&#8217;s technological independence.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Alexander Sander + + 1 + 1 + + + 15:00 + 00:15 + What the open source community means to me + https://www.sfscon.it/talks/what-the-open-source-community-means-to-me/ + + Some very personal thoughts on why contributing can enrich your life + Some very personal thoughts on why contributing can enrich your life + <p>Everytime I tell my friends about my hobby which noawadays has also become my job, I face lots of questions. A worldwide community? Contributors around the globe? An open source community? What is this all about?</p> +<p>In this talk, I&#8217;d like to share my very personal view about what the open source community means to me, how to grow from user into community member, how the credit of trust helps you to discover your own skills, how to make friends around the world and why it&#8217;s not only fun to get active in a community, but also a big benefit for your whole life that can help you to broaden your mind.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Florian Effenberger + + 1 + 1 + + + 15:20 + 00:15 + A Journey of Contribution and Collaboration in Open Source + https://www.sfscon.it/talks/a-journey-of-contribution-and-collaboration-in-open-source/ + + Why Foundations are Essential + Why Foundations are Essential + <p>Have you ever worked on a project that didn&#8217;t use any open source tools, libraries, or products? Didn&#8217;t think so&#8230;Using open source has been such an integral part of our daily work life that we don&#8217;t even think about it. We just expect it to be available, secure, stable, and bug-free. But how many of you are actually contributing back to an open source project?</p> +<p>This session will go through a couple of the aspects to consider when you are embarking on your open source journey. We will look at different kinds of open source projects, and what the open source foundations bring to the table.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Ivar Grimstad + + 1 + 1 + + + 15:40 + 00:15 + Jakarta EE: Why and how to get involved in Open Source Software? + https://www.sfscon.it/talks/jakarta-ee-why-and-how-to-get-involved-in-open-source-software/ + + <p>In this session you will learn how to become part of an open source community, how to get involved and most importantly why you need to do it! You will learn about the Jakarta EE and its plans for the future, so you can start right away! This presentation will also provide you with key insights into the industry-wide, open source collaboration to modernize Java enterprise systems for cloud-centric use cases.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Tanja Obradovic + + 1 + 1 + + + 16:00 + 00:15 + From Concept to Camp: Project Management Strategies for IT Education Events + + + <p>In today’s fast-paced technological landscape, the need for immersive and hands-on educational experiences is more crucial than ever. &#8220;From Concept to Camp: Project Management Strategies for IT Education Events&#8221; delves into the meticulous process of organizing successful IT camps from a project management perspective.</p> +<p>Join us as we explore the comprehensive journey of bringing an IT camp from initial concept to a fully realized event. We will cover essential project management strategies, including planning, scheduling, resource allocation, risk management, and post-event evaluation. Participants will gain insights into: Defining Objectives and Scope; Budgeting and Resource Management; Team Collaboration and Leadership; Marketing and Participant Recruitment; Logistics and Event Planning; Evaluation and Feedback.</p> +<p>Through real-world examples and practical advice based on the Red Hat Summer Camp Brno project, this talk will equip you with the tools and knowledge needed to transform your vision of an IT camp into a reality.</p> +<p>Whether you’re planning your first event or looking to enhance your current approach, this session will provide valuable takeaways to elevate your project management skills and deliver exceptional educational experiences.</p> + + SFSCON + SFSCON + SFSCON + + Juri Solovjov + Yuliia Kliuchnikova + + 1 + 1 + + + 16:20 + 00:15 + Building the Public Interest Desktop + https://www.sfscon.it/talks/building-the-public-interest-desktop/ + + Our experience organizing GNOME's Sovereign Tech Fund project + Our experience organizing GNOME's Sovereign Tech Fund project + <p>The Sovereign Tech Fund is a new funding program for critical free software infrastructure by the German government. As part of this, members of the GNOME community have been working on fixing important issues across the free desktop stack. This includes security, accessibility, maintainability, hardware support, and more.</p> +<p>In this talk Sonny and Tobias will give an overview of how we organized the project, the work done as part of it, and the massive impact a relatively small amount of public money can have on making the free desktop better.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Tobias Bernard + Sonny Piers + + 1 + 1 + + + 16:40 + 00:15 + Let&#8217;s share our love for Free Software + https://www.sfscon.it/talks/lets-share-our-love-for-free-software/ + + I love Free Software Day 2025 + I love Free Software Day 2025 + <p>We often underestimate the power of a simple Thank You. Free Software contributors do important work for our society and the &#8220;I Love Free Software Day&#8221; on 14 February is the perfect opportunity for you to express your special gratitude. Since 2010, we have celebrated this wonderful annual event with an ever-growing and diverse community. ♥</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Ana Galan + + 1 + 1 + + + 17:00 + 00:15 + MoodleXR: A Next-Generation Open-Source Platform for Immersive Learning + https://www.sfscon.it/talks/moodlexr-a-next-generation-open-source-platform-for-immersive-learning/ + + <p>This project aims to develop a state-of-the-art Learning Management System (LMS) based on Moodle, optimized for delivering Virtual Reality (VR) and Augmented Reality (AR) learning modules.</p> +<p>By leveraging the open-source nature of Moodle and integrating advanced immersive technologies, the project seeks to create an innovative educational platform that transforms traditional learning experiences.</p> +<p>The LMS will incorporate open-source VR/AR tools and libraries, such as A-Frame, AR.js, and Blender, enabling educators to seamlessly integrate and manage immersive content. It will support various VR headsets and AR devices, ensuring broad accessibility. The platform will feature interactive learning modules, robust analytics, and scalable infrastructure, all built on open-source technologies like Kubernetes and Matomo.</p> +<p>Additionally, the project will emphasize accessibility and privacy compliance, utilizing tools like WAVE and Let’s Encrypt.</p> +<p>By fostering a community-driven development model, this LMS will offer a flexible, cost-effective solution that revolutionizes education through experiential learning, making it more engaging, interactive, and effective for students and educators alike.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Luca Bagna + + 1 + 1 + + + 17:20 + 00:15 + Implementing digital examinations in free software systems + https://www.sfscon.it/talks/implementing-digital-examinations-in-free-software-systems/ + + <p>In Finnish upper secondary schools course and final exams have been digital for some years now. Ordinary student laptops are routinely booted from USB flash drives to a special operating system, which provides a restricted environment allowing students to take an exam with no distractions or tools to cheat. Up to these days, this was implemented with Debian GNU/Linux, also meaning that student laptops must be Linux-compatible.</p> +<p>This is now changing. Not every modern laptop can simply boot from a USB drive to run Linux, these including chromebooks, Apple laptops and some new Windows laptops. Some schools may want to buy these devices and do not want a separate set of computers only for examinations. The current system is being replaced by an exam application, meant to run on different operating systems, which are to provide guarantees that no cheating can occur. The exam application activates the &#8220;assessment mode&#8221;, provided by operating system vendors, and this mode should provide a safe place where no cheating can occur, even on computers owned by the students.</p> +<p>Does that even make sense? Can that really be done, and with free software? In this presentation we take a peek at some technologies in Linux systems that can be used to secure a computer against an attacker with a physical access to the machine. We will also look at possible ways to implement an &#8220;assessment mode&#8221; in Linux desktops.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Juha Erkkilä + + 1 + 1 + + + 17:40 + 00:15 + Let’s spark children’s interest in coding + https://www.sfscon.it/talks/lets-spark-childrens-interest-in-coding/ + + Our experiences and how you can contribute + Our experiences and how you can contribute + <p>Today it is impossible to imagine daily life without software. The majority of us can&#8217;t spend a single day without using it. People use software in the workplace, on laptops, and on mobile phones. Software is also found in less obvious places however: in trains, cars, televisions, washing-machines, fridges, and many other devices. None of these devices could function without software. Without software we couldn&#8217;t write e-mails, make phone calls, go shopping, or travel as we are accustomed to. Software is our society&#8217;s central tool. How do we ensure that the next generation is motivated and capable of shaping technology for society&#8217;s benefits?</p> +<p>The Free Software Foundation Europe&#8217;s volunteers and staff have interacted with over 1700 children between 6 to 10 years in the past months. Children, especially girls, afterwards were motivated to start experimenting with hardware and software. In the discussions we saw that they realise how crucial technology will be for them. Furthermore with the FSFE&#8217;s coding competition &#8220;Youth Hacking 4 Freedom&#8221; we gathered experiences working with teenagers who program, tinker, and have fun with software.</p> +<p>Learn more about the experiences how the FSFE sparks children&#8217;s and teenagers interest to tinker, experiment and program. Furthermore you will see how fulfilling those activities can be for yourself.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Matthias Kirschner + + 1 + 1 + + + + + 11:00 + 00:15 + Open-source silicon chips + https://www.sfscon.it/talks/open-source-silicon-chips/ + + <p>We have all heard that there is &#8216;Intel inside&#8217;, but what is inside Intel? Almost all integrated circuits today are literally black boxes. They may contain unwanted or malicious features and, most importantly, they do not encourage reuse, nor do they allow it. The two main causes of such secrecy are: 1. standard design tools explicitly forbid the publication of any output, and 2. most foundries disallow disclosing technology details. Designers moreover face additional problems: The licence cost of standard design tools is unaffordable for most SMEs (unless questionable discount policies are applied), and lock-in threats arise at many levels, from IP blocks to foundry details to file formats. Yet exceptional progress has been made in recent years: Hundreds of silicon chips have been designed using free and open-source tools, and three foundries have made details of their processes public: The doors to free silicon are open! Hence how is politics reacting? What are the next steps to be taken? What are the opportunities for users, society and companies?</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Luca Alloatti + + 1 + 1 + + + 11:20 + 00:15 + Opt out? Opt in? Opt Green! Bringing Free Software To Eco-Consumers + https://www.sfscon.it/talks/opt-out-opt-in-opt-green-bringing-free-software-to-eco-consumers/ + + <p>Free Software gives consumers what they want, but many don&#8217;t know it &#8230; yet! We aim to change that by reaching out directly to eco-consumers in the &#8220;Opt Green&#8221; project, a new KDE Eco initiative funded by the German Environmental Agency.</p> +<p>Consumers want sustainable software: in a recent European poll 50% of respondents say the two primary reasons they purchase a new device are non-functioning software and software performance issues. This is as good a time as ever for an &#8220;Opt Green&#8221; message. In the next couple of years Windows 10 end-of-life and the phasing out of Intel-based macOS support will make e-waste out of hundreds of millions of computers. Functioning but vendor-abandoned devices can stay out of the landfill and in use for many years to come. With software designed for users&#8217; needs, not vendors&#8217;, it is possible to run software on the devices one already owns. Lean, efficient Free Software even runs on devices that are decades old. This is good for users, and better for the environment!</p> +<p>In this lightning talk I will provide an overview of the whys and hows of KDE Eco&#8217;s &#8220;Opt Green&#8221; initiative. Through campaigns and workshops over the next 2 years, we will raise awareness about environmental issues driven by software and demonstrate the power of Free Software to drive down resource use and keep devices running smoothly for years beyond official vendor support. This is all possible because Free Software *is* right-to-repair software: it removes vendor dependencies and guarantees transparency and user autonomy, providing full control over software, and thus hardware. I will describe the ways we plan to reach our target audience, including materials designed for eco-consumers and events well outside usual tech circles, such as open-air organic, artisanal, and fair trade markets, cultural centers, and others. These activities give us the opportunity to align our values in the Free Software community with those in allied communities striving for a sustainable modern lifestyle.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Joseph P. De Veaugh-Geiss + + 1 + 1 + + + 11:40 + 00:15 + ClapMetrics: Decoding Users’ Gender and Age Through Smartwatch Gesture Dynamics + https://www.sfscon.it/talks/clapmetrics-decoding-users-gender-and-age-through-smartwatch-gesture-dynamics/ + + <p>In this presentation, we introduce ClapMetrics &#8211; an innovative and seamless method for deducing the gender and age of smartwatch users. This system ingeniously harnesses the capabilities of the smartwatch’s integrated 3D sensors — specifically, the accelerometer and gyroscope—to capture the wearer’s arm movements during a clapping action. ClapMetrics operates on the principle that each clap is a complex interplay of motion, unique to the individual, much like a fingerprint. By analyzing these movements, ClapMetrics can gather rich biometric data without any active input or effort from the user, making it a remarkably non-intrusive technology. We will delve into the specifics of how ClapMetrics processes sensor data to make its estimations. We will explore the Neural Network’s architecture, the training process, and how the model interprets the sensor data to make reliable predictions about the wearer’s gender and age.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Attaullah Buriro + + 1 + 1 + + + 12:00 + 00:15 + Adoption Determinants of Open Hardware Across Industries + https://www.sfscon.it/talks/adoption-determinants-of-open-hardware-across-industries/ + + <p>Open Hardware (OH) is revolutionizing the way we approach technology in several areas, such as agriculture and healthcare. These areas, which are fundamental to food availability and human well-being, are undergoing an important shift as open hardware licensing strategies, inspired by open-source software (OSS), make solutions more accessible, affordable, and customizable. In this talk, we review major factors determining the use and adoption of OH technologies, including economic advantages, opportunities, and challenges.<br /> +Similar to OSS, OH applications are gaining momentum. In agriculture, farmers and researchers are turning to OH for precision farming tools, environmental monitoring, and robotics. These technologies not only reduce development costs but can be easily adapted to specific local needs, enhancing their effectiveness in diverse agricultural environments – crucial for small-scale farmers in developing countries and rural areas who face financial constraints. Likewise, the healthcare industry is benefiting from OH through the development of affordable medical devices, diagnostic tools, and treatment systems. The high costs and regulatory challenges associated with traditional medical devices often limit access to essential healthcare, especially in underdeveloped regions. Examples include open-source ventilators, syringe pumps, and diagnostic devices.<br /> +Applications of OH will be showcased through a comparative analysis of successful projects, particularly those with high engagement on platforms like GitHub, characterized by community engagement, active forums, and regular updates. Finally, we will draw conclusions about the potential of OH for industries beyond agriculture and healthcare, encouraging further innovation and collaboration in the open-source community.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Seckin Celik + Davide Serpico + + 1 + 1 + + + 12:20 + 00:15 + Enabling global interoperability among smart devices is only possible through Open Source + https://www.sfscon.it/talks/enabling-global-interoperability-among-smart-devices-is-only-possible-through-open-source/ + + Oniro and OpenHarmony a cooperation to build a global ecosystem + Oniro and OpenHarmony a cooperation to build a global ecosystem + <p>Global interoperability is probably the biggest problem that smart devices have been studied for more than 10 years. Multiple solutions have been proposed with different results, but none of them has established a reference framework and a global adoption. One of the main reasons for this to stay as a key element for research and investment is the diversity among the whole technology stack and geographical dispersion of device manufacturers. In the last years, there is a solution that is capturing the attention by demonstrating how an open source operating system can enable global interoperability in a huge domestic market like China. This solution is OpenHarmony and through a cooperation with Eclipse Foundation Oniro project, it is intended to use open source to drive interoperability and therefore solve one of the biggest challenges in the IoT and smart device industry. During the talk, it will be presented the approach followed by these two independent initiatives to cooperate while keeping the independence of the open source communities behind them.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Juan Rico + + 1 + 1 + + + 12:40 + 00:15 + Smart Werke Meran &#8211; Lorawan Use Cases + https://www.sfscon.it/talks/smart-werke-meran-lorawan-use-cases/ + + Our Use Cases realized with 100% Open Source + Our Use Cases realized with 100% Open Source + <p>Stadtwerke Meran has had a Chripstack Lorawan server and 19 Lorawan gateways for a year now. Merano has a well-developed Lorawan network.</p> +<p>We have realized the following use cases:</p> +<p>Remote control of public lighting.<br /> +Temperature measurement ( Just Nature project)<br /> +Smart metering for our water customer<br /> +GPS tracking for waste compactors of our major customers</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Stefan Mutschlechner + + 1 + 1 + + + 13:00 + 00:15 + 2025 scenario on OpenISA OpenPower Open Hardware computing + https://www.sfscon.it/talks/2025-scenario-on-openisa-openpower-open-hardware-computing/ + + 2025 Real scenario on Open Hardware based on OpenISA OpenPower CPU + 2025 Real scenario on Open Hardware based on OpenISA OpenPower CPU + <p>We see on 2025 which OpenISA OpenPower low power chip will give life to new Open Hardware computers, we examine in detail which open hardware computers will be ready for 2025 based on these chips. It will be the first time that OpenPower OpenISA low power Chip will be produced, and what is more, it will be produced from other Silicon Companies different from IBM.<br /> +We will see who are the GNU/Linux distros that support PPC64 and PPC64el and PowerPC architecture that runs on these computers and how you can join to experiment with it and push forward these architectures.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Roberto Innocenti + + 1 + 1 + + + 13:20 + 00:15 + The SMART Box of AURA Project + https://www.sfscon.it/talks/the-smart-box-of-aura-project/ + + <p>AURA project centers on the development of &#8220;Green &amp; Smart Urban Furniture,&#8221; a new generation of urban furniture that transcends traditional roles by incorporating eco-friendly and intelligent features. These urban elements are designed with bioabsorbent vegetation capable of mitigating atmospheric pollutants, making them environmentally sustainable. Furthermore, they are outfitted with advanced IoT sensors that monitor a range of environmental parameters, including climate data, urban pollution, and vehicular traffic.</p> +<p>These smart urban furniture units not only establish an extensive urban monitoring network but also actively combat pollution through the sequestration and reduction of harmful substances via the integrated vegetation. The embedded IoT sensors provide innovative capabilities for tracking the impact of these elements on the surrounding urban environment, such as monitoring air pollution levels and assessing the effects of heat islands. Each furniture piece is equipped with a &#8220;smart box,&#8221; a hardware system constructed using low-cost commercial off-the-shelf (COTS) components. This system includes climate and environmental sensors, gas measurement devices, a processing unit, and a data transmission module. The accompanying software, developed from scratch, delivers localized information—such as CO2 sequestration, temperature, and humidity—and contributes to a comprehensive environmental monitoring network aimed at predictive analysis, including weather risks, heat wave alerts, and health risks associated with air pollution. The presentation will delve into the custom-developed software and its ability to meet the field-level requirements of the AURA Architecture, encompassing individual sensors, sensor nodes (smart-boxes within the furniture), and the broader network of these nodes. It will highlight the significant impact and benefits of utilizing free and open-source technologies throughout the development process. Key focus areas include the creation of drivers for individual sensors, with emphasis on the most representative examples, the development of software for sensor nodes—covering features like self-testing, over-the-air (OTA) updates, and MQTT communication—and the design of a dynamic web app for data presentation, leveraging JavaScript, Bootstrap, and a JSON Data Lake. This comprehensive approach underscores the importance of open technologies in accelerating innovation, ensuring flexibility, and delivering robust, scalable solutions for smart urban environments.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Angelo Serino + + 1 + 1 + + + 13:40 + 00:15 + Raspberry Pi and Node-RED: Open Source Tools for Local Automation and Industrial IoT applications + https://www.sfscon.it/talks/raspberry-pi-and-node-red-open-source-tools-for-local-automation-and-industrial-iot-applications/ + + <p>This talk will explore how Raspberry Pi and Node-RED enable robust solutions for automation and control systems in both industrial and local applications. Leveraging open-source technology, these platforms can handle a wide range of tasks, from reading sensor data and managing actuators, to controlling devices through industrial communication protocols such as Modbus, RS485 ascii RTU etc. Node-RED&#8217;s message-driven architecture simplifies the creation of control logic, even for complex operations, while Raspberry Pi serves as a powerful and cost-effective alternative to traditional PLCs and IPCs. The integration of these tools allows for seamless data processing, remote communication, and the development of HMI interfaces both user-friendly or more traditiconal SCADA-like, making these technologies ideal for creating IIoT-native solutions. This presentation will focus on the technical capabilities, showing how these platforms can empower engineers and developers to build flexible and scalable automation solutions.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Federico Boero + Alberto Nicoletti + + 1 + 1 + + + 14:00 + 00:15 + Approaches to Object Detection: Edge-Based and AI-Based + https://www.sfscon.it/talks/approaches-to-object-detection-edge-based-and-ai-based/ + + <p>This presentation explains why we passed to the expert system based on edge-based object detection on traditional image analysis techniques to the AI-based, leveraging advanced machine learning. The first method uses parameters derived from image analysis tools, focusing on attributes such as shape, size, and color of objects, informed by preliminary tests and expert data. The machine learning method employs a sophisticated algorithm that dynamically learns and identifies objects in images. We used both approaches using diverse datasets and measured their accuracy and efficiency under various conditions. The aim of this presentation is to show the improvement obtained by using the AI-based system applied for real-time detection and classification, offering insights into their practical strengths and applications.</p> + + Open Hardware + Open Hardware + Open Hardware + https://www.sfscon.it/tracks/open-hardware-track-2024/ + + Giovanni Giannotta + Orneda Lecini + + 1 + 1 + + + 14:20 + 00:15 + Proxmox Backup Server: Backup for your Datacenter + https://www.sfscon.it/talks/proxmox-backup-server-backup-for-your-datacenter/ + + <p>Backups are an essential component of every IT infrastructure, from small scale businesses up to large datacenters, spanning multiple locations. With the Proxmox Backup Server a fully Free and Open Source backup solution is available, being highly integrated with the Proxmox Virtual Environment.<br /> +This talk will present a short overview of the capabilites provided by Proxmox Backup Server, giving some insights into new and recently added features. Further, by peeking into the inner workings and the software design will show how fast, space efficient and reliable backups are created and how data consistency and integrity are guaranteed. Topics covered will include backups for Virtual Machines and Linux Containers running on top of Proxmox Virtual Environment as well as host level backups.</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Christian Ebner + + 1 + 1 + + + 14:40 + 00:15 + Cloud Costs with ClickHouse and OpenCost + https://www.sfscon.it/talks/cloud-costs-with-clickhouse-and-opencost/ + + <p>Managing costs and billing across numerous Cloud-managed Kubernetes clusters presents significant challenges. In this talk, we&#8217;ll explore these challenges and discuss solutions using ClickHouse and OpenCost. Leveraging ClickHouse&#8217;s capabilities, we&#8217;ll demonstrate how it efficiently imports diverse Cloud billing data streams. Additionally, we&#8217;ll delve into how OpenCost addresses the complexities of real-time cost management within a multitenant architecture. Join us to uncover practical insights into optimizing cloud costs effectively.</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Denys Kondratenko + + 1 + 1 + + + 15:00 + 00:15 + Ansible + https://www.sfscon.it/talks/ansible/ + + Lazy Engineer's Best Friend! + Lazy Engineer's Best Friend! + <p>For a software engineer DRY is not only a washing machine progam, but it represents a deeply-held mantra: Don&#8217;t Repeat Yourself.</p> +<p>To avoid repetitive manual work, automation tools like Ansible enable engineers to quickly configure infrastructure and easily deploy applications.</p> +<p>In this talk, we will explore the key concepts and benefits of Ansible for configuration management, deployment and orchestration of remote devices. We will start with an overview of Ansible&#8217;s utility, how it works, and common use cases. We will see how YAML files describe configurations and playbooks define automated tasks and processes.</p> +<p>Practical examples will show Ansible automation in action, including a quick introduction to initializing and keeping your operating system up to date by automating the installation and maintenance of system tools. We will also introduce the concept of dotfiles for configuration.</p> +<p>What are you waiting for? Learn how to spend 30 minutes automating 5-second tasks with Ansible! (It&#8217;ll save you time in the long run, I promise!)</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Marco Lampis + + 1 + 1 + + + 15:20 + 00:15 + Efficient Log Management in Large-Scale Kubernetes Clusters + + + <p>Large Kubernetes clusters can generate significant volumes of logs, especially when housing thousands of running pods. This may demand substantial CPU, RAM, disk IO, and disk space for storing and querying large log volumes. In this talk, we will look into different strategies of storing those logs in ElasticSearch, Grafana Loki and VictoriaLogs and examine how we can save 10x or more on infrastructure costs.</p> +<p>This talk presents real-world examples of efficient log management in large-scale Kubernetes clusters. It includes setup demonstrations, numerical data, and graphical representations from reproducible benchmarks.</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Aliaksandr Valialkin + + 1 + 1 + + + 15:40 + 00:15 + KubeVirt + + + making running virtual machines in a kubernetes cluster a mainstream activity + making running virtual machines in a kubernetes cluster a mainstream activity + <p>KubeVirt is a Kubernetes addon for running virtual machines inside a Kubernetes cluster.</p> +<p>Currently being in CNCF incubating state, it has a wide range of adopters by both vendors and end users, such as NVidia, Suse, ARM and Red Hat to name a few.</p> +<p>This talk gives an overview of what is currently possible with KubeVirt on your cluster and what its future may look like. We will describe some of the features it supports, i.e. VM Import, LiveMigration, Snapshot/Restore and Monitoring.</p> +<p>At the end of the talk attendees will have an idea of how they can use it to better integrate existing virtual machines with containers in their existing application landscape.</p> + + SFSCON + SFSCON + SFSCON + + Daniel Hiller + + 1 + 1 + + + 16:00 + 00:15 + Why free backup software matters + https://www.sfscon.it/talks/why-free-backup-software-matters/ + + <p>It is 2024, we&#8217;re in the middle of the cloud-era.<br /> +Almost every service you desire is available in &#8220;the cloud&#8221;.<br /> +At least some of your company&#8217;s critical data is stored at some cloud provider.<br /> +Does your provider actually keep backups?<br /> +Can you live with their Recovery Time Objective (RTO)?<br /> +Do you believe they will actually meet the RTO?<br /> +Maybe you have another copy of your data?<br /> +In a format that you can actually access and read?</p> + + DevOps + DevOps + DevOps + https://www.sfscon.it/tracks/devops-track-2024/ + + Andreas Rogge + + 1 + 1 + + + 16:20 + 00:15 + Demystifying JWTs + https://www.sfscon.it/talks/demystifying-jwts/ + + <p>JSON Web Tokens (JWTs) have become a popular method for securely transmitting information between two parties. They are widely used in modern web applications for authentication and data exchange. However, their inner workings and security implications can be complex and often misunderstood by the developers.</p> +<p>In this talk, we aim to demystify JWTs by exploring their structure, how they work, and the cryptographic mechanisms that ensure their integrity and confidentiality. We will discuss the components of a JWT, including headers, payloads, and signatures, and illustrate how they combine to form a token.</p> +<p>Furthermore, we will dive into best practices for JWT usage, common pitfalls to avoid, and security considerations such as token expiration, payload size, and the choice of cryptographic algorithms. Finally, we will explore how a WebSocket connection can be secured with JWTs. Security is increasingly an overlooked necessity while utilizing a protocol that does not support authentication by default.</p> +<p>By the end of the session, attendees will have a clear understanding of how JWTs operate, their advantages over traditional session-based authentication, and how to implement them securely in their own applications.</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Dominika Bobik + + 1 + 1 + + + 16:40 + 00:15 + Containerization and micro-services in real life change security and vulnerability management. Let’s Discuss. + https://www.sfscon.it/talks/containerization-and-micro-services-in-real-life-chandge-security-and-vulnerability-management/ + + Security Configuration for Containerization and micro-services applications + Security Configuration for Containerization and micro-services applications + <p>Containerization and micro-services change the way software is deployed and used in production contexts. Re-evaluation of the criteria for secure development and above all for secure configuration of these solutions. It would probably be appropriate to implement security already during the creation of the solution itself.</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Carlo Falciola + + 1 + 1 + + + 17:00 + 00:15 + Cyber Risk Management: let’s try to manage it with open source and free software + https://www.sfscon.it/talks/cyber-risk-management-lets-try-to-manage-it-with-open-source-and-free-software/ + + Open source solutions in the cybersecurity landscape, oriented to manage processes + Open source solutions in the cybersecurity landscape, oriented to manage processes + <p>Cyber Risk Management is what you need to manage to ensure your business can operate being aware of threats, vulnerabilities, and to ensure that your business transactions and data are confidential, intact, available.</p> +<p>Let’s discuss and explore solutions and resources coming from open source and free software that can help organization to manage their cybersecurity programs, with an approach that looks at sharing knowledge, adopt tools and pay attention to the budget.</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Graziano Specchierla + + 1 + 1 + + + 17:20 + 00:15 + IT Security – Don’t let Open Source Software become the next menace + https://www.sfscon.it/talks/it-security-dont-let-open-source-software-become-the-next-menace/ + + Criminals and Govs are levereging Open Source tools, libraries and software to break into organizations. Let's stop 'em. + Criminals and Govs are levereging Open Source tools, libraries and software to break into organizations. Let's stop 'em. + <p>There is a prevalent myth that open source software is inherently secure. However, this is not true. Open source software is susceptible to vulnerabilities just like any other software. Moreover, the fact that anyone can review the code does not guarantee that the right people will do so. Open source software faces two important threats than not everybody are aware of:</p> +<p>Vulnerabilities: Open source developers need to understand and communicate the security posture of their projects to users. They must adopt robust security practices. The Log4j incident in 2021, which led to the Log4Shell vulnerability, triggered a catastrophic wave of attacks due to inadequate support for the logging framework and its critical role in company procedures.</p> +<p>Dev teams infiltration: Criminal organizations and government hacking teams are executing highly sophisticated social engineering operations to infiltrate understaffed open source projects. Their goal is to compromise development teams and insert backdoors into the software. The most recent attack on a significant project was discovered in April 2024.</p> +<p>Objective of the Talk: Inform the community about these two security scenarios and demonstrate how to effectively address them.</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Giancarlo Calzetta + + 1 + 1 + + + 17:40 + 00:15 + Biting the Apple + https://www.sfscon.it/talks/biting-the-apple/ + + MacBook Forensic with Fuji + MacBook Forensic with Fuji + <p>Description: Fuji is a free software, licensed under GPL v3, that leverages Apple Software Restore (ASR) and Rsync to create forensic images of macOS systems. It operates on logged-in computers to efficiently capture disk images while maintaining data integrity.</p> +<p>Bypassing encryption on Apple silicon processors presents significant challenges due to their advanced hardware encryption mechanisms and secure enclave protections. These processors employ complex security protocols that safeguard data at a hardware level, making unauthorized access and decryption extremely difficult. Without proper authentication or specific exploits, forensic imaging on these devices requires substantial technical expertise and often necessitates the cooperation of the device owner.</p> +<p>We&#8217;ll see how to acquire forensically MacBook data with free software</p> + + Cybersecurity + Cybersecurity + Cybersecurity + https://www.sfscon.it/tracks/cybersecurity-track-2024/ + + Alessandro Farina + + 1 + 1 + + + + + 11:00 + 00:15 + Apisense – Easily monitor and track your REST-API data quality + https://www.sfscon.it/talks/apisense-easily-monitor-and-track-your-rest-api-data-quality/ + + An easy and modular solution to faulty REST-API data developed in collaboration with the Open Data Hub + An easy and modular solution to faulty REST-API data developed in collaboration with the Open Data Hub + <p>Ever had the issue of fetching invalid or faulty data from a REST-API and noticing only later, when everything broke down? Not anymore!</p> +<p>Apisense was developed in collaboration with the Open Data Hub to be an easy and modular tool to fit every need possible used to ensure and monitor the availability, quality and correctness of data provided via REST-APIs.</p> +<p>Sounds too good to be true? Tune in to find out how Apisense can help both producers and consumers of data to be aware of the quality and reliability of the data they provide/consume.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Aurelio Buonomo + Christian Zanotti + + 1 + 1 + + + 11:20 + 00:15 + MongoDB Alternatives: Is There A Need For A New Open Standard? + + + <p>This talk takes you on a journey through the history of SQL as an Open Standard, emphasizing its pivotal role in shaping the database industry. It also highlights the pressing need for a similar standard in MongoDB-compatible open databases. The presentation introduces FerretDB as a groundbreaking solution bridging MongoDB and open databases, ensuring seamless transitions without extensive application-level changes. This talk illuminates the importance of open standards and presents a path forward for enhanced compatibility and collaboration within the open-source database community.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Peter Farkas + + 1 + 1 + + + 11:40 + 00:15 + MariaDB Vector: Why your AI data should be in an RDBMS + https://www.sfscon.it/talks/mariadb-vector-why-your-ai-data-should-be-in-an-rdbms/ + + Databases and AI: How to supercharge application development with MariaDB vector + Databases and AI: How to supercharge application development with MariaDB vector + <p>As AI apps become mainstream, conventional IT wisdoms apply. AI apps must be no monoliths, but need to be logged, audited, and overall well integrated into normal IT. This means all AI data – vectors, input, output – is best stored in a normal RDBMS. Better still: In an open source database with performance, stability, and ease of use. Here is an overview of the AI opportunities, possibilities, methodologies, and features in MariaDB Server.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Kaj Arnö + + 1 + 1 + + + 12:00 + 00:15 + 1, 2, 3, Doc Kit! + https://www.sfscon.it/talks/1-2-3-doc-kit/ + + Automate the creation of software documentation + Automate the creation of software documentation + <p>Doc Kit is an open source command line tool that automates the creation of software documentation and release notes.<br /> +It can be used in conjunction with DocBook Authoring and Publishing Suite (DAPS) for quickly preparing the skeleton of professional looking software documentation.</p> +<p>Doc Kit has been designed for initialising SUSE or openSUSE documentation repositories but in a few steps it can be re-used for other projects too.<br /> +The tool consists of two parts:<br /> +1. a command-line tool called doc-kit that can download documentation boilerplate files<br /> +2. a repository of documentation boilerplate files, such as the SUSE/openSUSE book preface and entity files.</p> +<p>The presentation will show how to use Doc Kit and how to customise the provided templates for creating a brand new documentation or release notes projects.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Marina Latini + + 1 + 1 + + + 12:20 + 00:15 + codEEmoji – Making code more informative with emojis + https://www.sfscon.it/talks/codeemoji-making-code-more-informative-with-emojis/ + + <p>This presentation focuses on the open-source project codEEmoji, an IDE plugin that adds additional information to the code through emojis. The talk starts by discussing the benefits of this approach compared to other ways to present information for the developer in IDEs. It follows by presenting the plugin and its main functionalities, which go from pointing out bad practices in method and variable naming to presenting modifiers and method characteristics in their usage. Next, it is presented how the plugin structure was designed to receive new contributions. The talk finishes by presenting some challenges and future features.</p> +<p>https://github.com/codeemoji/codeemoji-plugin</p> +<p>https://plugins.jetbrains.com/plugin/22416-codeemoji</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Eduardo Guerra + + 1 + 1 + + + 12:40 + 00:15 + Can Test Driven Development be speeded up with Generative AI? + https://www.sfscon.it/talks/can-test-driven-development-be-speeded-up-with-generative-ai/ + + <p>Generative AI tools, like ChatGPT, have shown remarkable capabilities in natural language processing. It is logical to explore their potential in programming, yet the quality of generated code raises concerns. Test-Driven Development (TDD) offers a promising approach to address these concerns. In this talk, we will explore how developers can effectively collaborate with generative AI tools to enhance TDD practices, ensuring higher code quality and streamlined development processes. To this aim, we will present two interaction patterns between a human and an AI.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Moritz Mock + Barbara Russo + Jorge Melegati + + 1 + 1 + + + 13:00 + 00:15 + ScrapeGraphAI + https://www.sfscon.it/talks/scrapegraphai/ + + you only scrape once + you only scrape once + <p>ScrapeGraphAI is an innovative Python library designed to revolutionize the field of web scraping and in less than 4 months it collected over than 12k stars on Github and more than 100k downloads on pip. It allows to scrape which website you want with the knowledge of the HTML code and with the LLM models. By seamlessly integrating a natural language model within its architecture, ScrapeGraphAI enables the extraction of valuable information from websites with unparalleled flexibility and accuracy. Unlike traditional scraping tools that rely on rigid patterns or manual configuration, ScrapeGraphAI constructs a dynamic graph of operations to interrogate web pages, ensuring that relevant data is captured even in the face of changing website structures. This library&#8217;s unique fusion of language models and directed graph logic empowers developers to create sophisticated scraping workflows with minimal coding required, thereby streamlining the process of extracting valuable insights from online content. More info at this link: https://github.com/VinciGit00/Scrapegraph-ai</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Marco Vinciguerra + + 1 + 1 + + + 13:20 + 00:15 + Software Engineering Automation: From early tools to Generative AI and beyond + https://www.sfscon.it/talks/software-engineering-automation-from-early-tools-to-generative-ai-and-beyond/ + + <p>The emergence of Generative AI tools, such as ChatGPT and Copilot, promises to disrupt knowledge-based work, including software development. However, these are not the first tools to support the automation of software engineering. From the early days, various tools have been developed to remove repetitive tasks, reduce workload, and consequently increase the abstraction of software development, such as auto-completion and automatic refactoring. In this talk, we present the different levels of the automation of software engineering. We will examine how past and present tools have achieved these levels, the current capabilities of Generative AI tools, and what we can expect for the future.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Jorge Melegati + + 1 + 1 + + + 13:40 + 00:15 + The Crucial Role of Openness in Modern Software Development + https://www.sfscon.it/talks/the-crucial-role-of-openness-in-modern-software-development/ + + <p>Developers and providers of software-based products as well as other new technologies for the global market know that the winning solutions for future-proof projects share one key feature: interoperability with products from other suppliers. Achieving this interoperability means relying on open standards, open-source technologies and establishing key partnerships with other industry players.</p> +<p>In effect, openness principles are increasingly essential to software development. This talk will provide an in-depth analysis of how these concepts underpin interoperability, security and innovation in today&#8217;s technological landscape.</p> +<p>It will discuss the importance of open standards in creating seamless integration between diverse systems and applications, ensuring that technological advancements remain accessible and adaptable. The session will also cover key strategies and best practices for the adoption of open solutions that drive compatibility and competitiveness.</p> +<p>Finally, by examining Jakarta EE and the Payara Community, the talk will illustrate how these frameworks exemplify the power of open source in building innovative, scalable and future-oriented applications.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Chiara Civardi + Dominika Tasarz-Sochacka + + 1 + 1 + + + 14:00 + 00:15 + AI Tools for Jakarta EE + https://www.sfscon.it/talks/ai-tools-for-jakarta-ee/ + + <p>Discover how AI-powered tools for Jakarta EE streamline the entire development lifecycle.</p> +<p>Over the years, there have been many ways of starting a project: archetypes, project generators, visual designers, and so on. What do we get when we add a language model to the mix? A project generator that scaffolds domain-relevant Jakarta EE applications with backend and frontend functionalities in place.</p> +<p>Experience the future of enterprise application development through practical, cutting-edge demonstrations.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Gaurav Gupta + + 1 + 1 + + + 14:20 + 00:15 + How to start contributing and still have fun + https://www.sfscon.it/talks/how-to-start-contributing-and-still-have-fun/ + + <p>Are you new to Open Source and about to create your first commit, but still haven&#8217;t clicked on &#8220;New Pull Request&#8221; button?</p> +<p>There will be always something holding you back.</p> +<p>Or do you want to gain experience that can be applied at your school or work but don&#8217;t know how?</p> +<p>Open Source gives you that opportunity.</p> +<p>Let&#8217;s talk about it because we all go through it: how to find your project; fear of the first commit, the first code review, the first mistakes and everything is public; fight toxic communities &#8211; no one is perfect; when to open your code;</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Juri Solovjov + + 1 + 1 + + + 14:40 + 00:15 + Monolith Splitter + https://www.sfscon.it/talks/monolith-splitter/ + + <p>Migration from monolithic systems to microservices has earned significant interest in recent years. Software architects and developers welcome approaches, techniques, and patterns that can facilitate and automate the migration process. This talk will present Monolith Splitter, a tool that employs various approaches for splitting a monolith into a microservices architecture. This tool could be beneficial for software architects looking to migrate monolithic projects to a more scalable architecture. It uses execution traces to analyze monolithic software and suggests which classes should be grouped together in separate services according to criteria such as cohesion, modularity, and independence of evolvability. We will showcase the application of the tool to a series of open source software projects, discussing the outcomes, the benefits, and the current limitations.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Michal Skipala + Bruno Rossi + + 1 + 1 + + + 15:00 + 00:15 + The Next Level of Metrics in Microservices + https://www.sfscon.it/talks/the-next-level-of-metrics-in-microservices/ + + Going beyond measuring workload and performance + Going beyond measuring workload and performance + <p>In Microservices, measuring workload and performance are old news! They&#8217;re still important, but we can do more. In this talk, we&#8217;re navigating through new ideas on how to use metrics to tell us more than the basics about our microservices. Did you know we can evaluate our microservices in the architectural level? So we&#8217;ll have concrete data to support our decision-making. Between patterns and bad smells, we can use metrics to detect the points where they happen. Let&#8217;s explore these new possibilities to improve our experience when evolving a microservice system, towards a more robust and maintainable direction! Bonus: you&#8217;ll learn about an open-source tool to facilitate this process, of which I&#8217;m a maintainer, and you could be too!</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + João Francisco Lino Daniel + + 1 + 1 + + + 15:20 + 00:15 + What’s New in Notifications + https://www.sfscon.it/talks/whats-new-in-notifications/ + + <p>Over the past 6 months I&#8217;ve been working on improving notifications for the GNU/Linux desktop. This includes a new version of the xdg-desktop-portal notification spec, improved notification UI in GNOME Shell, and various backend components (e.g. GLib and portals).</p> +<p>In this talk I&#8217;ll explain why it was so difficult, how we untangled it, and what&#8217;s in store for the future.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Julian Sparber + + 1 + 1 + + + 15:40 + 00:15 + Sync Your Tunes, Sync Your Screen: Introducing SyncWall + https://www.sfscon.it/talks/sync-your-tunes-sync-your-screen-introducing-syncwall/ + + <p>Ever wished your computer could visually represent your playlist? SyncWall lets you turn every song into a unique visual experience, by dynamically matching your desktop wallpaper to the music currently playing on Spotify!</p> +<p>We&#8217;ll demonstrate SyncWall in action, showcasing its capabilities, and then we&#8217;ll dive deeper into the code and the process of creating the images.</p> +<p>SyncWall relies on two core components: Spotify&#8217;s API, which provides with all the necessary song information, and Python&#8217;s PIL library, which allows to easily manipulate images. Throughout the presentation, we will explore the key concepts and most useful functions of these two technologies, providing you with practical tools to integrate into your own projects.</p> +<p>Even if Syncwall is designed for GNOME, we will dive deep on how to make it work also in different desktop environments. This will cover all the steps and the challenges involved.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Giovanni Enrico Loni + + 1 + 1 + + + 16:00 + 00:15 + Nurturing OpenJDK distribution: Eclipse Temurin Success History and plan + https://www.sfscon.it/talks/nurturing-openjdk-distribution-eclipse-temurin-success-history-and-plan/ + + <p>Join me as we explore the pillars that make Eclipse Temurin one of the most widely adopted, enterprise-ready OpenJDK Runtime (over 20M monthly downloads) and also delve into the future of Adoptium and explore the goals set for 2024.<br /> +As we navigate the landscape of open source Java runtimes, Adoptium is committed to fostering vibrant, healthy projects that thrive with the support of robust communities. In this talk, we will also shine a spotlight on our dedication to delivering top-notch quality and outstanding performance, with a special focus on our AQAvit project and Security Effort.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Carmen Delgado + Ivar Grimstad + + 1 + 1 + + + 16:20 + 00:15 + Designing open source tools for Citizen Coders + https://www.sfscon.it/talks/designing-open-source-tools-for-citizen-coders/ + + Empower non-professional developers to drive innovation! + Empower non-professional developers to drive innovation! + <p>In a world where proprietary no-code platforms with vendor lock-in and opacity dominate, there is a crucial need to enhance the developer experience of open source applications, libraries, and tools.</p> +<p>We will explore how we can make open source software more accessible to citizen developers and non-professional programmers who face significant barriers to entry with modern open source tools. Showing the importance of collaborating with these developers, who are often closer to real-world problems, to improve the quality and usability of open source software.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Luca Rainone + + 1 + 1 + + + 16:40 + 00:15 + Free your Games + https://www.sfscon.it/talks/free-your-games/ + + A Minetest story + A Minetest story + <p>Videogames are part of our daily life. They allow us to unplug, to relax, to compete, simulating a reality that puts us at the centre of a new digital world. However, if we go deeper into the way videogames are made, we&#8217;ll learn that their market can be brutal and the ethics of their business models highly debatable &#8211; if not plain unbearable. Nowadays, playing a videogame usually means renouncing to our privacy and shaking hands with realities that we might not tolerate if we knew what they conceal. It was during the pandemic that a Minetest server called AES was born. Made by volunteers, AES decided to go against that: to build an online space where to play without strings attached. A place where everyone can have fun and nothing is proprietary. Four years later, this is its story.</p> + + Developers + Developers + Developers + https://www.sfscon.it/tracks/developers-track-2024/ + + Marco Amato + + 1 + 1 + + + 17:00 + 00:15 + How to set up an Open Source Program Office? Get insights and use cases from the OSPO Alliance + https://www.sfscon.it/talks/how-to-set-up-an-open-source-program-office-get-insights-and-use-cases-from-the-ospo-alliance/ + + <p>The Good Governance Initiative (GGI) developped by the OSPO Alliance proposes a methodological framework to assess open-source awareness, compliance and governance in any kind of organizations, helping them to structure and improve the use of FOSS towards an OSPO. This presentation will highlight the main progresses and new features achieved since last year&#8217;s introduction at SFScon, such as the translation of the GGI Good Governance in five languages, the recent OSPO testimonies presented in the OnRamp meeting series, and many more.</p> + + OW2 + OW2 + OW2 + https://www.sfscon.it/tracks/ow2-track-2024/ + + Valentina Del Prete + + 1 + 1 + + + 17:20 + 00:15 + Decentralized Search Over Decentralized Storage + https://www.sfscon.it/talks/decentralized-search-over-decentralized-storage/ + + Coupling an AI-powered search engine with a self-hosted personal cloud + Coupling an AI-powered search engine with a self-hosted personal cloud + <p>In this talk, we will explore an innovative decentralized search system developed in collaboration between the teams of On My Disk, a personal cloud storage solution, and PeARS, a self-hosted search engine. This system is designed to enable user-friendly, AI-powered, multilingual search capabilities directly over a decentralized storage environment, empowering individuals to manage and search their data across devices without relying on third-party servers. By combining cutting-edge AI with a robust, local-first approach, this solution allows users to maintain complete control over their data, ensuring secure, fast, and personalized search results in a user-controlled environment. Learn how this technology is setting a new standard for privacy and autonomy in data storage and retrieval.</p> + + OW2 + OW2 + OW2 + https://www.sfscon.it/tracks/ow2-track-2024/ + + Alexey Volkov + + 1 + 1 + + + 17:40 + 00:15 + Optimizing Cloud Compute Resources with Spare Cores + https://www.sfscon.it/talks/optimizing-cloud-compute-resources-with-spare-cores/ + + <p>Spare Cores is a vendor-independent, open-source, Python ecosystem that offers a comprehensive inventory and performance evaluation of compute resources across cloud server providers. We start all server types publicly (GHA) to run hardware inspection tools and benchmarks for different workloads. Our findings are published as open data and open-source tools to help you identify and optionally start the most cost-efficient instance type for your specific use cases (e.g. ML model training or CI/CD pipelines) in your cloud environment. Additionally, Spare Cores provides a seamless SaaS solution built on this open-source ecosystem, managing the entire lifecycle of containerized batch jobs without requiring direct vendor engagement.</p> + + OW2 + OW2 + OW2 + https://www.sfscon.it/tracks/ow2-track-2024/ + + Gergely Daroczi + + 1 + 1 + + + + + 13:00 + 00:30 + NOI Hackathon SFSCON Edition + + Side Event - Hackathon + Side Event - Hackathon + Side Event,Hackathon + 0 + 0 + + + + + 14:00 + 00:40 + Human and environmental Impacts of the actual “Artificial Intelligence” Industry, how to humanize? + + Side Event - Crane Hall BOF meetings + Side Event - Crane Hall BOF meetings + Side Event,Crane Hall BOF meetings + https://www.sfscon.it/tracks/crane-hall-bof-meetings-2024/ + + Roberto Innocenti + + 0 + 0 + + + + + + + 08:30 + 00:30 + Starting of the second day + + SFSCON + SFSCON + SFSCON + 0 + 0 + + + 13:00 + 00:30 + Closing of the SFSCON 2024 + + SFSCON + SFSCON + SFSCON + 0 + 0 + + + + + 08:30 + 00:30 + Welcome Coffee + + SFSCON + SFSCON + SFSCON + 0 + 0 + + + + + 09:20 + 01:00 + Let’s spark more Adas in our tech world! workshop + + Women* in tech + Women* in tech + <p>In this workshop we will dive into the possibilities of encouraging women*, especially girls, to thinker and to code. With tools such as the Free Software Foundation Europe’s (FSFE) illustrated book &#8220;Ada &amp; Zangemann &#8211; A Tale of Software, Skateboards, and Raspberry Ice Cream&#8221;everybody can create ways to spark the participation of women* and girls in tech.The book tells the story of Ada, a girl who loves to experiment with hardware and software. Ada realises how crucial it is to control technology and decides to stand up to the mighty inventor Zangemann.This workshop will also intend to explore ways to promote diversity and gender equity in the Free Software community and beyond. Together we will identify the challenges women* face in participating in such communities and discuss how we can create more inclusive environments, especially for the future generations.We encourage you to join us to share your experiences, ideas and perspectives, and collaborate in creating a more inclusive and diverse future in the Free Software community for all.</p> +<p><b>REGISTRATION NEEDED AT: </b><a href="https://pretix.eu/noi-digital/sfscon24/4260077/">https://pretix.eu/noi-digital/sfscon24/4260077/</a></p> +<p><em>*women, inter, trans and non-binary people.</em></p> +<p>Supported by: <strong><a href="https://fsfe.org/" target="_blank" rel="noopener">FSFE – Free Software Foundation Europe</a> </strong>&amp; <a href="https://shetechitaly.org/"><strong>SheTech</strong></a></p> + + Side Event - Women* in tech + Side Event - Women* in tech + Side Event,Women* in tech + https://www.sfscon.it/tracks/women-in-tech-track-2024/ + + Lina Ceballos + Ana Galan + + 0 + 0 + + + 10:40 + 00:55 + Knitting Our Internet workshop + + An interactive journey through the history of the Internet, and how to save it, together + An interactive journey through the history of the Internet, and how to save it, together + <p>“Knitting Our Internet” (KOI) is a workshop that explores the history of the Internet, and offers a perspective for a collective re-imagination of participatory, decentralized networks.</p> +<p>The workshop aims at questioning the very essence of today’s social media, exposing the critical limits posed by centralization, monopoly, and surveillance capitalism.</p> +<p>KOI was conceived in June 2023 by <a href="https://tommi.space">Tommaso Marmo</a>, who was looking for a simple yet critical and accurate way to introduce the concept of the Fediverse to non-experts.</p> +<p>The content and structure of the workshop matured over time, as it adapted to very diverse audiences of any ages and backgrounds. Furthermore, the experience is based on Tommaso’s academic research, mainly conducted for “<a href="https://tommi.space/csss/">Computer Sciences are Social Sciences</a>”, his bachelor’s thesis.</p> +<p><strong>Content</strong></p> +<p>During the activity, Tommaso will be using a yarn his grandmother gifted him to simulate centralized and decentralized networks, employing concrete metaphors to actively involve the participants. Every individual attending the workshop will be given a quote or an image relevant in the early and contemporary history of the Internet, and they will be asked to share it as the story unfolds.</p> +<p>Allowing them to understand the essential challenges society faces in relation to technological advancement, participants will be empowered to get involved in the Fediverse, especially understanding the importance of decentralization, Free Software, and the political role played by technical tools.</p> +<p><strong>Notes</strong></p> +<p>Given its malleable and open structure, the content of the workshop can be adapted, enriched, and edited to match the key topics of SFSCON 2024 in the best possible way.</p> +<p>The interactive parts of the workshop can be limited and a more theoretical presentation, diving in the thoughts of philosophers and computer sciences, could be added, too.</p> +<p>Supported by: <strong><a href="https://fsfe.org/" target="_blank" rel="noopener">FSFE – Free Software Foundation Europe</a></strong></p> + + Fediverse + Fediverse + Fediverse + https://www.sfscon.it/tracks/fediverse-track-2024/ + + Tommaso Marmo + + 0 + 0 + + + 11:40 + 00:15 + about:Fediverse + https://www.sfscon.it/talks/aboutfediverse/ + + An introduction to the decentralised social network + An introduction to the decentralised social network + <p>The Fediverse is a decentralised social network. But what does that mean?</p> +<p>In this talk I will give a short introduction to the Fediverse of 2024 and how it started to evolve in 2008. I will explain the basic concepts of ActivityPub as the protocol of the Fediverse and how the use of this open protocol has enabled a diverse group of Free Software projects to build a social network of (micro) blogging, video streaming, podcasting and event organising. A network where users can share and interact with each other regardless of the platform they use. What will be possible in the Fediverse of 2024? And how can you get started today?</p> +<p>This talk does not require any technical knowledge of the Fediverse. However, you should know what an email is.</p> + + Fediverse + Fediverse + Fediverse + https://www.sfscon.it/tracks/fediverse-track-2024/ + + Tobias Diekershoff + + 1 + 1 + + + 12:00 + 00:15 + How to build a website for the IndieWeb + https://www.sfscon.it/talks/how-to-build-a-website-for-the-indieweb/ + + <p>Have you ever heard of terms like POSSE, syndication, or webmention?<br /> +What about protocols like Web Sign-In or Micropub?<br /> +These terms are all connected to the IndieWeb, a community of websites built on open standards and open source technologies.</p> +<p>In today&#8217;s digital age, our online content and identities are more important than ever. Relying on random companies and social networks to manage them isn&#8217;t ideal. Instead, we should take control of our online presence by building our own website for the IndieWeb.</p> +<p>In this talk, you&#8217;ll learn how to:</p> +<p>1. Publish content on your website via a Micropub server.<br /> +2. Syndicate that content elsewhere (i.e., republish it on another website).<br /> +3. Gather comments from social networks and display them on your website.</p> +<p>We will achieve all of this using a static website and a few open-source tools.</p> + + Fediverse + Fediverse + Fediverse + https://www.sfscon.it/tracks/fediverse-track-2024/ + + Giacomo Debidda + + 1 + 1 + + + + + 09:20 + 00:15 + ARM Linux Laptops for Developers Status Report + https://www.sfscon.it/talks/arm-linux-laptops-for-developers-status-report/ + + <p>Intrigued by 22+ hours of battery life with comparable performance to current Intel / AMD systems? Starting from June this year a bunch of new ARM based laptops have been launched. All major laptop vendors launched devices, with over 33 to choose from at the time of this writing.</p> +<p>While ARM based laptops have been available for years, they mostly have been targeted as cheap entry level ChromeBooks or MacBooks designed for MacOS only. Luckily with this new wave of ARM based laptops there should be something for everybody.</p> +<p>The core question is how well they behave under Linux. Being designed for<br /> +Windows-on-ARM there is a risk Linux support is rudimentary at best. Stefan set out to test this and is reporting back here. Does a boot with UEFI work out of the box? Are all hardware features supported? Is the firmware for various drivers available? How is the performance?</p> +<p>And the most important question: how does it stack up against an Intel based laptop from the same timeframe as daily driver for software development?</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + Stefan Schmidt + + 1 + 1 + + + 09:40 + 00:35 + Building a no-drama community + https://www.sfscon.it/talks/building-a-no-drama-community/ + + <p>In this talk, we&#8217;ll focus on how the AlmaLinux project has chosen to foster a positive, drama-free community in the Linux ecosystem.</p> +<p>&#8212;</p> +<p>Whether you&#8217;re starting a new community or wrangling an existing one, it can be tempting to fall into the trap of bonding over shared enemies to see short-term, high-numbers growth. But, benny has spent the last 10 years building drama-free communities with a different kind of success.</p> +<p>While many open-source projects rally members through shared frustrations or negativity, AlmaLinux took the more challenging path of uniting people through thoughtful dialogue and focusing on helping each other. By prioritizing respect, collaboration, and inclusivity, the AlmaLinux community grew healthier and stronger without the need for battle cries or infusing drama. Learn how this approach not only built a stable and thriving community around AlmaLinux, but is also setting a new standard for open-source communities &#8211; and proving that progress doesn’t have to be divisive.</p> + + Community Building + Community Building + Community Building + https://www.sfscon.it/tracks/community-building-track-2024/ + + benny Vasquez + + 1 + 1 + + + 10:20 + 02:40 + Voices of Free Software: connect, learn, inspire! + + FSFE Italian Community Meeting + FSFE Italian Community Meeting + <p>You are invited to join the volunteers, supporters, and friends of the FSFE Italian Community!</p> +<p>Join us to learn from one another, find inspiration, and tackle future challenges together in the realm of Free Software. As a volunteer, you have a platform to share your story, discuss the most pressing topics surrounding Free Software, and connect with fellow enthusiasts. We encourage you to collaborate with the community on common initiatives and work together to forge new paths forward.</p> +<p>This is an <strong>hybrid event</strong>. You can join us either online or in person.</p> +<p><b>REGISTRATION NEEDED AT: </b><a href="https://pretix.eu/noi-digital/sfscon24/4259648/">https://pretix.eu/noi-digital/sfscon24/4259648/</a></p> +<p>Please note, the official language of the FSFE Italian Community is Italian, hence the event will be held in <strong>Italian</strong>.</p> +<p>Supported by: <strong><a href="https://fsfe.org/" target="_blank" rel="noopener">FSFE – Free Software Foundation Europe</a></strong></p> + + Side Event - FSFE - Italian community meeting + Side Event - FSFE - Italian community meeting + Side Event,FSFE,Italian community meeting + https://www.sfscon.it/tracks/fsfe-italian-community-meeting-2024/ + + Marta Andreoli + + 0 + 0 + + + + + 09:30 + 02:30 + Scratch Stories with Ada & Zangemann + + Side Event - MiniNOI x SFSCON + Side Event - MiniNOI x SFSCON + Side Event,MiniNOI x SFSCON + 0 + 0 + + + + + 16:30 + 00:30 + Winner proclamation and closing of the NOI Hackathon SFSCON Edition + + Side Event - Hackathon + Side Event - Hackathon + Side Event,Hackathon + 0 + 0 + + + + diff --git a/src/tests/assets/sfscon2024sponsors.yaml b/src/tests/assets/sfscon2024sponsors.yaml new file mode 100644 index 0000000..2c5c822 --- /dev/null +++ b/src/tests/assets/sfscon2024sponsors.yaml @@ -0,0 +1,224 @@ +- id: 44701ce9-af97-4819-8852-30e12fb96066 + name: Gruppo Fos + acronym: gruppo-fos + sponsor_type: main + logo_url: https://m.opencon.dev/static/GRUPPOFOS_BN.png + url: https://www.gruppofos.it/ + width: 282px + height: 102px +- id: 4dad81f6-e1e2-478e-9406-80b5987204dc + acronym: telmekom + name: Telmekom + sponsor_type: main + logo_url: https://m.opencon.dev/static/TELMEKOM_BN.png + url: http://www.telmekom.net/ + width: 284px + height: 86px +- id: bc6fa32c-8560-4dd0-8f42-42706e33e49b + acronym: symphonieprime + name: Symphonie prime + sponsor_type: normal + logo_url: https://m.opencon.dev/static/SYMPHONIE_BN.png + url: https://symphonieprime.com/ + width: 180px + height: 53.43px +- id: 5f1e9ccc-cf71-441e-81e0-c40dc34a677e + acronym: vates + name: Vates + sponsor_type: normal + logo_url: https://m.opencon.dev/static/VATES_BN.png + url: https://vates.fr/ + width: 180px + height: 53.43px +- id: 127d0b97-87fd-454e-822e-77fb7367ce28 + name: Allotropia + acronym: allotropia + logo_url: https://m.opencon.dev/static/ALLOTROPIA_BN.png + url: https://www.allotropia.de/ + sponsor_type: normal + width: 180px + height: 71.16px +- id: e68950c1-eda9-48c8-8fc4-5ef987228ce2 + acronym: madeinchima + name: Made In Chima + logo_url: https://m.opencon.dev/static/MADEINCIMA_BN.png + url: https://www.madeincima.it/ + sponsor_type: normal + width: 128px + height: 70px +- id: 1dc0bdd1-9c10-4508-9343-553f000769fa + acronym: zirkon-zahn + name: Zirkonzahn + logo_url: https://m.opencon.dev/static/ZIRKONZAHN_BN.png + url: https://zirkonzahn.com/ + sponsor_type: normal + width: 128px + height: 70px +- id: 184da88c-f090-4cf9-958c-22b84c0fe8d4 + acronym: '1006' + name: 1006 Org + logo_url: https://m.opencon.dev/static/1006org_logo.png + url: https://www.1006.org/ + sponsor_type: normal + width: 101px + height: 20px +- id: 101c39b0-24ab-474b-a747-459a6a61660d + acronym: catchsolve + name: Catchsolve + logo_url: https://m.opencon.dev/static/CATCHSOLVE_BN.png + url: https://www.catch-solve.tech/ + sponsor_type: normal + width: 128px + height: 32px +- id: d73fd57b-980e-425d-96df-857e245556a2 + acronym: christian-gapp + name: Christian Gapp + logo_url: https://m.opencon.dev/static/CHRISTIAN_GAPP_BN.png + url: https://gappc.net/ + sponsor_type: normal + width: 90px + height: 22.28px +- id: efaf9b4d-f856-4957-9f65-42307bfe7f61 + acronym: ecosteer + name: Ecosteer + logo_url: https://m.opencon.dev/static/ECOSTEER_BN.png + url: https://www.ecosteer.com/ + sponsor_type: normal + width: 90px + height: 22.28px +- id: f542abc0-c94b-4459-82ed-9acf814fefae + acronym: endian + name: Endian + logo_url: https://m.opencon.dev/static/ENDIAN_BN.png + url: https://www.endian.com/ + sponsor_type: normal + width: 90px + height: 22.28px +- id: e9c0d83a-26f5-4ed0-8162-09ab28c2ddda + acronym: peer + name: Peer + logo_url: https://m.opencon.dev/static/Peer_BN.png + url: https://www.peer.biz/de/ + sponsor_type: normal + width: 80px + height: 30.66px +- id: 2244636e-19ad-4edd-b537-da40368a904e + acronym: qbus + name: Qbus + logo_url: https://m.opencon.dev/static/QBUS_BN.png + url: https://www.qbus.it/ + sponsor_type: normal + width: 40px + height: 50.91px +- id: bb73d7b7-3fac-4be6-9bfe-1eea8c0d7856 + acronym: rmbtec + name: Rmbtec + logo_url: https://m.opencon.dev/static/RMB_BN.png + url: https://rmbtec.com/ + sponsor_type: normal + width: 40px + height: 50.91px +- id: d557c64e-33f4-4641-abd2-83ad89524efa + acronym: studiohug + name: Studio Hug + logo_url: https://m.opencon.dev/static/STUDIOHUG_BN.png + url: https://www.studiohug.com/de + sponsor_type: normal + width: 40px + height: 50.91px +- id: 2a944b57-e9e8-456a-9409-ebc215e49245 + acronym: edih-noi + name: EDIH NOI + logo_url: https://m.opencon.dev/static/EDIH_NOI_BN.png + url: https://noi.bz.it/en/about-us/noi-techpark-s-players/dih-edih + sponsor_type: normal + width: 70px + height: 38px +- id: f6e8cf35-60aa-4fc7-aed2-1af091147d3a + acronym: fsfe + name: Fsfe + logo_url: https://m.opencon.dev/static/FSFE_BN.png + url: https://fsfe.org/ + sponsor_type: normal + width: 70px + height: 38px +- id: 05646adf-f9a0-47d8-8030-5a682ca8708b + acronym: linux-magazine + name: Linux + logo_url: https://m.opencon.dev/static/LinuxMagazine_BN.png + url: https://www.linux-magazine.com/ + sponsor_type: normal + width: 60px + height: 27px +- id: 2de671e5-ceaa-4306-a685-24921c3a14f5 + acronym: lugbz + name: Lugbz + logo_url: https://m.opencon.dev/static/LUGBZ_BN.png + url: https://www.lugbz.org/ + sponsor_type: normal + width: 36px + height: 42px +- id: 97c0d563-b9de-4152-a47a-a01085b153c2 + acronym: mini-noi + name: Mini NOI + logo_url: https://m.opencon.dev/static/MNOI_BN.png + url: https://noi.bz.it/en/for-the-public/mini-noi + sponsor_type: normal + width: 60px + height: 27px +- id: db571055-f3a6-4386-8f6c-b224353ee621 + acronym: opensource-job-hub + name: OpenSource Job Hub + logo_url: https://m.opencon.dev/static/OpenSource-JobHub_BN.png + url: https://opensourcejobhub.com/ + sponsor_type: normal + width: 60px + height: 27px +- id: 691dff4f-8b91-4993-acd3-2e73352348c2 + acronym: ow2 + name: Ow2 + logo_url: https://m.opencon.dev/static/OW2_BN.png + url: https://www.ow2.org/ + sponsor_type: normal + width: 50px + height: 13px +- id: ec28824e-349d-42f2-9eef-c29b670ee831 + acronym: shetech + name: SHETECH + logo_url: https://m.opencon.dev/static/SHETECH_BN.png + url: https://shetechitaly.org/ + sponsor_type: normal + width: 60px + height: 27px +- id: 329152e4-bffd-4f9e-b6ca-edc0d11bc7dc + acronym: speckand.tech + name: Speck & Tech + logo_url: https://m.opencon.dev/static/SpeckTech_BN.png + url: https://speckand.tech/ + sponsor_type: normal + width: 36px + height: 46px +- id: de0cd141-12a3-4e8d-90e5-b04f222f5582 + acronym: stickermule + name: Sticker Mule + logo_url: https://m.opencon.dev/static/Stickermule_BN.png + url: https://www.stickermule.com/it/uses/laptop-stickers?utm_source=sponsorship&utm_medium=referral&utm_campaign=SFSCon21 + sponsor_type: normal + width: 64px + height: 39px +- id: 0508427b-41c9-43fb-b209-b3673761ea6f + acronym: unibz + name: Unibz + logo_url: https://m.opencon.dev/static/UNIBZ_BN.png + url: https://www.unibz.it/ + sponsor_type: normal + width: 46px + height: 36px +- id: 2dee2644-8373-4dc2-a397-73ac14c0dbc0 + acronym: wud + name: Wud + logo_url: https://m.opencon.dev/static/WUD_BN.png + url: https://wud-bz.it/ + sponsor_type: normal + width: 46px + height: 36px \ No newline at end of file diff --git a/src/tests/base_test_classes.py b/src/tests/base_test_classes.py index 4d21d80..ce5699d 100644 --- a/src/tests/base_test_classes.py +++ b/src/tests/base_test_classes.py @@ -1,16 +1,17 @@ # SPDX-License-Identifier: GPL-3.0-or-later # SPDX-FileCopyrightText: 2023 Digital CUBE +import importlib +import logging import os -import pytest +from abc import ABC, abstractmethod + import dotenv -import logging import psycopg2 -import importlib +import pytest from tortoise import Tortoise -from abc import ABC, abstractmethod -from app import startup_event, shutdown_event, get_app +from app import get_app, shutdown_event, startup_event logging.disable(logging.CRITICAL) dotenv.load_dotenv() diff --git a/src/tests/test_api.py b/src/tests/test_api.py deleted file mode 100644 index 5e30e8d..0000000 --- a/src/tests/test_api.py +++ /dev/null @@ -1,491 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -import os -import pprint -import uuid -import json - -import dotenv -import logging -from httpx import AsyncClient -from base_test_classes import BaseAPITest - -os.environ["TEST_MODE"] = "true" - -dotenv.load_dotenv() - -logging.disable(logging.CRITICAL) - - -def get_local_xml_content(): - try: - with open(f'{os.path.dirname(os.path.realpath(__file__))}/assets/sfscon2023.xml', 'r') as f: - return f.read() - except Exception as e: - raise - - -class TestAPIBasic(BaseAPITest): - - async def setup(self): - self.import_modules(['src.conferences.api']) - - async def test_get_all_conferences_expect_nothing_to_be_returned(self): - async with AsyncClient(app=self.app, base_url="http://test") as ac: - x = await ac.get('/openapi.json') - assert x.status_code == 200 - response = await ac.get("/api/conferences") - assert response.status_code == 200 - assert [] == response.json() - - async def test_create_conference_online_conent(self): - async with AsyncClient(app=self.app, base_url="http://test") as ac: - response = await ac.post("/api/conferences", json={"default": True}) - - async def test_create_conference(self): - async with AsyncClient(app=self.app, base_url="http://test") as ac: - response = await ac.post("/api/conferences", json={'xml_content': get_local_xml_content(), 'default': False}) - - assert response.status_code == 200 - assert 'id' in response.json() - - async def test_create_and_fetch_conference(self): - async with AsyncClient(app=self.app, base_url="http://test") as ac: - response = await ac.post("/api/conferences", json={'xml_content': get_local_xml_content(), 'default': False}) - - assert response.status_code == 200 - assert 'id' in response.json() - - id_conference = response.json()['id'] - - async with AsyncClient(app=self.app, base_url="http://test") as ac: - response = await ac.get(f"/api/conferences/{id_conference}") - - assert response.status_code == 200 - assert response.json()['conference']['acronym'] == 'sfscon-2023' - - async def test_register_pretix_user(self): - async with AsyncClient(app=self.app, base_url="http://test") as ac: - response = await ac.post("/api/conferences", json={'xml_content': get_local_xml_content(), 'default': False}) - - assert response.status_code == 200 - assert 'id' in response.json() - - id_conference = response.json()['id'] - - async with AsyncClient(app=self.app, base_url="http://test") as ac: - response = await ac.get(f"/api/conferences/{id_conference}") - - assert response.status_code == 200 - assert response.json()['conference']['acronym'] == 'sfscon-2023' - - async with AsyncClient(app=self.app, base_url="http://test") as ac: - response = await ac.post(f"/api/conferences/{id_conference}/pretix", - json={'order': 'DRXSG', - 'pushToken': 'ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]'} - ) - assert 'id' in response.json() - assert 'token' in response.json() - assert 'created' in response.json() and response.json()['created'] is True - - async def test_non_authorized_me(self): - async with AsyncClient(app=self.app, base_url="http://test") as ac: - result = await ac.get(f"/api/tenants/me") - - assert result.status_code == 403 - assert result.json() == {'detail': 'UNAUTHORIZED'} - - -class TestDashboard(BaseAPITest): - - async def setup(self): - self.import_modules(['src.conferences.api']) - - async def test_dashboard(self): - async with AsyncClient(app=self.app, base_url="http://test") as ac: - x = await ac.get('/openapi.json') - assert x.status_code == 200 - - response = await ac.get(f"/api/conferences/sfscon-2023/dashboard") - assert response.status_code == 200 - - async def test_attendees(self): - async with AsyncClient(app=self.app, base_url="http://test") as ac: - response = await ac.get(f"/api/conferences/sfscon-2023/attendees") - assert response.status_code == 200 - - async def test_sessions(self): - async with AsyncClient(app=self.app, base_url="http://test") as ac: - response = await ac.post("/api/conferences", json={'xml_content': get_local_xml_content(), 'default': False}) - - async with AsyncClient(app=self.app, base_url="http://test") as ac: - response = await ac.get(f"/api/conferences/sfscon-2023/sessions") - assert response.status_code == 200 - - -class TestAPIWithConferenceAndRegisteredUser(BaseAPITest): - - async def setup(self): - self.import_modules(['src.conferences.api']) - - async with AsyncClient(app=self.app, base_url="http://test") as ac: - response = await ac.post("/api/conferences", json={'xml_content': get_local_xml_content(), 'default': False}) - - assert response.status_code == 200 - assert 'id' in response.json() - - self.id_conference = response.json()['id'] - - async with AsyncClient(app=self.app, base_url="http://test") as ac: - response = await ac.get(f"/api/conferences/{self.id_conference}") - - assert response.status_code == 200 - assert response.json()['conference']['acronym'] == 'sfscon-2023' - - async with AsyncClient(app=self.app, base_url="http://test") as ac: - response = await ac.post(f"/api/conferences/{self.id_conference}/pretix", - json={'order': 'DRXSG', - 'pushToken': 'ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]'} - ) - assert 'id' in response.json() - assert 'token' in response.json() - assert 'created' in response.json() and response.json()['created'] is True - - self.token = response.json()['token'] - - async with AsyncClient(app=self.app, base_url="http://test") as ac: - result = await ac.get(f"/api/tenants/me", - headers={"Authorization": f"Bearer {self.token}"}) - - assert result.status_code == 200 - assert result.json() == {'id': result.json()['id'], 'data': {'organization': 'Digital Cube DOO', 'pretix_order': 'DRXSG'}, 'email': 'ivo@digitalcube.rs', 'first_name': 'Ivo', - 'last_name': 'Kovačević'} - - async def test_get_conference_csv(self): - async with AsyncClient(app=self.app, base_url="http://test") as ac: - response = await ac.get(f"/api/conferences/sfscon-2023/talks.csv") - assert response.status_code == 200 - - response = await ac.get(f"/api/conferences/sfscon-2023/attendees.csv") - assert response.status_code == 200 - ... - - async def test_push_flow(self): - async with AsyncClient(app=self.app, base_url="http://test") as ac: - result = await ac.post(f"/api/flows", - json={'conference_id': self.id_conference, - 'pretix_order_id': 'DRXSG', - 'text': 'some text'}, - headers={"X-Api-Key": f"{os.getenv('PRINTER_X_API_KEY')}"}) - ... - - async def test_rate_event(self): - - async with AsyncClient(app=self.app, base_url="http://test") as ac: - serialized = await ac.get(f"/api/conferences/{self.id_conference}") - - id_session = serialized.json()['conference']['idx']['ordered_sessions_by_days']['2023-11-10'][5] - - assert id_session is not None - - result = await ac.post(f"/api/conferences/sessions/{id_session}/rate", - json={'rate': 5}, - headers={"Authorization": f"Bearer {self.token}"}) - - assert result.status_code == 200 - assert result.json()['avg'] == 5.0 - - async def test_bookmark_event(self): - - async with AsyncClient(app=self.app, base_url="http://test") as ac: - serialized = await ac.get(f"/api/conferences/{self.id_conference}") - - result = await ac.get(f"/api/conferences/{self.id_conference}/bookmarks", - headers={"Authorization": f"Bearer {self.token}"}) - - assert result.json() == [] - - id_session = serialized.json()['conference']['idx']['ordered_sessions_by_days']['2023-11-10'][5] - - assert id_session is not None - - result = await ac.post(f"/api/conferences/sessions/{id_session}/toggle-bookmark", - headers={"Authorization": f"Bearer {self.token}"}) - - assert result.status_code == 200 - assert result.json()['bookmarked'] is True - - result = await ac.get(f"/api/conferences/{self.id_conference}/bookmarks", - headers={"Authorization": f"Bearer {self.token}"}) - - assert result.json() == [id_session] - - result = await ac.post(f"/api/conferences/sessions/{id_session}/toggle-bookmark", - headers={"Authorization": f"Bearer {self.token}"}) - - assert result.status_code == 200 - assert result.json()['bookmarked'] is False - - result = await ac.get(f"/api/conferences/{self.id_conference}/bookmarks", - headers={"Authorization": f"Bearer {self.token}"}) - - assert result.json() == [] - - async def test_bookmark_non_existing_event(self): - - async with AsyncClient(app=self.app, base_url="http://test") as ac: - id_session = uuid.uuid4() - exp = None - try: - await ac.post(f"/api/conferences/sessions/{id_session}/toggle-bookmark", - headers={"Authorization": f"Bearer {self.token}"}) - except Exception as e: - exp = e - - assert str(exp) == 'EVENT_SESSION_NOT_FOUND' - - # - async def test_push_notification(self): - async with AsyncClient(app=self.app, base_url="http://test") as ac: - res = await ac.post(f'/api/conferences/pretix_orders/DRXSG/test_push_notification', - json={'subject': 'test', 'message': 'test123'}) - assert res.status_code == 200 - - async def test_register_printer(self): - - lanes = os.getenv('CHECKIN_LANES', None) - assert lanes is not None - - lanes = json.loads(lanes) - lane1 = lanes['LANE-DC'] - printer_x_api_key = os.getenv('PRINTER_X_API_KEY', None) - - async with AsyncClient(app=self.app, base_url="http://test") as ac: - res = await ac.post(f'/api/printers/register/{lane1}', - headers={'X-Api-Key': printer_x_api_key, - 'Content-Type': 'application/json'}) - - assert res.status_code == 200 - - async def test_scan_pretix_qr_code(self): - - printer_response_payload = ''' - { - "count": 1, - "next": null, - "previous": null, - "results": [ - { - "id": 23879610, - "order": "DRXSG", - "positionid": 1, - "item": 405843, - "variation": null, - "price": "0.00", - "attendee_name": "Ivo Kovačević", - "attendee_name_parts": { - "_scheme": "given_family", - "given_name": "Ivo", - "family_name": "Kovačević" - }, - "company": "Digital Cube DOO", - "street": null, - "zipcode": null, - "city": null, - "country": null, - "state": null, - "attendee_email": "ivo@digitalcube.rs", - "voucher": null, - "tax_rate": "0.00", - "tax_value": "0.00", - "secret": "d8cpm24fyuv2nn73zasrzgbcynfcfxd3", - "addon_to": null, - "subevent": 3973986, - "checkins": [ - { - "id": 19727648, - "datetime": "2023-10-13T15:36:41.601865+02:00", - "list": 313919, - "auto_checked_in": false, - "gate": null, - "device": null, - "type": "entry" - } - ], - "downloads": [ - { - "output": "pdf", - "url": "https://pretix.eu/api/v1/organizers/noi-digital/events/sfscon23/orderpositions/23879610/download/pdf/" - }, - { - "output": "passbook", - "url": "https://pretix.eu/api/v1/organizers/noi-digital/events/sfscon23/orderpositions/23879610/download/passbook/" - } - ], - "answers": [ - { - "question": 97901, - "answer": "NO", - "question_identifier": "8DG7LBJE", - "options": [ - 161406 - ], - "option_identifiers": [ - "88MRLUL8" - ] - } - ], - "tax_rule": null, - "pseudonymization_id": "MB7BUEJKLR", - "seat": null, - "require_attention": false, - "order__status": "p", - "valid_from": null, - "valid_until": null, - "blocked": null - } - ] - } - ''' - - lanes = os.getenv('CHECKIN_LANES', None) - assert lanes is not None - - lanes = json.loads(lanes) - lane1 = lanes['LANE1'] - printer_x_api_key = os.getenv('PRINTER_X_API_KEY', None) - - printer_response_payload = json.loads(printer_response_payload) - secret = printer_response_payload['results'][0]['secret'] - - async with AsyncClient(app=self.app, base_url="http://test") as ac: - res = await ac.post(f'/api/conferences/{self.id_conference}/scans/lanes/{lane1}/{secret}', - headers={'X-Api-Key': printer_x_api_key, - 'Content-Type': 'application/json'}, - json={'pretix_response': printer_response_payload}) - - assert res.status_code == 200 - ... - - - # - async def test_5minutes_notification_test_only_mode(self): - async with AsyncClient(app=self.app, base_url="http://test") as ac: - res = await ac.post(f'/api/conferences/sfscon2023/notify-5-minutes-before-start', - json={'now_time': '2023-10-11 08:26:00', - 'test_only': True}) - - assert res.status_code == 200 - assert 'enqueued_messages' in res.json() and res.json()['enqueued_messages'] == 0 - assert 'test_only' in res.json() and res.json()['test_only'] is True - # assert res.json() == {'enqueued_messages': 0, 'test_only': True} # no sessions in next 5 minutes - - serialized = await ac.get(f"/api/conferences/{self.id_conference}") - - serialized = serialized.json() - id_session = None - for ie in serialized['conference']['idx']['ordered_sessions_by_days']['2023-11-10']: - e = serialized['conference']['db']['sessions'][ie] - if e['unique_id'] == '2023day1event1': - id_session = e['id'] - break - - assert id_session - - res = await ac.post(f"/api/conferences/sessions/{id_session}/toggle-bookmark", - headers={"Authorization": f"Bearer {self.token}"}) - - assert res.status_code == 200 - assert res.json() == {'bookmarked': True} - - res = await ac.post(f'/api/conferences/sfscon2023/notify-5-minutes-before-start', - json={'now_time': '2023-11-10 08:26:00'}) - assert res.status_code == 200 - # assert res.json() == {'enqueued_messages': 1, 'test_only': True, - # 'log': ['Ivo Kovačević (Digital Cube DOO): Check-in start at 08:30'] - # } - - -class TestAdminLogin(BaseAPITest): - - async def setup(self): - self.import_modules(['src.conferences.api']) - - async def test_scan(self): - async with AsyncClient(app=self.app, base_url="http://test") as ac: - res = await ac.post(f'/api/conferences/scan', - json={'id_target': str(uuid.uuid4()), 'id_location': 'e4041668-8199-48c5-bb00-0b4e7042f479'}) - - assert res.status_code == 200 - print(res.json()) - - # - async def deprecated_test_get_attendees(self): - async with AsyncClient(app=self.app, base_url="http://test") as ac: - res = await ac.post(f"/api/tenants/sessions", - json={'username': os.getenv('ADMIN_USERNAME'), - 'password': 'xyz'}) - - assert res.status_code == 403 - assert res.json() == {'detail': 'UNAUTHORIZED'} - - res = await ac.post(f"/api/tenants/sessions", - json={'username': os.getenv('ADMIN_USERNAME'), - 'password': os.getenv('ADMIN_PASSWORD')}) - - assert res.status_code == 200 - assert 'token' in res.json() - - token = res.json()['token'] - - res = await ac.get(f'/api/tenants/me', - headers={"Authorization": f"Bearer {token}"}) - - assert res.status_code == 200 - assert res.json()['first_name'] == os.getenv('ADMIN_USERNAME') - - res = await ac.get(f'/api/conferences/sfs2023/attendees?page=2&per_page=3&search=', - headers={"Authorization": f"Bearer {token}"}) - - assert res.status_code == 200 - - assert res.json()['summary'] == {"total_items": 335, - "total_pages": 112, - "page": 2, - "per_page": 3, - "previous_page": 1, - "next_page": 3 - } - - assert res.json()['header'] == [{'name': 'First Name', 'key': 'first_name', 'width': '100px'}, {'name': 'Last Name', 'key': 'last_name', 'width': '100px'}, - {'name': 'Organization', 'key': 'organization', 'width': '100px'}, {'name': 'Email', 'key': 'email', 'width': '100px'}, - {'name': 'Pretix Order', 'key': 'pretix_order', 'width': '100px'}, {'name': 'Has SFSCON app', 'key': 'has_app', 'width': '100px'}] - assert len(res.json()['data']) == 3 - - res = await ac.get(f'/api/conferences/sfs2023/attendees?page=2&per_page=3&search=@example.net', - headers={"Authorization": f"Bearer {token}"}) - - assert res.status_code == 200 - assert res.json()['summary'] == {"total_items": 97, - "total_pages": 33, - "page": 2, - "per_page": 3, - "previous_page": 1, - "next_page": 3 - } - # print(json.dumps(res.json()['data'], indent=4)) - # print(json.dumps(res.json()['summary'], indent=4)) - - return - res = await ac.post(f"/api/tenants/sessions", - json={'username': os.getenv('LANE_USERNAME_PREFIX', 'lane') + '1', - 'password': os.getenv('LANE_USER_PASSWORD')}) - assert res.status_code == 200 - token = res.json()['token'] - - res = await ac.get(f'/api/tenants/me', headers={"Authorization": f"Bearer {token}"}) - - assert res.status_code == 200 - - ... diff --git a/src/tests/test_api_2024.py b/src/tests/test_api_2024.py new file mode 100644 index 0000000..5bb047e --- /dev/null +++ b/src/tests/test_api_2024.py @@ -0,0 +1,652 @@ +# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: 2023 Digital CUBE + +import datetime +import json +import logging +import os +import unittest +import unittest.mock + +import dotenv +from base_test_classes import BaseAPITest +from httpx import AsyncClient + +os.environ["TEST_MODE"] = "true" + +dotenv.load_dotenv() + +logging.disable(logging.CRITICAL) + +from unittest.mock import patch + +import fakeredis + +from shared.redis_client import RedisClientHandler + + +def get_local_xml_content(): + try: + with open(f'{os.path.dirname(os.path.realpath(__file__))}/assets/sfscon2024.xml', 'r') as f: + return f.read() + except Exception as e: + raise + + +class TestAPIBasic(BaseAPITest): + + async def setup(self): + self.import_modules(['src.conferences.api']) + + async def test_get_conference_as_non_authorized_user_expect_401(self): + async with AsyncClient(app=self.app, base_url="http://test") as ac: + response = await ac.get("/api/conference") + assert response.status_code == 401 + + async def test_authorize_user_and_get_conference_expect_404(self): + async with AsyncClient(app=self.app, base_url="http://test") as ac: + response = await ac.post("/api/authorize") + assert response.status_code == 200 + token = response.json()['token'] + + response = await ac.get("/api/conference", headers={"Authorization": f"Bearer {token}"}) + assert response.status_code == 404 + + async def test_import_xml(self): + async with AsyncClient(app=self.app, base_url="http://test") as ac: + response = await ac.post("/api/import-xml") # , json={'use_local_xml': False}) + assert response.status_code == 200 + + async def test_import_xml_mockuped_result(self): + async with AsyncClient(app=self.app, base_url="http://test") as ac: + response = await ac.post("/api/import-xml", json={'use_local_xml': True}) + assert response.status_code == 200 + + async def test_add_conference_authorize_user_and_get_conference_expect_200(self): + async with AsyncClient(app=self.app, base_url="http://test") as ac: + response = await ac.post("/api/import-xml", json={'use_local_xml': True}) + assert response.status_code == 200 + + response = await ac.post("/api/authorize") + assert response.status_code == 200 + token = response.json()['token'] + + response = await ac.get("/api/conference", headers={"Authorization": f"Bearer {token}"}) + assert response.status_code == 200 + + +class Test2024(BaseAPITest): + + async def setup(self): + self.import_modules(['src.conferences.api']) + + async with AsyncClient(app=self.app, base_url="http://test") as ac: + response = await ac.post("/api/import-xml", json={'use_local_xml': True}) + assert response.status_code == 200 + + response = await ac.post("/api/authorize") + assert response.status_code == 200 + self.token = response.json()['token'] + + response = await ac.post("/api/authorize") + assert response.status_code == 200 + self.token2 = response.json()['token'] + + response = await ac.post("/api/authorize") + assert response.status_code == 200 + self.token3 = response.json()['token'] + + async with AsyncClient(app=self.app, base_url="http://test") as ac: + response = await ac.get("/api/conference", headers={"Authorization": f"Bearer {self.token}"}) + assert response.status_code == 200 + self.last_updated = response.json()['last_updated'] + + self.sessions = response.json()['conference']['db']['sessions'] + + async def test_get_conference(self): + async with AsyncClient(app=self.app, base_url="http://test") as ac: + response = await ac.get("/api/conference", headers={"Authorization": f"Bearer {self.token}"}) + assert response.status_code == 200 + + r = response.json() + assert 'conference' in r + assert 'acronym' in r['conference'] + assert r['conference']['acronym'] == 'sfscon-2024' + + async def test_get_conference_with_last_updated_time(self): + + async with AsyncClient(app=self.app, base_url="http://test") as ac: + response = await ac.get("/api/conference", headers={"Authorization": f"Bearer {self.token}"}) + assert response.status_code == 200 + + r = response.json() + assert 'conference' in r and r['conference'] + + last_updated = r['last_updated'] + + async with AsyncClient(app=self.app, base_url="http://test") as ac: + response = await ac.get(f"/api/conference?last_updated={last_updated}", + headers={"Authorization": f"Bearer {self.token}"}) + assert response.status_code == 200 + + r = response.json() + + assert 'conference' in r and not r['conference'] + + async def test_bookmarks(self): + async with AsyncClient(app=self.app, base_url="http://test") as ac: + response = await ac.get(f"/api/conference?last_updated={self.last_updated}", + headers={"Authorization": f"Bearer {self.token}"}) + assert response.status_code == 200 + + res = response.json() + + assert 'bookmarks' in res + assert res['bookmarks'] == [] + + id_1st_session = list(self.sessions.keys())[0] + response = await ac.post(f"/api/sessions/{id_1st_session}/bookmarks/toggle", + headers={"Authorization": f"Bearer {self.token}"}) + assert response.status_code == 200 + assert response.json() == {'bookmarked': True} + + response = await ac.get(f"/api/conference?last_updated={self.last_updated}", + headers={"Authorization": f"Bearer {self.token}"}) + assert response.status_code == 200 + + res = response.json() + + assert 'bookmarks' in res + assert res['bookmarks'] == [id_1st_session] + + response = await ac.post(f"/api/sessions/{id_1st_session}/bookmarks/toggle", + headers={"Authorization": f"Bearer {self.token}"}) + assert response.status_code == 200 + + assert response.json() == {'bookmarked': False} + response = await ac.get(f"/api/conference?last_updated={self.last_updated}", + headers={"Authorization": f"Bearer {self.token}"}) + assert response.status_code == 200 + + res = response.json() + + assert 'bookmarks' in res + assert res['bookmarks'] == [] + + async def test_rating(self): + # ... + async with AsyncClient(app=self.app, base_url="http://test") as ac: + response = await ac.get(f"/api/conference?last_updated={self.last_updated}", + headers={"Authorization": f"Bearer {self.token}"}) + assert response.status_code == 200 + + res = response.json() + + assert 'ratings' in res + assert res['ratings'] == {'my_rate_by_session': {}, 'rates_by_session': {}} + + id_1st_session = list(self.sessions.keys())[0] + + with unittest.mock.patch('conferences.controller.conference.now') as mocked_datetime: + mocked_datetime.return_value = datetime.datetime(2024, 11, 1, 11, 0) + + response = await ac.post(f"/api/sessions/{id_1st_session}/rate", json={'rating': 5}, + headers={"Authorization": f"Bearer {self.token}"}) + + assert response.status_code == 406 + assert 'detail' in response.json() and 'code' in response.json()['detail'] + assert response.json()['detail']['code'] == 'SESSION_IS_NOT_RATEABLE' + + id_1st_session = None + for s in self.sessions: + session = self.sessions[s] + if session['title'] == 'Let’s all get over the CRA!': + id_1st_session = s + break + + assert id_1st_session + + with unittest.mock.patch('conferences.controller.conference.now') as mocked_datetime: + mocked_datetime.return_value = datetime.datetime(2024, 11, 1, 11, 0) + response = await ac.post(f"/api/sessions/{id_1st_session}/rate", json={'rating': 5}, headers={"Authorization": f"Bearer {self.token}"}) + + assert response.status_code == 406 + assert 'detail' in response.json() and 'code' in response.json()['detail'] + assert response.json()['detail']['code'] == 'CAN_NOT_RATE_SESSION_IN_FUTURE' + + with unittest.mock.patch('conferences.controller.conference.now') as mocked_datetime: + mocked_datetime.return_value = datetime.datetime(2024, 11, 8, 11, 0) + response = await ac.post(f"/api/sessions/{id_1st_session}/rate", json={'rating': 5}, + headers={"Authorization": f"Bearer {self.token}"}) + assert response.status_code == 406 + assert response.json()['detail']['code'] == 'CAN_NOT_RATE_SESSION_IN_FUTURE' + + with unittest.mock.patch('conferences.controller.conference.now') as mocked_datetime: + mocked_datetime.return_value = datetime.datetime(2024, 11, 8, 11, 1) + response = await ac.post(f"/api/sessions/{id_1st_session}/rate", json={'rating': 5}, + headers={"Authorization": f"Bearer {self.token}"}) + + assert response.status_code == 200 + + + assert response.json() == {'avg_rate': 5, 'total_rates': 1} + + # ako isti korisnik glasa ponovo desice se samo da se azurira ocena + + with unittest.mock.patch('conferences.controller.conference.now') as mocked_datetime: + mocked_datetime.return_value = datetime.datetime(2024, 11, 8, 11, 1) + response = await ac.post(f"/api/sessions/{id_1st_session}/rate", json={'rating': 2}, + headers={"Authorization": f"Bearer {self.token}"}) + + assert response.status_code == 200 + assert response.json() == {'avg_rate': 2, 'total_rates': 1} + + # ocenu takodje mozemo proveriti uzimanjem konferencije + + response = await ac.get(f"/api/conference?last_updated={self.last_updated}", + headers={"Authorization": f"Bearer {self.token}"}) + assert response.status_code == 200 + + res = response.json() + + assert 'ratings' in res + assert res['ratings'] == {'rates_by_session': {id_1st_session: [2.0, 1]}, + 'my_rate_by_session': {id_1st_session: 2}} + + # uvecemo drugog korisnika da glasa + + with unittest.mock.patch('conferences.controller.conference.now') as mocked_datetime: + mocked_datetime.return_value = datetime.datetime(2024, 11, 8, 11, 1) + response = await ac.post(f"/api/sessions/{id_1st_session}/rate", json={'rating': 5}, + headers={"Authorization": f"Bearer {self.token2}"}) + + assert response.status_code == 200 + assert response.json() == {'avg_rate': (2 + 5) / 2, 'total_rates': 2} + + # glasace sada i treci korisnik + + with unittest.mock.patch('conferences.controller.conference.now') as mocked_datetime: + mocked_datetime.return_value = datetime.datetime(2024, 11, 8, 11, 1) + response = await ac.post(f"/api/sessions/{id_1st_session}/rate", json={'rating': 5}, + headers={"Authorization": f"Bearer {self.token3}"}) + + assert response.status_code == 200 + assert response.json() == {'avg_rate': (2 + 5 + 5) / 3, 'total_rates': 3} + + # ocenu takodje mozemo proveriti uzimanjem konferencije + + response = await ac.get(f"/api/conference?last_updated={self.last_updated}", + headers={"Authorization": f"Bearer {self.token}"}) + assert response.status_code == 200 + + res = response.json() + + assert 'ratings' in res + assert res['ratings'] == {'my_rate_by_session': {id_1st_session: 2}, + 'rates_by_session': {id_1st_session: [4.0, + 3]}} + + # dodacemo i glasanje za drugu sesiju + + id_2nd_session = list(self.sessions.keys())[1] + + with unittest.mock.patch('conferences.controller.conference.now') as mocked_datetime: + mocked_datetime.return_value = datetime.datetime(2024, 11, 8, 11, 1) + response = await ac.post(f"/api/sessions/{id_2nd_session}/rate", json={'rating': 1}, + headers={"Authorization": f"Bearer {self.token3}"}) + + assert response.status_code == 200 + assert response.json() == {'avg_rate': 1, 'total_rates': 1} + + response = await ac.get(f"/api/conference?last_updated={self.last_updated}", + headers={"Authorization": f"Bearer {self.token3}"}) + assert response.status_code == 200 + + res = response.json() + + assert 'ratings' in res + assert res['ratings']['rates_by_session'] == {id_1st_session: [4.0, 3], + id_2nd_session: [1.0, 1]} + + assert res['ratings']['my_rate_by_session'] == {id_1st_session: 5, id_2nd_session: 1} + + # ukoliko drugi user zahteva isto dobice iste rate ali my rate ce biti razlicit + + response = await ac.get(f"/api/conference?last_updated={self.last_updated}", + headers={"Authorization": f"Bearer {self.token}"}) + assert response.status_code == 200 + + res = response.json() + assert 'ratings' in res + assert res['ratings']['rates_by_session'] == {id_1st_session: [4.0, 3], + id_2nd_session: [1.0, 1]} + + assert res['ratings']['my_rate_by_session'] == {id_1st_session: 2} + + async def test_abstract(self): + + nr_abstracts = 0 + for id_session in self.sessions: + session = self.sessions[id_session] + assert 'abstract' in session + if session['abstract']: + nr_abstracts += 1 + + assert nr_abstracts > 0 + + async def test_title(self): + + for id_session in self.sessions: + session = self.sessions[id_session] + assert 'title' in session + assert session['title'] + + + async def do_test_push_notification(self, group_notifications_by_user: bool, expected_notifications: int): + async with AsyncClient(app=self.app, base_url="http://test") as ac: + response = await ac.post("/api/authorize") + assert response.status_code == 200 + token = response.json()['token'] + + response = await ac.post('/api/notification-token', + json={'push_notification_token': 'ExponentPushToken[xxxxxxxxxxxxxxxxxxxxx1]'}, + headers={"Authorization": f"Bearer {token}"}) + assert response.status_code == 200 + + response = await ac.post("/api/authorize") + assert response.status_code == 200 + token2 = response.json()['token'] + + response = await ac.post('/api/notification-token', + json={'push_notification_token': 'ExponentPushToken[xxxxxxxxxxxxxxxxxxxxx2]'}, + headers={"Authorization": f"Bearer {token2}"}) + assert response.status_code == 200 + + response = await ac.get("/api/me", headers={"Authorization": f"Bearer {token}"}) + assert response.status_code == 200 + + response = await ac.get("/api/me", headers={"Authorization": f"Bearer {token2}"}) + assert response.status_code == 200 + + id_cra_session = None + for s in self.sessions: + session = self.sessions[s] + if session['title'] == 'Let’s all get over the CRA!': + id_cra_session = s + break + + assert id_cra_session + + id_eti_session = None + for s in self.sessions: + session = self.sessions[s] + if session['title'] == 'On the ethical challenges raised by robots powered by Artificial Intelligence': + id_eti_session = s + break + + assert id_eti_session + + response = await ac.post(f"/api/sessions/{id_cra_session}/bookmarks/toggle", + headers={"Authorization": f"Bearer {token}"}) + assert response.status_code == 200 + assert response.json() == {'bookmarked': True} + + response = await ac.post(f"/api/sessions/{id_eti_session}/bookmarks/toggle", + headers={"Authorization": f"Bearer {token}"}) + assert response.status_code == 200 + assert response.json() == {'bookmarked': True} + + response = await ac.post(f"/api/sessions/{id_cra_session}/bookmarks/toggle", + headers={"Authorization": f"Bearer {token2}"}) + assert response.status_code == 200 + assert response.json() == {'bookmarked': True} + + response = await ac.post("/api/import-xml", json={'use_local_xml': True, + 'local_xml_fname': 'sfscon2024.1st_session_moved_for_5_minutes.xml', + 'group_notifications_by_user': group_notifications_by_user + }) + assert response.status_code == 200 + + redis_client = RedisClientHandler.get_redis_client() + all_messages = redis_client.get_all_messages('opencon_push_notification') + assert len(all_messages) == expected_notifications + ... + + @patch.object(RedisClientHandler, "get_redis_client", + return_value=RedisClientHandler(redis_instance=fakeredis.FakeStrictRedis())) + async def test_push_notification_ungrouped(self, *args, **kwargs): + await self.do_test_push_notification(group_notifications_by_user=False, expected_notifications=3) + + @patch.object(RedisClientHandler, "get_redis_client", + return_value=RedisClientHandler(redis_instance=fakeredis.FakeStrictRedis())) + async def test_push_notification_grouped(self, *args, **kwargs): + await self.do_test_push_notification(group_notifications_by_user=True, expected_notifications=2) + + +class TestUpdateXML(BaseAPITest): + async def setup(self): + + self.import_modules(['src.conferences.api']) + + async with AsyncClient(app=self.app, base_url="http://test") as ac: + response = await ac.post("/api/import-xml", json={'use_local_xml': True, 'local_xml_fname': 'sfscon2024.xml', + }) + assert response.status_code == 200 + + self.token = (await ac.post('/api/authorize')).json()['token'] + + response = await ac.post('/api/notification-token', + json={'push_notification_token': 'ExponentPushToken[xxxxxxxxxxxxxxxxxxxxx2]'}, + headers={"Authorization": f"Bearer {self.token}"}) + assert response.status_code == 200 + + + response = await ac.get('/api/conference', headers={'Authorization': f'Bearer {self.token}'}) + assert response.status_code == 200 + + self.sessions = response.json()['conference']['db']['sessions'] + + + @patch.object(RedisClientHandler, "get_redis_client", + return_value=RedisClientHandler(redis_instance=fakeredis.FakeStrictRedis())) + async def test_removing_session(self, *args, **kwargs): + + async with AsyncClient(app=self.app, base_url="http://test") as ac: + + for session in self.sessions: + if self.sessions[session]['unique_id'] == '2024day1event95': + id_session = self.sessions[session]['id'] + break + + assert id_session + + response = await ac.post(f"/api/sessions/{id_session}/bookmarks/toggle", + headers={"Authorization": f"Bearer {self.token}"}) + + assert response.status_code==200 + + + response = await ac.post("/api/import-xml", json={'use_local_xml': True, 'local_xml_fname': 'sfscon2024.session-removed.xml', + }) + assert response.status_code == 200 + + response = await ac.get('/api/conference', headers={'Authorization': f'Bearer {self.token}'}) + assert response.status_code == 200 + after_update_sessions = response.json()['conference']['db']['sessions'] + + assert len(after_update_sessions) == len(self.sessions) - 1 + + redis_client = RedisClientHandler.get_redis_client() + all_messages = redis_client.get_all_messages('opencon_push_notification') + + ... + assert len(all_messages) == 1 + + + # # return removed ecvent + # + # response = await ac.post("/api/import-xml", json={'use_local_xml': True, 'local_xml_fname': 'sfscon2024.xml', + # }) + # assert response.status_code == 200 + # + # response = await ac.get('/api/conference', headers={'Authorization': f'Bearer {self.token}'}) + # assert response.status_code == 200 + # after_update_sessions = response.json()['conference']['db']['sessions'] + # + # assert len(after_update_sessions) == len(self.sessions) + + +class TestJsonData(BaseAPITest): + async def setup(self): + + current_file_path = os.path.dirname(os.path.realpath(__file__)) + with open(current_file_path + '/assets/sfs2024.10.14.json', 'r') as f: + self.data = json.load(f) + assert self.data + + assert 'day' in self.data + self.sessions = [] + for day in self.data['day']: + assert 'room' in day + assert isinstance(day['room'], list) + for room in day['room']: + assert 'event' in room + assert isinstance(room['event'], list) or isinstance(room['event'], dict) + + if isinstance(room['event'], list): + for event in room['event']: + self.sessions.append(event) + else: + self.sessions.append(room['event']) + + async def test(self): + unique_ids = set() + + for session in self.sessions: + if '@unique_id' not in session: + continue + if session['@unique_id'] in unique_ids: + assert False, f'DUPLICATE: {session["title"]}' + + unique_ids.add(session['@unique_id']) + + +class TestAdmin(BaseAPITest): + + async def setup(self): + self.import_modules(['src.conferences.api']) + + async with AsyncClient(app=self.app, base_url="http://test") as ac: + response = await ac.post("/api/import-xml", json={'use_local_xml': True}) + assert response.status_code == 200 + + self.token1 = (await ac.post('/api/authorize')).json()['token'] + self.token2 = (await ac.post('/api/authorize')).json()['token'] + self.token3 = (await ac.post('/api/authorize')).json()['token'] + + + + response = await ac.get('/api/conference', headers={'Authorization': f'Bearer {self.token1}'}) + assert response.status_code == 200 + + self.sessions = response.json()['conference']['db']['sessions'] + + async def test_login_admin(self): + async with AsyncClient(app=self.app, base_url="http://test") as ac: + ... + response = await ac.post("/api/admin/login", json={"username": "admin", "password": "123"}) + assert response.status_code == 401 + + response = await ac.post("/api/admin/login", json={"username": "admin", "password": "admin"}) + assert response.status_code == 200 + + async def test_get_all_users_with_bookmarks(self): + async with AsyncClient(app=self.app, base_url="http://test") as ac: + + response = await ac.get("/api/admin/users") + assert response.status_code == 401 + + response = await ac.post("/api/admin/login", json={"username": "admin", "password": "admin"}) + assert response.status_code == 200 + + admin_token = response.json()['token'] + + response = await ac.get("/api/admin/users", headers={"Authorization": f"Bearer {self.token1}"}) + assert response.status_code == 401 + + response = await ac.get("/api/admin/users", headers={"Authorization": f"Bearer {admin_token}"}) + assert response.status_code == 200 + + res = response.json() + assert 'data' in res + + assert 3 == len(res['data']) + + for i in range(3): + assert res['data'][i]['bookmarks'] == 0 + + id_1st_session = None + for s in self.sessions: + session = self.sessions[s] + if session['title'] == 'Let’s all get over the CRA!': + id_1st_session = s + break + + assert id_1st_session + + response = await ac.post(f"/api/sessions/{id_1st_session}/bookmarks/toggle", + headers={"Authorization": f"Bearer {self.token1}"}) + + assert response.status_code == 200 + + + response = await ac.get("/api/admin/users", headers={"Authorization": f"Bearer {admin_token}"}) + assert response.status_code == 200 + + res = response.json() + assert 'data' in res + + assert 3 == len(res['data']) + + # for i in range(3): + # assert res['data'][i]['bookmarks'] == [] + + response = await ac.get("/api/admin/users?csv=true", headers={"Authorization": f"Bearer {admin_token}"}) + ... + + + + async def test_get_sessions_by_rate(self): + async with AsyncClient(app=self.app, base_url="http://test") as ac: + + response = await ac.post("/api/admin/login", json={"username": "admin", "password": "admin"}) + + assert response.status_code == 200 + admin_token = response.json()['token'] + + id_1st_session = None + for s in self.sessions: + session = self.sessions[s] + if session['title'] == 'Let’s all get over the CRA!': + id_1st_session = s + break + + assert id_1st_session + + with unittest.mock.patch('conferences.controller.conference.now') as mocked_datetime: + mocked_datetime.return_value = datetime.datetime(2024, 11, 1, 11, 0) + + response = await ac.post(f"/api/sessions/{id_1st_session}/rate", json={'rating': 5}, + headers={"Authorization": f"Bearer {self.token1}"}) + + assert response.status_code == 406 + assert response.json() == {'detail': {"code": "CAN_NOT_RATE_SESSION_IN_FUTURE", + "message": "Rating is only possible after the talk has started."}} + + + response = await ac.get('/api/admin/sessions', headers={'Authorization': f'Bearer {admin_token}'}) + assert response.status_code == 200 + + assert 'data' in response.json() + assert len(response.json()['data']) > 10 + diff --git a/src/tests/test_conference_controller.py b/src/tests/test_conference_controller.py deleted file mode 100644 index 139a677..0000000 --- a/src/tests/test_conference_controller.py +++ /dev/null @@ -1,551 +0,0 @@ -# SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: 2023 Digital CUBE - -import os -import json -import pytest -import logging -from unittest.mock import patch, AsyncMock, Mock - -import conferences.models -from base_test_classes import BaseTest -import datetime - -logging.disable(logging.CRITICAL) - -os.environ["TEST_MODE"] = "true" - -current_file_dir = os.path.dirname(os.path.realpath(__file__)) - - -async def ivo_bookmarks_event1(conference: conferences.models.Conference): - try: - with patch('conferences.controller.fetch_order_from_prefix', new_callable=AsyncMock) as fetch_order_from_prefix: - fetch_order_from_prefix.return_value = {'results': [ - {'order': 'DRXSG', 'attendee_name': 'Igor Jeremic', - 'attendee_name_parts': {'given_name': 'Ivo', 'family_name': 'Kovacevic'}, - 'company': 'DigitalCUBE', - 'subevent': '123', - 'secret': '8stuwespjgtaxwecjgkvtfmycbvupq3r', - 'attendee_email': 'ivo@digitalcube.rs'}]} - res = await conferences.controller.register_pretix_order(conference, 'DRXSG', push_notification_token='ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]') - - except Exception as e: - raise - - token = res['token'] - ivo = conferences.controller.decode_token(token) - - import conferences.models as models - db_ivo = await models.PretixOrder.filter(id_pretix_order=ivo['pretix_order_id']).get_or_none() - - ... - - from conferences.controller import toggle_bookmark_event_session, opencon_serialize - try: - cfr = await opencon_serialize(conference) - except Exception as e: - raise - - ide_e = None - for e in cfr['conference']['db']['sessions']: - s = cfr['conference']['db']['sessions'][e] - if s['unique_id'] == '2023day1event1': - ide_e = e - break - - assert ide_e is not None - - res = await toggle_bookmark_event_session(ivo['pretix_order_id'], event_session_id=ide_e) - assert res['bookmarked'] - - return ide_e, db_ivo - - -class TestXMLProcessing(BaseTest): - - @pytest.mark.asyncio - async def test_fetch_xml_content(self): - from conferences.controller import fetch_xml_content - content = await fetch_xml_content() - assert content is not None - - from conferences.controller import add_conference - res = await add_conference(content, source_uri=os.getenv("XML_URL", None)) - conference = res['conference'] - assert conference is not None - - from conferences.controller import add_conference - res = await add_conference(content, source_uri=os.getenv("XML_URL", None)) - conference = res['conference'] - assert conference is not None - - @pytest.mark.asyncio - async def test_read_xml(self): - from conferences.controller import read_xml_file, opencon_serialize - content = await read_xml_file(current_file_dir + '/assets/sfscon2023.xml') - assert content is not None - - from conferences.controller import add_conference - res = await add_conference(content, source_uri='file://test.xml') - conference = res['conference'] - - from conferences.controller import get_conference - conference2 = await get_conference(conference.id) - - assert conference.id == conference2.id - - serialized = await opencon_serialize(conference2) - - assert serialized is not None - - print(json.dumps(serialized, indent=1)) - - @pytest.mark.asyncio - async def test_add_conference_2_times_using_same_resource(self): - from conferences.controller import read_xml_file - from conferences.controller import add_conference, find_event_by_unique_id, send_changes_to_bookmakers - - content = await read_xml_file(fname=f'{current_file_dir}/assets/sfscon2023_event1day1_0830.xml') - assert content is not None - res = await add_conference(content, source_uri='file://test.xml') - event = await find_event_by_unique_id(res['conference'], '2023day1event1') - # print('\nbefore', event.id, event.start_date, event.end_date, event.unique_id) - - assert res['created'] - assert not res['changes'] - - # await self.ivo_bookmarks_event1() - # await ivo_bookmarks_event1(_self=self) - conference = await conferences.controller.get_conference_by_acronym('sfscon2023') - conference = await conferences.controller.get_conference(conference.id) - - await ivo_bookmarks_event1(conference) - - content = await read_xml_file(fname=f'{current_file_dir}/assets/sfscon2023_event1day1_0835.xml') - assert content is not None - res = await add_conference(content, source_uri='file://test.xml') - # event2 = await find_event_by_unique_id(res['conference'], '2023day1event1') - # # print('after ', event2.id, event2.start_date, event2.end_date, event2.unique_id) - # - # assert not res['created'] - # assert res['changes'] - # assert json.loads(json.dumps(res['changes'], default=lambda x: str(x))) == { - # str(event.id): { - # "old_start_timestamp": "2023-11-10 08:30:00+01:00", - # "new_start_timestamp": "2023-11-11 08:35:00+01:00" - # } - # } - # - # - # res = await send_changes_to_bookmakers(res['conference'], res['changes'], test=True) - # - # import pprint - # pprint.pprint(res) - ... - - @pytest.mark.asyncio - async def test_register_users_on_both_days(self): - from conferences.controller import register_pretix_order, db_add_conference, decode_token, fetch_pretix_order - conference = await db_add_conference('test conference', 'test', source_uri='test://test') - - res = await register_pretix_order(conference, 'XCGU9', push_notification_token='ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]') - - assert res['created'] - assert 'token' in res - - decoded = decode_token(res['token']) - assert 'pretix_order_id' in decoded - assert decoded['pretix_order_id'] == 'XCGU9' - - @pytest.mark.asyncio - async def test_register_via_pretix(self): - from conferences.controller import register_pretix_order, db_add_conference, decode_token, fetch_pretix_order - conference = await db_add_conference('test conference', 'test', source_uri='test://test') - - res = await register_pretix_order(conference, 'PHRJM', push_notification_token='ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]') - - assert res['created'] - assert 'token' in res - - decoded = decode_token(res['token']) - - assert 'pretix_order_id' in decoded - assert decoded['pretix_order_id'] == 'PHRJM' - - res = await fetch_pretix_order(conference, 'PHRJM') - - assert res.first_name == 'Igor' - assert res.last_name == 'Jeremic' - assert res.email == 'igor@digitalcube.rs' - assert res.push_notification_token == 'ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]' - - res = await register_pretix_order(conference, 'PHRJM') - - assert not res['created'] - assert 'token' in res - - res = await fetch_pretix_order(conference, 'PHRJM') - - assert res.first_name == 'Igor' - assert res.last_name == 'Jeremic' - assert res.email == 'igor@digitalcube.rs' - assert not res.push_notification_token - - @pytest.mark.asyncio - async def test_download_xml(self): - from conferences.controller import fetch_xml_content - content = await fetch_xml_content() - assert content is not None - - from conferences.controller import add_conference - res = await add_conference(content, source_uri='file://test.xml') - conference = res['conference'] - assert conference is not None - - -class TestRegisteredUser(BaseTest): - - async def async_setup(self): - await super().async_setup() - - from conferences.controller import read_xml_file - content = await read_xml_file(current_file_dir + '/assets/sfscon2023.xml') - assert content is not None - - from conferences.controller import add_conference - res = await add_conference(content, source_uri='file://test.xml') - conference = res['conference'] - - from conferences.controller import get_conference - self.conference = await get_conference(conference.id) - - async def test_get_csv(self): - from conferences.controller import get_conference_by_acronym, get_csv_talks - - conference = await get_conference_by_acronym(self.conference.acronym) - - csv_file = await get_csv_talks(conference.acronym) - - assert csv_file.startswith('/tmp/') - assert csv_file.endswith('.csv') - - @pytest.mark.asyncio - async def test_add_stars(self): - from conferences.controller import get_conference, get_stars - - import conferences.controller as controller - - with patch('conferences.controller.fetch_order_from_prefix', new_callable=AsyncMock) as fetch_order_from_prefix: - fetch_order_from_prefix.return_value = {'results': [ - {'order': 'PHRJM', 'attendee_name': 'Igor Jeremic', - 'attendee_name_parts': {'given_name': 'Igor', 'family_name': 'Jeremic'}, - 'company': 'DigitalCUBE', - 'subevent': '123', - 'secret': '8stuwespjgtaxwecjgkvtfmycbvupq3r', - 'attendee_email': 'igor@digitalcube.rs'}]} - - res = await controller.register_pretix_order(self.conference, 'PHRJM', push_notification_token='ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]') - - token = res['token'] - igor = controller.decode_token(token) - - assert 'pretix_order_id' in igor - assert igor['pretix_order_id'] == 'PHRJM' - - with patch('conferences.controller.fetch_order_from_prefix', new_callable=AsyncMock) as fetch_order_from_prefix: - fetch_order_from_prefix.return_value = {'results': [ - {'order': 'DRXSG', 'attendee_name': 'Igor Jeremic', - 'attendee_name_parts': {'given_name': 'Ivo', 'family_name': 'Kovacevic'}, - 'company': 'DigitalCUBE', - 'subevent': '123', - 'secret': '8stuwespjgtaxwecjgkvtfmycbvupq3r', - 'attendee_email': 'ivo@digitalcube.rs'}]} - res = await controller.register_pretix_order(self.conference, 'DRXSG', push_notification_token='ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]') - - token = res['token'] - ivo = controller.decode_token(token) - - assert 'pretix_order_id' in ivo - assert ivo['pretix_order_id'] == 'DRXSG' - - from conferences.controller import add_stars, opencon_serialize - - cfr = await opencon_serialize(self.conference) - - assert cfr['conference_avg_rating'] == {'rates_by_session': {}} # no votes yet - - event3_session_id = cfr['conference']['idx']['ordered_sessions_by_days']['2023-11-10'][2] - - # igor votes first - res = await add_stars('PHRJM', event3_session_id, 5) - assert res == {'avg': 5.0, 'nr': 1, 'my_rate': 5} - - # check ratings in serialized conference - self.conference = await get_conference(self.conference.id) - cfr = await opencon_serialize(self.conference) - assert cfr['conference_avg_rating'] == {'rates_by_session': {str(event3_session_id): [5, 1]}} - - # ivo votes second - res = await add_stars('DRXSG', event3_session_id, 2) - assert res == {'avg': round((5.0 + 2.0) / 2, 2), 'nr': 2, 'my_rate': 2} - - # ivor votes again with different vote - res = await add_stars('DRXSG', event3_session_id, 5) - assert res == {'avg': round((5.0 + 5.0) / 2, 2), 'nr': 2, 'my_rate': 5} - - # mitar votes - - with patch('conferences.controller.fetch_order_from_prefix', new_callable=AsyncMock) as fetch_order_from_prefix: - fetch_order_from_prefix.return_value = {'results': [ - {'order': 'DCN73', 'attendee_name': 'Mitar Spasic', - 'attendee_name_parts': {'given_name': 'Mitar', 'family_name': 'Spasic'}, - 'company': 'DigitalCUBE', - 'subevent': '123', - 'secret': '8stuwespjgtaxwecjgkvtfmycbvupq3r', - 'attendee_email': 'mitar@digitalcube.rs'}]} - res = await controller.register_pretix_order(self.conference, 'DCN73', push_notification_token='ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]') - - token = res['token'] - - mitar = controller.decode_token(token) - - assert 'pretix_order_id' in mitar - assert mitar['pretix_order_id'] == 'DCN73' - - # mitar correct his vote from 5 to 1 - res = await add_stars('DCN73', event3_session_id, 1) - assert res == {'avg': round((5.0 + 5.0 + 1.0) / 3, 2), 'nr': 3, 'my_rate': 1} - - res = await get_stars('DCN73', event3_session_id) - assert res == {'avg': round((5.0 + 5.0 + 1.0) / 3, 2), 'nr': 3, 'my_rate': 1} - - res = await add_stars('DCN73', event3_session_id, 2) - assert res == {'avg': round((5.0 + 5.0 + 2.0) / 3, 2), 'nr': 3, 'my_rate': 2} - - res = await get_stars('DCN73', event3_session_id) - assert res == {'avg': round((5.0 + 5.0 + 2.0) / 3, 2), 'nr': 3, 'my_rate': 2} - - res = await add_stars('DCN73', event3_session_id, 3) - assert res == {'avg': round((5.0 + 5.0 + 3.0) / 3, 2), 'nr': 3, 'my_rate': 3} - - res = await get_stars('DCN73', event3_session_id) - assert res == {'avg': round((5.0 + 5.0 + 3.0) / 3, 2), 'nr': 3, 'my_rate': 3} - - res = await add_stars('DCN73', event3_session_id, 4) - assert res == {'avg': round((5.0 + 5.0 + 4.0) / 3, 2), 'nr': 3, 'my_rate': 4} - - res = await add_stars('DCN73', event3_session_id, 5) - assert res == {'avg': round((5.0 + 5.0 + 5.0) / 3, 2), 'nr': 3, 'my_rate': 5} - - # check ratings in serialized conference - self.conference = await get_conference(self.conference.id) - cfr = await opencon_serialize(self.conference) - assert cfr['conference_avg_rating'] == {'rates_by_session': {str(event3_session_id): [5, 3]}} - - @pytest.mark.asyncio - async def test_bookmark_event_session(self): - from conferences.controller import register_pretix_order, decode_token, my_bookmarks - res = await register_pretix_order(self.conference, 'PHRJM', push_notification_token='ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]') - token = res['token'] - decoded = decode_token(token) - assert 'pretix_order_id' in decoded - assert decoded['pretix_order_id'] == 'PHRJM' - - from conferences.controller import toggle_bookmark_event_session, opencon_serialize - - cfr = await opencon_serialize(self.conference) - event_session_id = cfr['conference']['idx']['ordered_sessions_by_days']['2023-11-10'][0] - event2_session_id = cfr['conference']['idx']['ordered_sessions_by_days']['2023-11-10'][1] - event3_session_id = cfr['conference']['idx']['ordered_sessions_by_days']['2023-11-10'][2] - - res = await toggle_bookmark_event_session(decoded['pretix_order_id'], event_session_id=event_session_id) - assert res['bookmarked'] - - res = await toggle_bookmark_event_session(decoded['pretix_order_id'], event_session_id=event_session_id) - assert not res['bookmarked'] - - res = await toggle_bookmark_event_session(decoded['pretix_order_id'], event_session_id=event_session_id) - assert res['bookmarked'] - res = await toggle_bookmark_event_session(decoded['pretix_order_id'], event_session_id=event2_session_id) - assert res['bookmarked'] - res = await toggle_bookmark_event_session(decoded['pretix_order_id'], event_session_id=event3_session_id) - assert res['bookmarked'] - - assert {event_session_id, event2_session_id, event3_session_id} == await my_bookmarks(decoded['pretix_order_id']) - - res = await toggle_bookmark_event_session(decoded['pretix_order_id'], event_session_id=event2_session_id) - assert not res['bookmarked'] - - assert {event_session_id, event3_session_id} == await my_bookmarks(decoded['pretix_order_id']) - - @pytest.mark.asyncio - async def test_change_starting_date_for_bookmarked_session(self): - - from conferences.controller import register_pretix_order, decode_token, my_bookmarks, read_xml_file, send_changes_to_bookmakers, find_event_by_unique_id - await register_pretix_order(self.conference, 'PHRJM', push_notification_token='ExponentPushToken[IGOR]') - await register_pretix_order(self.conference, 'DRXSG', push_notification_token='ExponentPushToken[IVO]') - - from conferences.controller import toggle_bookmark_event_session, opencon_serialize - - cfr = await opencon_serialize(self.conference) - event_session_id = cfr['conference']['idx']['ordered_sessions_by_days']['2023-11-10'][0] - - res = await toggle_bookmark_event_session('PHRJM', event_session_id=event_session_id) - assert res['bookmarked'] - res = await toggle_bookmark_event_session('DRXSG', event_session_id=event_session_id) - assert res['bookmarked'] - - content = await read_xml_file(current_file_dir + '/assets/sfscon2023_event1day1_0835.xml') - assert content is not None - - from conferences.controller import add_conference - res = await add_conference(content, source_uri='file://test.xml') - - conference = res['conference'] - assert not res['created'] - assert res['changes'] - - event = await find_event_by_unique_id(res['conference'], '2023day1event1') - - assert json.loads(json.dumps(res['changes'], default=lambda x: str(x))) == { - str(event.id): { - "old_start_timestamp": "2023-11-10 08:30:00+01:00", - "new_start_timestamp": "2023-11-11 08:35:00+01:00" - } - } - - res = await send_changes_to_bookmakers(res['conference'], res['changes']) - - import pprint - print('\n') - pprint.pprint(res) - # - # return - - assert res['nr_enqueued'] == 2 - - @pytest.mark.asyncio - async def test_send_notifications_5_minute_before_start_integral(self): - - from conferences.controller import send_notifications_5_minute_before_start - - res = await send_notifications_5_minute_before_start(conference=self.conference, - now_time=datetime.datetime(2023, 11, 10, 8, 26, 0, )) - - # assert res == {'enqueued_messages': 0, 'test_only': False} - - await ivo_bookmarks_event1(conference=self.conference) - - res = await send_notifications_5_minute_before_start(conference=self.conference, - now_time=datetime.datetime(2023, 11, 10, 8, 26, 0, )) - - # assert res == {'enqueued_messages': 1, 'test_only': False} - - # again same time / expecting 0 - - res = await send_notifications_5_minute_before_start(conference=self.conference, - now_time=datetime.datetime(2023, 11, 10, 8, 26, 0, )) - - # assert res == {'enqueued_messages': 0, 'test_only': False} - - # async def ivo_bookmarks_event1(self, conference): - # - # with patch('conferences.controller.fetch_order_from_prefix', new_callable=AsyncMock) as fetch_order_from_prefix: - # fetch_order_from_prefix.return_value = {'results': [ - # {'order': 'DRXSG', 'attendee_name': 'Igor Jeremic', - # 'attendee_name_parts': {'given_name': 'Ivo', 'family_name': 'Kovacevic'}, - # 'company': 'DigitalCUBE', - # 'subevent': '123', - # 'secret': '8stuwespjgtaxwecjgkvtfmycbvupq3r', - # 'attendee_email': 'ivo@digitalcube.rs'}]} - # res = await conferences.controller.register_pretix_order(conference, 'DRXSG', push_notification_token='ExponentPushToken[xxxxxxxxxxxxxxxxxxxxxx]') - # - # token = res['token'] - # ivo = conferences.controller.decode_token(token) - # - # import conferences.models as models - # db_ivo = await models.PretixOrder.filter(id_pretix_order=ivo['pretix_order_id']).get_or_none() - # - # ... - # - # from conferences.controller import toggle_bookmark_event_session, opencon_serialize - # cfr = await opencon_serialize(conference) - # - # ide_e = None - # for e in cfr['conference']['db']['sessions']: - # s = cfr['conference']['db']['sessions'][e] - # if s['unique_id'] == '2023day1event1': - # ide_e = e - # break - # - # assert ide_e is not None - # - # res = await toggle_bookmark_event_session(ivo['pretix_order_id'], event_session_id=ide_e) - # assert res['bookmarked'] - # - # return ide_e, db_ivo - - @pytest.mark.asyncio - async def test_send_notifications_5_minute_before_start(self): - import conferences.controller - import tortoise.timezone - - # let see what we have 9 hours before start - n = await conferences.controller.extract_all_session_event_which_starts_in_next_5_minutes(self.conference, - now=tortoise.timezone.make_aware(datetime.datetime(2023, 11, 10, 0, 0, 0, ))) - # assert n == {'ids': {}, 'human_readable': {}} - print(n) - - # let see what we have 5 minutes before start - n = await conferences.controller.extract_all_session_event_which_starts_in_next_5_minutes(self.conference, - now=tortoise.timezone.make_aware(datetime.datetime(2023, 11, 10, 8, 26, 0, ))) - - assert n['human_readable'] == {'Check-in': {'start_at': '2023-11-10 08:30:00+01:00', 'start_in': '4:00 minutes', 'to_notify': []}} - - try: - ide_e, db_ivo = await ivo_bookmarks_event1(conference=self.conference) - except Exception as e: - raise - - res = await conferences.controller.extract_all_session_event_which_starts_in_next_5_minutes(self.conference, - now=tortoise.timezone.make_aware(datetime.datetime(2023, 11, 10, 8, 26, 0, ))) - - assert 'human_readable' in res - assert res['human_readable'] == {'Check-in': {'start_at': '2023-11-10 08:30:00+01:00', - 'start_in': '4:00 minutes', - 'to_notify': ['ivo@digitalcube.rs']}} - - ids = res['ids'] - - res = await conferences.controller.enqueue_5minute_before_notifications(self.conference, ids) - - # assert res == {'enqueued_messages': 1, 'test_only': False} - - res = await conferences.controller.enqueue_5minute_before_notifications(self.conference, ids) - - # assert res == {'enqueued_messages': 0, 'test_only': False} - - -class TestPrinter(TestRegisteredUser): - - async def test(self): - from conferences.controller import get_conference, get_stars - - import conferences.controller as controller - - lanes = os.getenv('CHECKIN_LANES', None) - assert lanes is not None - - lanes = json.loads(lanes) - lane1 = lanes['LANE1'] - - res = await controller.pretix_qrcode_scanned(self.conference.id, - 'secret', - lane1, 'PHRJM') - - # token = res['token'] - # igor = controller.decode_token(token) - # - # assert 'pretix_order_id' in igor - # assert igor['pretix_order_id'] == 'PHRJM' diff --git a/src/workers/push_notifications.py b/src/workers/push_notifications.py index e633ba4..98f3bdc 100644 --- a/src/workers/push_notifications.py +++ b/src/workers/push_notifications.py @@ -1,13 +1,14 @@ # SPDX-License-Identifier: GPL-3.0-or-later # SPDX-FileCopyrightText: 2023 Digital CUBE -import os +import asyncio import json -import redis -import httpx -import dotenv import logging -import asyncio +import os + +import dotenv +import httpx +import redis dotenv.load_dotenv() @@ -44,20 +45,31 @@ def setup_logger(logger_name): async def send_notification(item): log = logging.getLogger('push_notifications') - print("ITEM", item) + + if not item or 'id' not in item or not item['id']: + print("not item or 'id' not in item or not item['id']") + return + try: - json_igor = { - "to": "ExponentPushToken[BCzMMxFrELJNXBLHHGia5T]", + + payload = { + "to": item['id'], "title": item['subject'], "body": item['message'] } async with httpx.AsyncClient() as client: - res = await client.post('https://exp.host/--/api/v2/push/send', json=json_igor) + print("SENDING", payload) + + res = await client.post('https://exp.host/--/api/v2/push/send', json=payload) + print(res.json()) except Exception as e: + + print("ERROR",e) + log.critical(f"Error sending push notification: {e}") @@ -69,20 +81,24 @@ async def read_redis_queue(queue_name): log.info("Worker started") while True: - res = redis_client.blpop(queue_name.encode('utf-8'), 60 * 5) + res = redis_client.blpop(queue_name.encode('utf-8'), 5) # *6 if not res: print('.') continue + #breakpoint() + queue, item = res item = item.decode('utf-8') - item = json.loads(item) - print(item) - await send_notification(item) - + try: + await send_notification(item) + except Exception as e: + print("EXCEPTION", e) + continue + if __name__ == "__main__": setup_logger('push_notifications') diff --git a/start.sh b/start.sh new file mode 100755 index 0000000..644c1b1 --- /dev/null +++ b/start.sh @@ -0,0 +1,12 @@ +#!/usr/bin/bash + +service cron start + +sleep 1 + +echo "*/5 * * * * /scripts/update-conf.py " > /tmp/cron +crontab /tmp/cron + + +python main.py + diff --git a/static/1006.png b/static/1006.png new file mode 100644 index 0000000..4f8895c Binary files /dev/null and b/static/1006.png differ diff --git a/static/1006org_logo.png b/static/1006org_logo.png new file mode 100644 index 0000000..cb6113e Binary files /dev/null and b/static/1006org_logo.png differ diff --git a/static/ALLOTROPIA_BN.png b/static/ALLOTROPIA_BN.png new file mode 100644 index 0000000..f6ef250 Binary files /dev/null and b/static/ALLOTROPIA_BN.png differ diff --git a/static/CATCHSOLVE_BN.png b/static/CATCHSOLVE_BN.png new file mode 100644 index 0000000..82db68e Binary files /dev/null and b/static/CATCHSOLVE_BN.png differ diff --git a/static/CHRISTIAN_GAPP_BN.png b/static/CHRISTIAN_GAPP_BN.png new file mode 100644 index 0000000..2a0c406 Binary files /dev/null and b/static/CHRISTIAN_GAPP_BN.png differ diff --git a/static/ECOSTEER_BN.png b/static/ECOSTEER_BN.png new file mode 100644 index 0000000..4707e68 Binary files /dev/null and b/static/ECOSTEER_BN.png differ diff --git a/static/EDIH_NOI_BN.png b/static/EDIH_NOI_BN.png new file mode 100644 index 0000000..3efc1ce Binary files /dev/null and b/static/EDIH_NOI_BN.png differ diff --git a/static/ENDIAN_BN.png b/static/ENDIAN_BN.png new file mode 100644 index 0000000..07ff196 Binary files /dev/null and b/static/ENDIAN_BN.png differ diff --git a/static/FSFE_BN.png b/static/FSFE_BN.png new file mode 100644 index 0000000..30d01e1 Binary files /dev/null and b/static/FSFE_BN.png differ diff --git a/static/GRUPPOFOS_BN.png b/static/GRUPPOFOS_BN.png new file mode 100644 index 0000000..8aa91a1 Binary files /dev/null and b/static/GRUPPOFOS_BN.png differ diff --git a/static/LUGBZ_BN.png b/static/LUGBZ_BN.png new file mode 100644 index 0000000..2c3b99e Binary files /dev/null and b/static/LUGBZ_BN.png differ diff --git a/static/LinuxMagazine_BN.png b/static/LinuxMagazine_BN.png new file mode 100644 index 0000000..643d10c Binary files /dev/null and b/static/LinuxMagazine_BN.png differ diff --git a/static/MADEINCIMA_BN.png b/static/MADEINCIMA_BN.png new file mode 100644 index 0000000..e03907f Binary files /dev/null and b/static/MADEINCIMA_BN.png differ diff --git a/static/MNOI_BN.png b/static/MNOI_BN.png new file mode 100644 index 0000000..f005fb8 Binary files /dev/null and b/static/MNOI_BN.png differ diff --git a/static/OW2_BN.png b/static/OW2_BN.png new file mode 100644 index 0000000..e1749b7 Binary files /dev/null and b/static/OW2_BN.png differ diff --git a/static/OpenSource-JobHub_BN.png b/static/OpenSource-JobHub_BN.png new file mode 100644 index 0000000..a96df51 Binary files /dev/null and b/static/OpenSource-JobHub_BN.png differ diff --git a/static/Peer_BN.png b/static/Peer_BN.png new file mode 100644 index 0000000..6e9eb23 Binary files /dev/null and b/static/Peer_BN.png differ diff --git a/static/QBUS_BN.png b/static/QBUS_BN.png new file mode 100644 index 0000000..737c277 Binary files /dev/null and b/static/QBUS_BN.png differ diff --git a/static/RMB_BN.png b/static/RMB_BN.png new file mode 100644 index 0000000..ec933a2 Binary files /dev/null and b/static/RMB_BN.png differ diff --git a/static/SHETECH_BN.png b/static/SHETECH_BN.png new file mode 100644 index 0000000..5304a39 Binary files /dev/null and b/static/SHETECH_BN.png differ diff --git a/static/STUDIOHUG_BN.png b/static/STUDIOHUG_BN.png new file mode 100644 index 0000000..974b4d0 Binary files /dev/null and b/static/STUDIOHUG_BN.png differ diff --git a/static/SYMPHONIE_BN.png b/static/SYMPHONIE_BN.png new file mode 100644 index 0000000..305fbbc Binary files /dev/null and b/static/SYMPHONIE_BN.png differ diff --git a/static/SpeckTech_BN.png b/static/SpeckTech_BN.png new file mode 100644 index 0000000..c2940b6 Binary files /dev/null and b/static/SpeckTech_BN.png differ diff --git a/static/Stickermule_BN.png b/static/Stickermule_BN.png new file mode 100644 index 0000000..a48a166 Binary files /dev/null and b/static/Stickermule_BN.png differ diff --git a/static/TELMEKOM_BN.png b/static/TELMEKOM_BN.png new file mode 100644 index 0000000..5c22397 Binary files /dev/null and b/static/TELMEKOM_BN.png differ diff --git a/static/UNIBZ_BN.png b/static/UNIBZ_BN.png new file mode 100644 index 0000000..93f2b53 Binary files /dev/null and b/static/UNIBZ_BN.png differ diff --git a/static/VATES_BN.png b/static/VATES_BN.png new file mode 100644 index 0000000..5712a27 Binary files /dev/null and b/static/VATES_BN.png differ diff --git a/static/WUD_BN.png b/static/WUD_BN.png new file mode 100644 index 0000000..d35001b Binary files /dev/null and b/static/WUD_BN.png differ diff --git a/static/ZIRKONZAHN_BN.png b/static/ZIRKONZAHN_BN.png new file mode 100644 index 0000000..3216d67 Binary files /dev/null and b/static/ZIRKONZAHN_BN.png differ diff --git a/static/catch-solve.png b/static/catch-solve.png new file mode 100644 index 0000000..8ca3b94 Binary files /dev/null and b/static/catch-solve.png differ diff --git a/static/endian_logo.png b/static/endian_logo.png new file mode 100644 index 0000000..ef6ed09 Binary files /dev/null and b/static/endian_logo.png differ diff --git a/static/fos.png b/static/fos.png new file mode 100644 index 0000000..a0911a4 Binary files /dev/null and b/static/fos.png differ diff --git a/static/fsfe.png b/static/fsfe.png new file mode 100644 index 0000000..2078eb9 Binary files /dev/null and b/static/fsfe.png differ diff --git a/static/huawei.png b/static/huawei.png new file mode 100644 index 0000000..4721bfc Binary files /dev/null and b/static/huawei.png differ diff --git a/static/iota.png b/static/iota.png new file mode 100644 index 0000000..19129e9 Binary files /dev/null and b/static/iota.png differ diff --git a/static/lugbz.png b/static/lugbz.png new file mode 100644 index 0000000..edde6e9 Binary files /dev/null and b/static/lugbz.png differ diff --git a/static/made-in-cima.png b/static/made-in-cima.png new file mode 100644 index 0000000..43e7d04 Binary files /dev/null and b/static/made-in-cima.png differ diff --git a/static/old_index.html b/static/old_index.html new file mode 100644 index 0000000..c8629c6 --- /dev/null +++ b/static/old_index.html @@ -0,0 +1 @@ +staic \ No newline at end of file diff --git a/static/ow2.png b/static/ow2.png new file mode 100644 index 0000000..21f6a78 Binary files /dev/null and b/static/ow2.png differ diff --git a/static/peer.png b/static/peer.png new file mode 100644 index 0000000..8ff27a2 Binary files /dev/null and b/static/peer.png differ diff --git a/static/progress-group.png b/static/progress-group.png new file mode 100644 index 0000000..6de7412 Binary files /dev/null and b/static/progress-group.png differ diff --git a/static/qbus.png b/static/qbus.png new file mode 100644 index 0000000..e67559e Binary files /dev/null and b/static/qbus.png differ diff --git a/static/redhat.png b/static/redhat.png new file mode 100644 index 0000000..079bd08 Binary files /dev/null and b/static/redhat.png differ diff --git a/static/regis.png b/static/regis.png new file mode 100644 index 0000000..ba4ff44 Binary files /dev/null and b/static/regis.png differ diff --git a/static/simedia.png b/static/simedia.png new file mode 100644 index 0000000..a90b239 Binary files /dev/null and b/static/simedia.png differ diff --git a/static/sticker-mule.png b/static/sticker-mule.png new file mode 100644 index 0000000..164cf80 Binary files /dev/null and b/static/sticker-mule.png differ diff --git a/static/telmekom.png b/static/telmekom.png new file mode 100644 index 0000000..770b20b Binary files /dev/null and b/static/telmekom.png differ