🤝 Contributing to Flowey

Help make the Underground a better place!

"Despite everything, it's still you."

🌟 Ways to Contribute

🐛 Bug Reports

Found a bug? Help us squash it!

  • Check if the issue already exists in GitHub Issues
  • Provide detailed steps to reproduce
  • Include your system information (OS, Perl version, etc.)
  • Add screenshots or error messages if applicable

Bug Report Template:

**Bug Description:**
Brief description of the issue

**Steps to Reproduce:**
1. Run command: `flowey -c sans "test"`
2. Expected behavior
3. Actual behavior

**Environment:**
- OS: Ubuntu 22.04
- Perl Version: 5.34.0
- Flowey Version: 1.0.0

**Additional Context:**
Any other relevant information

💡 Feature Requests

Have an idea for a new feature? We'd love to hear it!

  • Describe the feature and why it would be useful
  • Provide examples of how it would work
  • Consider backward compatibility
  • Be open to discussion and feedback

🎨 Character Contributions

Add new characters to the Flowey universe!

  • Create ASCII art using the chafa tool
  • Follow the .flowey file format
  • Include appropriate metadata
  • Test thoroughly before submitting

Character File Format:

Meta:
author = your_username

Context:

Data:
[ASCII art content with ANSI color codes]

📝 Documentation

Help improve our documentation!

  • Fix typos and grammatical errors
  • Add missing information
  • Improve examples and tutorials
  • Translate documentation

🔧 Code Contributions

Ready to dive into the code? Here's how:

Development Setup:

# Fork and clone the repository
git clone https://github.com/YOUR_USERNAME/flowey.git
cd flowey

# Create a new branch for your feature
git checkout -b feature/awesome-feature

# Install dependencies
cpan install Getopt::Long::Descriptive

# Make your changes and test them
./flowey.pl "Test your changes"

# Commit and push
git add .
git commit -m "Add awesome feature"
git push origin feature/awesome-feature

📋 Contribution Guidelines

Code Style

  • Follow Perl best practices
  • Use meaningful variable names
  • Add comments for complex logic
  • Maintain backward compatibility when possible
  • Test your changes thoroughly

Perl Style Guidelines:

# Use strict and warnings
use strict;
use warnings;

# Meaningful variable names
my $character_file = $opt->character . ".flowey";
my $assets_directory = $opt->assets;

# Proper indentation (4 spaces)
if ($condition) {
    do_something();
}

# Add comments for complex logic
# Parse the flowey file format
# Format: Meta:, Context:, Data:
sub parse_flowey_file {
    # Implementation here
}

Pull Request Process

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Test thoroughly
  5. Update documentation if needed
  6. Submit a pull request

Pull Request Template:

## Description
Brief description of changes

## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Documentation update
- [ ] Character addition

## Testing
- [ ] Tested on Linux
- [ ] Tested on macOS
- [ ] Added new tests
- [ ] All existing tests pass

## Checklist
- [ ] Code follows style guidelines
- [ ] Self-review completed
- [ ] Documentation updated
- [ ] No breaking changes

👥 Community

Code of Conduct

We follow the principle of determination - be kind, helpful, and respectful to all contributors.

  • Be respectful and inclusive
  • Welcome newcomers and help them learn
  • Focus on constructive feedback
  • Respect different viewpoints and experiences

🌟 Contributors

Thanks to all the amazing people who have contributed to Flowey!

  • lazypwny751 - Project creator and maintainer
  • Your name could be here!

🚀 Development Roadmap

Planned Features

  • 🎨 Better ASCII art rendering
  • 🔧 Plugin system for custom character formats
  • 🌐 Web interface for character generation
  • 📱 Mobile-friendly character viewer
  • 🎵 Sound effects integration
  • 🏗️ Build system improvements

Help Wanted

Looking for contributors in these areas:

  • Character Artists - Create new Undertale characters
  • Perl Developers - Improve core functionality
  • Package Maintainers - Help with distribution packages
  • Documentation Writers - Improve guides and examples
  • Testers - Test on different platforms and report issues

📞 Getting Help

Resources

🎉 Thank You!

Every contribution, no matter how small, helps make Flowey better for everyone.

"You feel like you're going to have a good time contributing."

Ready to contribute?

Start by forking the repository and making your first contribution!