NASA-AMMOS / slim

Software Lifecycle Improvement & Modernization

Home Page:https://nasa-ammos.github.io/slim/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[New Process Improvement Need]: Software Repository Hygiene

riverma opened this issue · comments

Checked for duplicates

Yes - I've already checked

Category

Governance

Describe the need

Once a software project gets rolling, there are aspects important to maintaining the software repository that can aid the health and maintenance of the project. What we need is a clear set of guidelines / checklists for project maintainers to be cognizant of at a recurring interval - to ensure the software repository is following best practices.

Some ideas on hygiene topics:

  • If the project hasn't been updated in a year or more, it should consider being archived and / or deprecated.
  • Responding to pull requests in a timely fashion. Contributors are much less likely to consider helping your project if their pull requests stay ignored for months.
  • Responding to issue ticket conversations / triaging tickets in a timely fashion, including ensuring issue tickets are properly labeled and have assigned projects / milestones / etc. Same reason as above.
  • Responding to discussions in a timely fashion. Same reason as above.
  • Ensuring issue tickets are properly labeled and have assigned projects / milestones / etc.
  • Cleaning out old / merged branches. A giant list of branches can be very confusing to contributors.
  • Ensuring documentation / README has been updated as the software evolves.

Some ideas to help:

  • A checklist a developer can run through to ensure compliance with recommendations
  • A GitHub Action(s) that automatically gets triggered to check for hygiene topics like: stale PRs, tickets, discussion topics, etc. Or an action that gets called on a schedule to ask the lead developer to run through the checklist (say every six months?)

CC @NASA-AMMOS/slim-tsc @NASA-AMMOS/slim-psc thoughts?

Here are some additional suggestions on software repository hygiene (I believe that several of those were already addressed in the other issue tickets.):

Continuous Integration and Testing:

  • Integrate automated testing and continuous integration (CI) into the repository to catch issues early. Ensure that CI pipelines are maintained and functional.

Versioning and Release Management:

  • Follow a clear versioning strategy (e.g., Semantic Versioning) to indicate the significance of software changes.
  • Maintain a release history or changelog to document notable changes in each version.

Contributor Guidelines:

  • Provide clear contributor guidelines in the repository to help newcomers understand how to contribute effectively.
  • Offer guidance on coding standards, code review processes, and issue/PR templates.

Security Vulnerabilities:

  • Regularly check for and address security vulnerabilities in project dependencies. Use tools like Dependabot to automate dependency updates.

Analytics and Performance:

  • Monitor software performance and usage. Use analytics to identify areas for improvement.
  • Optimize code and resources for better performance.

Regular Audits:
- Periodically conduct repository audits to assess compliance with best practices and hygiene standards.
- Use automated tools or scripts to perform these audits.

Thanks for these suggestions @yunks128 - looks great! There's certainly a lot of overlap with some other SLIM tickets, so you're right, we'll want to limit the scope of this ticket in a way. Thanks!

@riverma I have been looking around the SLIM repository and guides for a set of recommended issue labels and how to apply them. This issue in particular seems to be the most on topic - "triaging tickets in a timely fashion" implies "how to triage tickets". Can I request the labelling concept be added to this issue, or should I make a separate on? It is definitely more straightforward on it's own.

@rpuncel This is a great observation and comment. The original description of the ticket covers both labeling and triaging, e.g. Ensuring issue tickets are properly labeled and have assigned projects / milestones / etc. Labeling seems appropriate here and in context. Please proceed, and if it is decided later to be out of context or a large topic we can always break it out then. Thank you.

@riverma is out through the first week in December but may check in occasionally.

@rpuncel @jpl-jengelke - I like that. It adds more specificity to what's needed for triaging tickets. I've updated the ticket description above to include your comment, thank you!