Thank you for your interest in contributing to LSW (Linux Subsystem for Windows)!
"If it's free, it's free. Period."
LSW is licensed under the Barrer Free Software License (BFSL) v1.2, which means:
- ✅ Free forever, cannot be sold
- ✅ Open source, community-driven
- ✅ Welcoming to all contributors
- ✅ No gatekeeping, just help
Areas that need help:
- PE format parsing
- Windows API implementation
- Registry emulation
- Filesystem translation
- Testing and bug fixes
- Documentation
Process:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Write tests if applicable
- Commit with clear messages (
git commit -m 'Add amazing feature') - Push to your fork (
git push origin feature/amazing-feature) - Open a Pull Request
Help us make LSW accessible:
- Improve installation guides
- Add usage examples
- Write tutorials
- Fix typos or unclear explanations
- Translate documentation
- Test LSW with different Windows applications
- Report bugs with detailed reproduction steps
- Test on different Linux distributions
- Performance testing and benchmarking
- Improve error messages (make them friendly!)
- Design better help output
- Create diagrams for documentation
- Improve project website
Keep it simple and readable:
// Good: Clear, commented, obvious
int lsw_load_dll(const char* dll_path) {
// What: Load a Windows DLL
// Why: Application needs this library
// How: Parse PE format, map to memory
if (!dll_path) {
return LSW_ERROR_INVALID_PARAMETER;
}
// ... implementation
}
// Bad: Cryptic, uncommented
int ldd(char* p) {
if(!p)return-1;
// ... what does this do?
}Our conventions:
- Use
lsw_prefix for all public functions - Comment with What/Why/How for complex logic
- Keep functions focused (one job per function)
- Use descriptive variable names
- Add examples in header files
Good bug report includes:
- LSW version
- Linux distribution and version
- Windows application you're trying to run
- Full error message or output
- Steps to reproduce
Use this template:
**LSW Version:** 0.1.0
**OS:** Ubuntu 22.04 LTS
**Application:** notepad.exe (Windows 11)
**What happened:**
Tried to run notepad.exe but got error...
**Expected:**
Notepad should open
**Steps to reproduce:**
1. lsw --launch notepad.exe
2. See error message
3. ...
**Output:**
We love ideas! Open an issue with:
- Clear description of the feature
- Why it would be useful
- Example use cases
- Any implementation thoughts (optional)
- General questions: Open a GitHub Discussion
- Bug reports: Open an Issue
- Security issues: Email security@barrersoftware.com
- License questions: Email legal@barrersoftware.com
Keep these in mind when contributing:
- Native performance - No emulation overhead
- Universal compatibility - Works on any Linux distro
- User-friendly - Easy to use, great error messages
- Well-documented - Clear explanations for everything
- Free forever - Protected by BSL from commercialization
Be excellent to each other:
- ✅ Welcoming and friendly
- ✅ Respectful of different viewpoints
- ✅ Constructive criticism
- ✅ Help newcomers learn
- ❌ No harassment or hostility
- ❌ No gatekeeping or elitism
We're building something for everyone. Act like it.
By contributing to LSW, you agree that your contributions will be licensed under the BarrerSoftware License (BSL) v1.0.
This means:
- Your code will be free forever
- It cannot be sold by anyone
- It helps everyone access Windows software on Linux
- Community over commerce
Contributors are listed in:
- CONTRIBUTORS.md file
- Release notes
- Project website
Thank you for helping make Windows apps accessible to Linux users! 🐧🪟
🏴☠️ BarrerSoftware - Building bridges, not walls
Questions? Open an issue or start a discussion.
We are MORE legally pure than Wine.
Wine allows users to download Microsoft DLLs (via winetricks). This is a gray area. LSW implements EVERYTHING ourselves. This is crystal clear legally.
- Include Microsoft DLLs in any commit
- Download Microsoft binaries in code
- Redistribute Microsoft CAB files
- Copy Microsoft source code
- Use decompiled Microsoft code
- Include Microsoft fonts/icons/resources
- Package Microsoft redistributables
- Ship Wine DLLs containing MS code
- Implement from public documentation
- Write original code only
- Add source attribution in comments
- Reference learn.microsoft.com
- Document clean-room methodology
- Check against LEGAL.md
- Update SOURCES.md for new APIs
/**
* lsw_CreateFileA - Create or open a file
*
* Reference: Microsoft Learn Documentation
* https://learn.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfilea
*
* Implementation: BarrerSoftware clean-room implementation
* Behavior: Matches documented Win32 API CreateFileA behavior
*
* NO Microsoft source code used
* NO Microsoft binaries required
*/Wrong Way (Wine's approach):
- Use winetricks to download Microsoft's DLL
⚠️
Right Way (LSW's approach):
- Implement the DLL functions ourselves ✅
- Add to our win32_api.c ✅
- Document in SOURCES.md ✅
- Test against learn.microsoft.com spec ✅
- No Microsoft binaries included
- No proprietary code copied
- All new APIs documented in SOURCES.md
- Source attribution in code comments
- Clean-room implementation verified
- No decompilation or reverse engineering
- References public documentation only
Violation of these rules = PERMANENT CONTRIBUTOR BAN
We are building something LEGENDARY and LEGAL. Don't fuck it up.
🏴☠️ BarrerSoftware: 100% pure, 100% legal, 100% ours.