Skip to content

Prepare for OSS #5

Description

@NachoVazquez

The Problem

We are getting close to having a stable version of the LSP Client for nxls. That means that we need to tighten up our repo so others can contribute.

Acceptance Criteria

  • Repository has clear documentation following Go standards
  • Code follows Go best practices and guidelines
  • Contributing process is well-defined
  • Package usage and API documentation is clear
  • Issue and PR templates are in place
  • License is properly set up
  • Package is properly published to pkg.go.dev

Tasks

  1. Documentation

    • Create comprehensive README.md
      • Include pkg.go.dev badge
      • Add Go Report Card badge
      • Add Build Status badge
      • Document package API usage
      • Show code examples
    • Add CONTRIBUTING.md guide
      • Development workflow
      • Code style guidelines
      • PR submission process
    • Include CODE_OF_CONDUCT.md
    • Write SECURITY.md for vulnerability reporting
    • Ensure GoDoc comments follow standards
    • Document package architecture and design decisions
  2. Code Standards

    • Set up golangci-lint
    • Configure gofmt requirements
    • Add .golangci.yml configuration
    • Document Go version requirements
    • Set up go mod tidy check
    • Implement go vet checks
    • Ensure exported APIs are properly documented
    • Add package examples (in example_test.go files)
  3. GitHub Templates

    • Create issue templates
      • Bug report template
      • Feature request template
      • Documentation improvement template
    • Create pull request template
    • Add CODEOWNERS file
  4. Package Setup

    • Verify go.mod and go.sum are up to date
    • Document import path and usage
    • Include godoc examples
    • Document any external dependencies
    • Ensure package API is stable and well-thought-out
  5. Testing

    • Set up GitHub Actions for Go testing
    • Add test coverage reporting (codecov/coveralls)
    • Include benchmarks where relevant
    • Document testing procedures
    • Add examples in _test.go files
    • Add integration tests if applicable
  6. Legal

    • Add LICENSE file
    • Review and update module license
    • Add copyright headers to source files
  7. Release Automation

    • Set up semantic versioning
    • Configure automatic changelog generation
      • Install and configure git-chglog
      • Define changelog sections and templates
    • Create release workflow with GitHub Actions
      • Verify all tests pass
      • Run linting checks
      • Create git tag
      • Generate changelog
      • Create GitHub release
      • Ensure go.mod is properly versioned
    • Document release process
      • Version bumping procedure
      • Release checklist
      • Emergency hotfix process
  8. Repository Settings

    • Configure branch protection rules
    • Set up required status checks
      • Tests passing
      • Lint checks passing
      • Coverage thresholds
    • Configure repository visibility
    • Configure issue labels
    • Ensure proper module path verification
    • Set up go proxy settings if needed

Additional Resources

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions