debian-lsp: improve file format support
The Debian LSP Language Server currently provides basic features like field completion, diagnostics for parse errors and field casing, and simple quick fixes. This project aims to significantly expand its capabilities by integrating with debian-analyzer to provide real-time linting, automatic fixes, and advanced IDE features.
Confirmed Mentor: JelmerVernooij
How to contact the mentor: mail, IRC/Matrix
Confirmed co-mentors: Otto Kekalainen
Difficulty level: Medium to Hard
Project size: 175 hours
Deliverables of the project:
- Hover information showing documentation for fields, common package names, and dependency relationships
- Document symbols for navigating between source paragraphs and binary package definitions
- Go-to-definition support for navigating between related packages in multi-file packaging
- Support for multiple Debian control file formats (debian/control, debian/copyright, debian/changelog, debian/watch)
- Real-time validation as users type, with configurable severity levels
Desirable skills: Knowledge of Debian packaging, Rust programming (particularly traits and ownership patterns), experience with parser design and AST manipulation
What the intern will learn:
- Advanced Rust programming including trait design, lifetime management, and performance optimization
- Deep understanding of Debian package formats and control files
- Parser design patterns and AST manipulation techniques
- How Language Server Protocols (LSP) work and how to design APIs suitable for LSP integration
Application tasks:
- Write a simple Rust program that parses debian/control using the debian-control crate and prints out all binary package names
Profile lintian-brush on a sample Debian package and identify how many times the same files are parsed (hint: use cargo build --release and tools like perf or strace)
- Review the existing fixer code in lintian-brush/src/fixers/ and identify 2-3 fixers that operate on the same files
Related projects:
?https://github.com/jelmer/debian-lsp, debian-analyzer, deb822-lossless, debian-changelog, debian-copyright
AI usage Policy: AI code assistance is acceptable for exploration and learning, but the intern is expected to make all the code changes.
