Thank you for your interest in contributing to NullScript! We welcome contributions from the community and appreciate your help in making NullScript better.
We welcome various types of contributions:
- Bug Reports: Found a bug? Let us know!
- Feature Requests: Have an idea for a new feature?
- Code Contributions: Fix bugs, add features, improve documentation
- Documentation: Improve README, add examples, write guides
- Testing: Test the transpiler with different scenarios
- Examples: Create interesting example programs
- Fork the repository
- Clone your fork:
git clone https://github.com/nullscript-lang/nullscript.git cd nullscript - Install dependencies:
npm install
- Build the project:
npm run build
- Create a feature branch:
git checkout -b feature/your-feature-name
- Make your changes
- Test your changes:
npm run test:examples npm run test:run
- Commit your changes:
git commit -m "feat: add new keyword alias" - Push to your fork:
git push origin feature/your-feature-name
- Create a Pull Request
When reporting bugs, please include:
- Description: What happened?
- Steps to reproduce: How can we reproduce this?
- Expected behavior: What should happen?
- Actual behavior: What actually happened?
- Environment: OS, Node.js version, NullScript version
- Example code: Minimal code that reproduces the issue
When requesting features, please include:
- Description: What feature would you like?
- Use case: Why is this feature needed?
- Proposed implementation: How should it work?
- Examples: Show how it would be used
- Use TypeScript for all new code
- Follow the existing code style
- Add proper type annotations
- Include JSDoc comments for public APIs
- Use meaningful variable and function names
Follow the Conventional Commits format:
type(scope): description
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
- Title: Clear, descriptive title
- Description: Explain what the PR does and why
- Tests: Include tests for new features
- Documentation: Update docs if needed
- Examples: Add examples for new features
# Test example transpilation
npm run test:examples
# Run example programs
npm run test:run
# Build the project
npm run buildWhen adding new features or fixing bugs:
- Create test examples in the
examples/directory - Test transpilation with
npm run test:examples - Test execution with
npm run test:run - Test edge cases and error conditions
- README.md: Main project documentation
- Examples: Clear, well-commented example programs
- Code comments: Explain complex logic
- API documentation: Document public APIs
- Update README.md for new features
- Add examples to the
examples/directory - Include usage examples in code comments
- Update language reference if adding new keywords
- Fun but functional: Playful syntax that actually works
- TypeScript compatibility: 100% compatible with TypeScript
- Educational: Help people understand transpilers
- Production ready: Actually usable in real projects
- Maintain compatibility: Don't break TypeScript compatibility
- Keep it fun: New keywords should be playful but clear
- Document everything: New features need documentation
- Test thoroughly: Ensure everything works correctly
We follow Semantic Versioning:
- Major: Breaking changes
- Minor: New features (backward compatible)
- Patch: Bug fixes (backward compatible)
Before releasing:
- All tests pass
- Documentation is updated
- Examples work correctly
- Version is updated in package.json
- CHANGELOG.md is updated
- Build is successful
- GitHub Issues: For bugs and feature requests
- GitHub Discussions: For questions and general discussion
- Documentation: Check the README and examples first
- Be respectful: Treat everyone with respect
- Be helpful: Help others learn and contribute
- Be patient: Everyone learns at their own pace
- Have fun: Remember, NullScript is about having fun with code!
Contributors will be recognized in:
- README.md: List of contributors
- Release notes: Credit for contributions
- GitHub: Contributor statistics
Thank you for contributing to NullScript! 🎭
Let's make programming fun together! ❤️