How do their APIs compare?
How do their APIs compare?
About klocman/bulk-crap-uninstaller · 2 messages · last activity 9/6/2026
Comparing "APIs" across these two repos requires separating what each project actually is, since they serve very different purposes.
klocman/bulk-crap-uninstaller
This isn't a library — it's a Windows desktop application (GUI + console tool) for bulk-uninstalling software. There isn't a public "API" in the sense of a package other developers consume. What exists instead:
- BCUninstaller (GUI app): entry point in [source/BulkCrapUninstaller/EntryPoint.cs:L1-L24], with supporting internal modules like culture/localization handling in [source/BulkCrapUninstaller/CultureConfigurator.cs:L22-L61] and app metadata gathering in [source/BulkCrapUninstaller/Functions/AppPropertiesGatherer.cs:L1-L23].
- BCU-console: a command-line surface with subcommands like export, parsed via string args (e.g.
/V,/Q,/Uflags) as seen inProcessExportCommand[source/BCU-console/Program.cs:L185-L203], which calls intoApplicationEntrySerializer.SerializeApplicationEntriesand a sharedQueryAppshelper. - Internal libraries like
Klocman.*andUninstallToolsare referenced throughout (e.g. [source/BulkCrapUninstaller/Functions/ApplicationList/ApplicationListConstants.cs:L1-L12]) but function as internal implementation detail, not a published/public API surface.
So its "API" is really a CLI argument surface plus internal C# classes not designed for external consumption.
louthy/language-ext
This is a library API — a functional programming toolkit for .NET, published as a NuGet package. Its API is built around:
- Type classes / traits (
Eq<A>,Hashable<A>, etc.) implemented as static-method structs, e.g.EqDefault<A>[LanguageExt.Core/Class Instances/Eq/EqDefault.cs:L1-L45],EqTask<A>[LanguageExt.Core/Class Instances/Eq/EqTask.cs:L11-L14],EqDateTime[LanguageExt.Core/Class Instances/Eq/EqDateTime.cs:L19-L27],EqEither<L,R>[LanguageExt.Core/Class Instances/Eq/EqEither.cs:L44-L56],EqStck<EQ,A>[LanguageExt.Core/Class Instances/Eq/EqStck.cs:L1-L14], and async variants likeEqualsAsyncinEqDecimal[LanguageExt.Core/Class Instances/Eq/EqDecimal.cs:L32-L35]. - This is a deliberate, structured public API surface: generic, composable equality/hashing abstractions meant to be used by consumers writing functional-style C# (immutable collections,
Either,Taskwrappers, etc.). - Contribution guidelines even describe API documentation conventions (XmlDoc with backtick code blocks) [CONTRIBUTING.md:L1-L36], reflecting that this is a maintained, externally-consumed API.
Key contrasts
| Aspect | bulk-crap-uninstaller | language-ext |
|---|---|---|
| Nature | End-user Windows app + CLI tool | Reusable .NET library |
| "API" consumers | End users / scripts invoking the console exe | Other .NET developers referencing the NuGet package |
| Surface style | String-based CLI flags, internal C# classes | Strongly-typed generic interfaces/type classes |
| Stability expectations | Internal classes can change freely | Public API changes are typically issue-gated (per CONTRIBUTING.md) |
Note on repo health: RepoPilot's computed signals for bulk-crap-uninstaller show an import graph with 0 files parsed and grade C (50/100), and an OpenSSF Scorecard of 3.4/10 with SAST, Security-Policy, and Dependency-Update-Tool all at 0/10 — indicating the automated analysis found the codebase not fully parsed and flags weak supply-chain/security tooling practices. No equivalent RepoPilot signal block was provided for language-ext in this data, so I can't make a like-for-like automated comparison there.
FOLLOW_UPS:
- What does BCU-console's full command list look like?
- How does language-
Want to ask your own question?
Open chat for klocman/bulk-crap-uninstallerPublic Q&A. Generated by RepoPilot from the actual source of klocman/bulk-crap-uninstaller. AI answers can be incomplete or stale — verify before relying on them.