Skip to content

Conversation

Copilot
Copy link
Contributor

@Copilot Copilot AI commented Oct 2, 2025

This PR adds a comprehensive criteria document (OBSOLETE_PROJECT_CRITERIA.md) and a detailed analysis document (LIKELY_OBSOLETE_PROJECTS.md) to help evaluate which projects in the FieldWorks repository may be obsolete and candidates for removal or archival.

Overview

The FieldWorks repository contains 125+ projects, some of which may no longer be actively maintained or necessary. This PR provides a structured framework for identifying obsolete projects to help reduce maintenance burden and technical debt.

What's Included

Criteria Document (OBSOLETE_PROJECT_CRITERIA.md)

The criteria document defines:

Primary Criteria (4)

  • Not Referenced by Active Code - No project references, assembly references, or build system inclusion
  • Platform or Technology Obsolescence - Deprecated platforms or legacy migration tools
  • Functionality Replaced or Superseded - Duplicate or removed features
  • Marked as Experimental or Incomplete - Prototypes never reaching production

Secondary Criteria (2)

  • Limited or empty codebase
  • Documentation indicators (deprecated, "Old" paths)

Supporting Content

  • Special Considerations - Types of projects requiring careful evaluation (utilities, interfaces, build tools)
  • Evaluation Process - 5-point checklist for documenting each project assessment
  • Examples - Initial categorization of FieldWorks projects
  • Decision Matrix - Clear thresholds for action based on criteria met
  • Documentation Requirements - Process to follow before removing projects

Analysis Document (LIKELY_OBSOLETE_PROJECTS.md)

A comprehensive analysis identifying:

5 Strong Candidates for Removal:

  • FxtExe - Experimental project excluded from builds
  • ProjectUnpacker - Test utility excluded from builds
  • MSSQLMigration/OldMigrationScripts - Historical migration scripts for old database versions
  • Bin/nmock - Old mocking framework (NMock v1) with single reference
  • Bin/nunitforms - Old WinForms testing framework with single reference

10 Projects Recommended for Investigation:

  • SfmStats, GenerateHCConfig, LCMBrowser, ObjectBrowser, InstallValidator
  • Converter projects, CacheLight, Design, FormLanguageSwitch, MigrateSqlDbs

Each entry includes:

  • Criteria met from the criteria document
  • Current references and dependencies
  • Original purpose and current status
  • Risk assessment
  • Specific recommendations

Key Changes from Review Feedback

The criteria have been refined to:

  • Remove time-based criteria (recognizing stable, long-lived code)
  • Clarify that project references include assembly references
  • Remove framework obsolescence criteria (acknowledging legacy framework usage)
  • Remove build and dependency issue criteria (not relevant for decision-making)

Next Steps

This PR provides the foundation for:

  1. Conducting a systematic review of identified projects
  2. Creating issues to track removal decisions
  3. Safely archiving or removing obsolete code
  4. Reducing build times and maintenance overhead

The criteria can be further refined based on team feedback and used to guide project cleanup efforts.

Original prompt

I want you to genrate a list of criteria that you would use to determine if a project in our source tree is obsolete. Give me an opportunity to review that criteria before we move on.


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.


This change is Reviewable

@Copilot Copilot AI changed the title [WIP] I want you to genrate a list of criteria that you would use to determine if a project in our source tree is obsolete. Give me an opportunity to review that criteria before we move on. Add criteria for identifying obsolete projects in FieldWorks source tree Oct 2, 2025
@Copilot Copilot AI requested a review from jasonleenaylor October 2, 2025 18:39
Copilot finished work on behalf of jasonleenaylor October 2, 2025 18:39
@jasonleenaylor
Copy link
Contributor

OBSOLETE_PROJECT_CRITERIA.md line 8 at r1 (raw file):

### 1. **No Active Development or Maintenance**
- **No substantive commits** in the last 3-5 years (excluding mass refactorings like csproj migrations)

Remove all the criteria under 1. this project has a long history and a large amount of stable code which should not be considered obsolete.

@jasonleenaylor
Copy link
Contributor

OBSOLETE_PROJECT_CRITERIA.md line 14 at r1 (raw file):

### 2. **Not Referenced by Active Code**
- **No project references**: No other active projects reference this project in their `.csproj` files

No project references should include a check to see if an assembly generated by a project is referenced by another .csproj

@jasonleenaylor
Copy link
Contributor

OBSOLETE_PROJECT_CRITERIA.md line 21 at r1 (raw file):

### 3. **Platform or Technology Obsolescence**
- **Targets deprecated platforms**: Built for technologies no longer supported (e.g., SQL Server migration for versions no longer in use)
- **Uses obsolete frameworks**: Depends on libraries or frameworks that have been replaced or deprecated

Remove the Uses obsolete frameworks criteria - due to the legacy nature of this app we may still be actively using older frameworks

@jasonleenaylor
Copy link
Contributor

OBSOLETE_PROJECT_CRITERIA.md line 51 at r1 (raw file):

- **"Old" in path name**: Located in directories like "OldMigrationScripts" or similar

### 8. **Build and Dependency Issues**

Remove criteria under 8 and 9 heading as they should add nothing to the decision making.

Copy link
Contributor

@jasonleenaylor jasonleenaylor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@copilot Please respond to the review comments. And then build a list of likely obsolete projects with the reasons they are included.

@jasonleenaylor reviewed 1 of 1 files at r1, all commit messages.
Reviewable status: :shipit: complete! all files reviewed, all discussions resolved (waiting on @copilot)

Copy link
Contributor Author

Copilot AI commented Oct 2, 2025

...

Removed all criteria under sections 8 (Build and Dependency Issues) and 9 (Resource Overhead). The secondary criteria now only include sections 5 (Limited or Empty Codebase) and 6 (Documentation Indicators). Updated the decision matrix thresholds accordingly. Changes in commit 2b83de0.

...

Removed all criteria under section 1 (No Active Development or Maintenance). The criteria now start with "Not Referenced by Active Code" as the first primary criterion. Changes in commit 2b83de0.

@Copilot Copilot AI changed the title Add criteria for identifying obsolete projects in FieldWorks source tree Add criteria and comprehensive list for identifying obsolete projects in FieldWorks source tree Oct 2, 2025
@Copilot Copilot AI requested a review from jasonleenaylor October 2, 2025 19:18
Copilot finished work on behalf of jasonleenaylor October 2, 2025 19:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants