Skip to content

Abstract out the matching algorithm architecture to allow other types of comparisons #685

@geekygirlsarah

Description

@geekygirlsarah

Description

While comparing programming languages was the original purpose of Code Thesaurus, the goal was to enable other types of searches for things. This could include things like:

  • SQL (compare MySQL SQL vs PostgreSQL SQL vs SQL Server T-SQL, SQLite, etc. but also those compared to NoSQL (like MongoDB, Cosmos DB, etc.))
  • Algorithms (how to implement linked lists, Dijkstra's, breadth- or depth-first traversals but in each programming language)
  • Testing frameworks (how to do asserts in common testing libraries for various languages)
  • REST frameworks (like comparing how to do REST methods or other things in Django, Rails, Symfony, MVC, etc.)
  • Package managers (both language based ones like npm, pip, composer, cargo, etc. as well as system ones like apk, apt, rpm, homebrew, chocolatey, winget, etc.)
  • And more!

Right now the main matching algorithm is hard-coded for languages. It is also heavily tied into the reference and compare page views. This work would need to refactor the algorithms out of the views and into their own class, and also refactor the variables to be more generic for any types of comparisons. The end result would be something that's easy to add a new comparison type to the home page and with new views and thesaurus files, we have an easy way to scale this concept to multiple comparison types.

Requirements

  • First, it may require a discussion here on how to do this before the work happens.
  • Second, it should result in the code refactoring and/or abstraction. (Pull it out in a class/library?)
  • Third, ensure the view code is rewritten using the new method.
  • Finally, check that any unit tests, the language validation command, and the meta file validation command reflects the new abstracted system.

Additional Notes

I haven't thought too much on this yet but will probably start looking into it during October 2023 (Hacktoberfest). I welcome anyone that wants to join in on this!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Experience: BackendType: EnhancementhacktoberfestGood issue for someone to work on for Hacktoberfesthelp wantedWe'd love to have help working on this issuepythonPull requests that update Python code

    Type

    No type

    Projects

    Status

    To do

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions