{"ref":"artifact:sap-samples-ui5con-2026-ui5-linter-workshop","page":"/artifacts/sap-samples-ui5con-2026-ui5-linter-workshop","json":"/artifacts/sap-samples-ui5con-2026-ui5-linter-workshop.json","generated":"2026-10-26","drafted_with_ai":true,"entity":{"id":"sap-samples-ui5con-2026-ui5-linter-workshop","name":"ui5con-2026-ui5-linter-workshop","artifact_type":"sample","ecosystem":"ui5","domain":"developer-experience","origin_ring":"sap-official","use_as":"reference","description":{"one_line":"SAP's UI5con hands-on workshop that takes a legacy UI5 app, seeded with deprecated APIs and inline scripts, from its first UI5 linter report to a clean, CSP-compliant one.","short":"UI5con workshop taking a legacy UI5 app to a clean UI5 linter report","what_it_solves":"A legacy UI5 codebase accumulates deprecated APIs, global variables and CSP violations that nobody notices until the next major release breaks them, and this workshop project is built to have exactly that problem on purpose. It is a variant of the OpenUI5 Todo sample app, seeded with `jQuery.sap.*` calls, `sap.ui.controller()`, global variable access and inline scripts, so attendees run UI5 linter, auto-fix what it can, and resolve the rest by hand across a set of hands-on lecture sections. Its own README warns not to use the code as a best-practice reference; the modernised result, with every finding resolved, sits on the repository's final-result branch."},"links":{"repo":"https://github.com/SAP-samples/ui5con-2026-ui5-linter-workshop"},"type_properties":{"form":{"value":"workshop","sources":[{"url":"https://github.com/SAP-samples/ui5con-2026-ui5-linter-workshop","title":"ui5con-2026-ui5-linter-workshop — README","checked":"2026-10-18","quote":"UI5con 2026 Germany Hands-on Workshop: UI5 Linter in Action: Integrating It Into Your Development Process"}]}},"identity":{"license":"Apache-2.0"},"source_available":true,"demonstrates":["capability:linting"],"maintainers":["actor:sap-samples"],"drafted_with_ai":true,"provenance":{"discovered_via":[{"source":"source:curator"}],"first_seen":"2026-09-14"},"contributors":["actor:matz3","actor:maxreichmann"]},"effective_normative_relations":[],"readings":{"liveness":[{"label":"Maintenance","tier":"unknown","evidence":"no release data"},{"label":"Continuity","tier":"good","evidence":"4 contributors, org-owned"},{"label":"Repository","tier":"good","evidence":"pushed 2026-07, not archived"}],"compatibility":[{"label":"Declared for","tier":"unknown","evidence":"no UI5 release lines in the atlas"},{"label":"Survived majors","tier":"unknown","evidence":"no UI5 release lines in the atlas"},{"label":"Maintainer's CI","tier":"fair","evidence":"no CI configured"}],"practice":[{"label":"Tests","tier":"good","evidence":"6 test files"},{"label":"Docs","tier":"good","evidence":"README 4 KB"},{"label":"Changelog","tier":"fair","evidence":"none in the repo"}],"reach":[{"value":null,"unit":"installs/week"},{"value":8,"unit":"watching"}]},"signals":{"crawled_at":"2026-10-26","npm":"not published under this name","stars":8,"forks":0,"open_issues":0,"archived":false,"pushed_at":"2026-07-20","license_spdx":"Apache-2.0","org_owned":true,"default_branch":"main","created_at":"2026-07-10T12:07:06Z","open_prs":0,"tree_truncated":false,"test_files":6,"workflows":0,"other_ci":false,"readme_bytes":4258,"docs_files":0,"changelog":false,"license_file":true,"dts_files":0,"first_commit":"2026-07-10","last_commit":"2026-07-20","commits":10,"contributors":4,"readme_path":"README.md","readme_sha":"8d295d6d5a30b10ddc1dec591fb55422d49d74d9","repo_read":"2026-10-26"},"edges":{"maintainers":[{"ref":"actor:sap-samples","name":"SAP Samples","json":"/actors/sap-samples.json"}],"contributors":[{"ref":"actor:matz3","name":"Matthias Oßwald","json":"/actors/matz3.json"},{"ref":"actor:maxreichmann","name":"Max Reichmann","json":"/actors/maxreichmann.json"}],"explained_by":[],"alternative_to_this":[],"needed_by":[],"available_via":[],"parts":[],"add_ons":[],"answered_through_parts":[]}}