Help Wanted
Sec is in early development, and building a programming language takes many different kinds of people. Compiler experience is welcome, but it is not required. Programming-language experts, programmers, testers, technical writers, web developers, designers, hardware specialists, and curious users can all make useful contributions.
Who's behind SEC?
My name is Jonas Engström and I started this project as an idea but has grown quite a bit. My first programming training was 1987 and I have been programming on and off ever since. I've been through quite a range of languages, including but not limited to: Basic, Assembler (6800, Zilog, intel...), C, C++ and so on and so forth. Latest it has been Go which is a language I very much enjoy. I do enjoy embedded systems programming but also communication with various obscure systems why Sec has an extra focus on hardware and protocols.
What we need
- Programming-language and compiler expertise — Review the language design, type system, ownership model, concurrency semantics, generics, diagnostics, compiler architecture, LLVM integration, ABI rules, and optimization strategy. Well-reasoned criticism is valuable, even when it challenges the current design.
- Programmers — Still a lot to implement in the compiler. Or just dogfood. Write real programs in Sec. Small tools, algorithms, servers, parsers, embedded experiments, and other ordinary programs help expose awkward syntax, missing features, weak diagnostics, and APIs that look good on paper but are difficult to use.
- Standard library and domain expertise — Help design, review, and implement APIs. Experience with networking, operating systems, embedded systems, cryptography, text and Unicode, file formats, graphics, databases, mathematics, localization, and other technical domains is especially useful.
- Testing and bug investigation — Write tests for valid and invalid programs, find edge cases, reproduce bugs, reduce failures to small examples, and compare compiler behaviour with the language specification. Check the implementation status for areas that still need coverage.
- Documentation and examples — Improve explanations, examples, tutorials, and reference material. Experts can check technical accuracy, while new users are often best at finding assumptions and explanations that are harder to understand than they should be.
- Website, HTML, CSS, UX, and design — Help improve sec-lang.com, including navigation, responsive design, accessibility, typography, code presentation, information architecture, and the overall experience of learning and exploring Sec.
- Developer tooling — Help with the language server, editor integration, syntax highlighting, formatting, documentation tooling, debugger support, build tools, and other parts of the development experience.
- Platforms and hardware — Review and test Sec on operating systems, architectures, microcontrollers, and bare-metal targets. Experience with Linux, BSD, macOS, ARM, RISC-V, ABIs, system calls, interrupts, and hardware interfaces is useful.
- Design feedback — Try to find inconsistencies, surprising behaviour, unnecessary complexity, and real-world cases the language handles poorly. You do not need to have the solution; clearly identifying a problem is already useful.
How to get started
- Choose an area that interests you. You do not have to start with compiler code.
- Explore the language, read part of the manual, try writing a Sec program, review an API, test the website, or investigate an existing problem.
- If you want to work on code, clone the repository and check the implementation status to see what is implemented and what still needs work.
- Share what you find. A pull request is welcome, but so is a bug report, a reduced test case, a design argument, documentation feedback, or a concrete example of something that could be better.