Thank you for your interest in contributing! Whether you're a developer or just a user who wants to help improve the project, there are many ways for you to contribute.
You don't need to be a programmer to help improve this project. Reporting bugs, suggesting features, and providing feedback are invaluable contributions.
When reporting a bug, please include:
- Clear title: Briefly describe the problem
- Steps to reproduce: Exact steps that cause the issue
- Expected behavior: What you thought should happen
- Actual behavior: What actually happened
- Environment details:
- Operating system (Windows, macOS, Linux)
- Python version (
python --version) - Package version (
llm-conversation --version) - Ollama version if relevant
- Configuration: Include your conversation config file if relevant (remove any sensitive information)
- Error messages: Copy the full error message if any
- Screenshots: If relevant, especially for UI issues
When suggesting a feature:
- Describe the feature: What should it do?
- Use case: Why would this be useful?
- Examples: How would you use it?
- Alternatives: Have you considered other solutions?
- Check existing issues first to avoid duplicates
- Use clear, descriptive titles
- Be patient - this is a hobby project maintained in free time
- Be respectful and constructive in your communication
- Python 3.13+
- uv for dependency management
- Ollama installed and running for testing
-
Clone the repository:
git clone https://github.com/famiu/llm_conversation.git cd llm_conversation -
Install development dependencies:
uv sync
- Install dependencies:
uv sync - Format code:
uv run ruff format(use--checkto only check for changes) - Lint code:
uv run ruff check(use--fixto auto-fix) - Type check:
uv run ty check - Run all checks:
uv run ruff format --check && uv run ruff check && uv run ty check
- Python 3.13+ only
- Line length: 120 characters maximum
- Indentation: 4 spaces (no tabs)
- Formatting: Use Ruff formatter with Google docstring convention
- Import order: Standard library, third-party, local imports (prefer
fromimports for clarity)
- Always use type hints, prefer explicit types over
Any - Use modern Python 3.9+ built-in types (
list,dict,set,tuple) instead oftypingmodule equivalents (List,Dict,Set,Tuple)
- Functions and variables: snake_case
- Classes: PascalCase
- Constants: UPPER_CASE
- Use Google-style docstrings for functions and classes
- Avoid inline comments unless critical for understanding
- Write clear, concise docstrings that explain the "why" not just the "what"
- Always update documentation when adding new features, changing behavior, or modifying APIs
- Use specific exception types rather than generic
Exception - Fail fast, prefer early returns over deeply nested conditionals
The application includes developer logging that can be enabled via environment variables:
LLM_CONVERSATION_LOG_LEVEL: Set toDEBUG,INFO,WARNINGorERRORto enable logging (disabled by default)LLM_CONVERSATION_LOG_FILE: Optional file path for log output (defaults to stderr only)
# Enable debug logging to stderr
LLM_CONVERSATION_LOG_LEVEL=DEBUG llm-conversation
# Enable info logging to a file
LLM_CONVERSATION_LOG_LEVEL=INFO LLM_CONVERSATION_LOG_FILE=debug.log llm-conversation