Skip to content

Drop proper noun status for middleware - #37348

Merged
guardrex merged 6 commits into
mainfrom
guardrex/middleware-name-changes
Jul 22, 2026
Merged

Drop proper noun status for middleware#37348
guardrex merged 6 commits into
mainfrom
guardrex/middleware-name-changes

Conversation

@guardrex

@guardrex guardrex commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

Fixes #37345

Pinging you, Dan, just to sign off on the order for this set of changes. Pinging Wade and Tom for review, but we only need one to get it in.

I think this gets them all 😅. There were something to the tune of 800+ of these to change, and they had to be checked individually to deal with table entries and first words of sentences. I also updated a few other NITs along the way. Copilot flagged two misspellings, which I updated ... coookie 👉 cookie and outing 👉 routing."

I'm concerned about confusing readers with this change, especially for the multiple-word middleware names, where it's probably challenging to distinguish adjectives from words that are part of a middleware's name. I also don't think this is standard written English because these are specific, named pieces of the framework (i.e., they aren't general nouns in the context of referring to any of them explicitly). Those are the reasons that they were made proper nouns at the outset, and it was discussed and approved by the FTEs in charge at the time.

To proceed with the PR, get the eye drops out for review! 👁️💧😬😆 [... but I kind'a expect that only a scan of this will do.]

Editorial note Wade and Tom: For a couple of -ing ending words, I hyphenated them because I think they're being treating as adjectives from now on with these changes. It would be even more confusing (and grammatically incorrect I think) to not hyphenate ordinary adjectives in naming if they're confusing. For example, consider "host filtering middleware," excluding the context of the sentence. Is it "filtering middleware" on a host, or is it middleware that filters hosts? It has to be "host-filtering middleware" to make it clear that it's the latter. Even if the context of the sentence resolves the meaning of "host filtering middleware," there's a good chance that it will slow the reader down. Others didn't require a hyphen (e.g., exception handling middleware, error handling middleware, URL rewriting middleware). However, let's discuss this further if there are concerns. I can compile a list of all -ing-ending adjectives in middleware names for discussion here. Let me know what you think. 👂


Internal previews

Toggle expand/collapse
📄 File 🔗 Preview link
aspnetcore/blazor/fundamentals/static-files.md aspnetcore/blazor/fundamentals/static-files
aspnetcore/blazor/globalization-localization.md aspnetcore/blazor/globalization-localization
aspnetcore/blazor/security/webassembly/hosted-with-identity-server.md aspnetcore/blazor/security/webassembly/hosted-with-identity-server
aspnetcore/blazor/tutorials/movie-database-app/part-1.md aspnetcore/blazor/tutorials/movie-database-app/part-1
aspnetcore/blazor/tutorials/signalr-blazor.md aspnetcore/blazor/tutorials/signalr-blazor
aspnetcore/breaking-changes/5/middleware-exception-handler-throws-original-exception.md aspnetcore/breaking-changes/5/middleware-exception-handler-throws-original-exception
aspnetcore/breaking-changes/6/middleware-ambiguous-https-ports-exception.md aspnetcore/breaking-changes/6/middleware-ambiguous-https-ports-exception
aspnetcore/client-side/spa-services.md aspnetcore/client-side/spa-services
aspnetcore/fundamentals/middleware/index.md aspnetcore/fundamentals/middleware/index
aspnetcore/fundamentals/servers/kestrel/security-considerations.md aspnetcore/fundamentals/servers/kestrel/security-considerations
aspnetcore/fundamentals/servers/yarp/middleware.md aspnetcore/fundamentals/servers/yarp/middleware
aspnetcore/fundamentals/static-files.md aspnetcore/fundamentals/static-files
aspnetcore/fundamentals/url-rewriting.md aspnetcore/fundamentals/url-rewriting
aspnetcore/host-and-deploy/health-checks.md aspnetcore/host-and-deploy/health-checks
aspnetcore/host-and-deploy/iis/development-time-iis-support.md aspnetcore/host-and-deploy/iis/development-time-iis-support
aspnetcore/host-and-deploy/iis/index.md aspnetcore/host-and-deploy/iis/index
aspnetcore/host-and-deploy/iis/modules.md aspnetcore/host-and-deploy/iis/modules
aspnetcore/host-and-deploy/linux-nginx.md aspnetcore/host-and-deploy/linux-nginx
aspnetcore/host-and-deploy/proxy-load-balancer.md aspnetcore/host-and-deploy/proxy-load-balancer
aspnetcore/migration/22-to-30.md aspnetcore/migration/22-to-30
aspnetcore/performance/caching/middleware.md aspnetcore/performance/caching/middleware
aspnetcore/performance/caching/response.md aspnetcore/performance/caching/response
aspnetcore/performance/response-compression.md aspnetcore/performance/response-compression
aspnetcore/security/anti-request-forgery.md aspnetcore/security/anti-request-forgery
aspnetcore/security/authentication/certauth.md aspnetcore/security/authentication/certauth
aspnetcore/security/authentication/cookie.md aspnetcore/security/authentication/cookie
aspnetcore/security/authentication/windowsauth.md aspnetcore/security/authentication/windowsauth
aspnetcore/security/cookie-sharing.md aspnetcore/security/cookie-sharing
aspnetcore/security/cors.md aspnetcore/security/cors
aspnetcore/security/enforcing-ssl.md aspnetcore/security/enforcing-ssl

Note

This table shows preview links for the 30 files with the most changes. For preview links for other files in this PR, select OpenPublishing.Build Details within checks.

@guardrex guardrex self-assigned this Jul 17, 2026
@guardrex
guardrex marked this pull request as ready for review July 21, 2026 16:02
@guardrex
guardrex requested a review from tdykstra as a code owner July 21, 2026 16:02
@guardrex
guardrex requested a review from Copilot July 21, 2026 16:02

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Standardizes ASP.NET Core docs by dropping proper-noun capitalization for middleware names (for example, “Static File Middleware” → “static file middleware”), including related headings, image alt text, and cross-references across the doc set.

Changes:

  • Lowercased “{Something} Middleware” references across articles, includes, and sample READMEs.
  • Updated related headings/link text (for example, HSTS section wording/anchors) to match the new casing.
  • Normalized some section headings to sentence case / imperative phrasing.

Reviewed changes

Copilot reviewed 167 out of 168 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
aspnetcore/tutorials/web-api-help-pages-using-swagger/samples/3.x/TodoApi.Swashbuckle/readme.md Lowercases “Static File Middleware” reference.
aspnetcore/tutorials/razor-pages/razor-pages-start/includes/razor-pages-start9.md Updates HSTS link text/xref anchor wording.
aspnetcore/tutorials/razor-pages/razor-pages-start/includes/razor-pages-start8.md Updates HSTS link text/xref anchor wording.
aspnetcore/tutorials/razor-pages/razor-pages-start/includes/razor-pages-start7.md Updates HSTS link text/xref anchor wording.
aspnetcore/tutorials/razor-pages/razor-pages-start/includes/razor-pages-start6.md Updates HSTS link text/xref anchor wording.
aspnetcore/tutorials/razor-pages/razor-pages-start.md Updates HSTS link text/xref anchor wording.
aspnetcore/tutorials/razor-pages/new-field/includes/new-field9.md Updates heading casing/phrasing.
aspnetcore/tutorials/razor-pages/new-field/includes/new-field8.md Updates heading casing/phrasing.
aspnetcore/tutorials/razor-pages/new-field/includes/new-field7.md Updates heading casing/phrasing.
aspnetcore/tutorials/razor-pages/new-field/includes/new-field6.md Updates heading casing/phrasing.
aspnetcore/tutorials/razor-pages/new-field/includes/new-field5.md Updates heading casing/phrasing.
aspnetcore/tutorials/razor-pages/new-field/includes/new-field3.md Updates heading casing/phrasing.
aspnetcore/tutorials/getting-started-with-swashbuckle/includes/getting-started-with-swashbuckle8.md Lowercases “Static File Middleware” references and related headings.
aspnetcore/test/integration-tests/includes/integration-tests9.md Lowercases “HTTPS Redirection Middleware” reference.
aspnetcore/test/integration-tests/includes/integration-tests8.md Lowercases “HTTPS Redirection Middleware” reference.
aspnetcore/test/integration-tests/includes/integration-tests7.md Lowercases “HTTPS Redirection Middleware” reference.
aspnetcore/test/integration-tests.md Lowercases “HTTPS Redirection Middleware” reference.
aspnetcore/security/enforcing-ssl/includes/enforcing-ssl8.md Lowercases middleware references; updates HSTS section link/anchor wording.
aspnetcore/security/enforcing-ssl/includes/enforcing-ssl7.md Lowercases middleware references; updates HSTS section link/anchor wording.
aspnetcore/security/enforcing-ssl.md Lowercases middleware references; updates HSTS section heading wording.
aspnetcore/security/cors/includes/cors7.md Lowercases “CORS Middleware” and related middleware references.
aspnetcore/security/cors.md Lowercases “CORS Middleware” and related middleware references.
aspnetcore/security/authorization/policies/includes/policies5.md Lowercases “Authorization Middleware” reference.
aspnetcore/security/authorization/policies.md Lowercases “Authorization Middleware” reference.
aspnetcore/security/authorization/iauthorizationpolicyprovider.md Lowercases “Authorization Middleware” reference.
aspnetcore/security/authentication/windowsauth.md Lowercases multiple middleware references (IIS integration, status code pages, authentication).
aspnetcore/security/authentication/social/social-without-identity.md Lowercases “Authorization Middleware” phrasing in auth pipeline text.
aspnetcore/security/authentication/social/includes/forwarded-headers-middleware.md Lowercases “Forwarded Headers Middleware” reference.
aspnetcore/security/authentication/social/additional-claims.md Lowercases middleware naming; contains typos that need fixing (see comments).
aspnetcore/security/authentication/passkeys/index.md Updates HSTS link text/xref anchor wording.
aspnetcore/security/authentication/certauth.md Lowercases certificate forwarding middleware references.
aspnetcore/release-notes/aspnetcore-9/includes/keyedDI.md Fixes heading spacing/casing.
aspnetcore/release-notes/aspnetcore-8.0.md Lowercases exception handling middleware reference.
aspnetcore/release-notes/aspnetcore-6.0.md Lowercases developer exception page middleware reference.
aspnetcore/release-notes/aspnetcore-5.0.md Lowercases authorization middleware reference.
aspnetcore/release-notes/aspnetcore-3.0.md Lowercases connection/forwarded headers middleware references.
aspnetcore/release-notes/aspnetcore-2.2.md Lowercases CORS/response compression middleware references.
aspnetcore/release-notes/aspnetcore-2.1.md Updates HSTS link text/xref anchor wording.
aspnetcore/release-notes/aspnetcore-11/includes/blazor.md Lowercases CSRF protection middleware reference.
aspnetcore/release-notes/aspnetcore-10/includes/blazor.md Lowercases status code pages re-execution middleware references.
aspnetcore/release-notes/aspnetcore-1.1.md Lowercases URL rewriting/response caching middleware references.
aspnetcore/performance/response-compression/samples/3.x/SampleApp/README.md Lowercases response compression middleware reference.
aspnetcore/performance/response-compression/samples/2.x/SampleApp/README.md Lowercases response compression middleware reference.
aspnetcore/performance/rate-limit.md Updates section heading casing.
aspnetcore/performance/memory.md Lowercases response caching middleware reference.
aspnetcore/performance/caching/output.md Lowercases “ASP.NET Core Middleware” link text.
aspnetcore/performance/caching/middleware/samples/3.x/ResponseCachingMiddleware/README.md Lowercases response caching middleware reference.
aspnetcore/performance/caching/middleware/samples/2.x/ResponseCachingMiddleware/README.md Lowercases response caching middleware reference.
aspnetcore/mvc/controllers/routing.md Lowercases routing middleware mention in description metadata.
aspnetcore/mvc/controllers/filters/includes/filters7.md Lowercases middleware terms in alt text; contains a typo that needs fixing (see comments).
aspnetcore/mvc/controllers/filters.md Lowercases middleware terms in image alt text.
aspnetcore/migration/fx-to-core/areas/http-modules.md Lowercases middleware terms in image alt text.
aspnetcore/migration/fx-to-core/areas/http-handlers.md Lowercases middleware terms in image alt text.
aspnetcore/migration/fx-to-core/areas/authentication.md Lowercases middleware terms; contains a typo that needs fixing (see comments).
aspnetcore/migration/70-to-80.md Lowercases middleware references in migration instructions.
aspnetcore/migration/50-to-60-samples.md Lowercases static file middleware references.
aspnetcore/migration/22-to-30.md Lowercases connection/CORS/authorization/endpoints middleware references.
aspnetcore/migration/20-to-21.md Updates HSTS link text/xref anchor wording.
aspnetcore/migration/1x-to-2x/identity-2x.md Updates heading casing for “Authentication middleware and services”.
aspnetcore/includes/scaffold-identity/hsts.md Updates HSTS link text/xref anchor wording.
aspnetcore/host-and-deploy/linux-nginx.md Lowercases forwarded headers/HTTPS redirection middleware references; updates HSTS xref anchor.
aspnetcore/host-and-deploy/index.md Lowercases health checks middleware reference.
aspnetcore/host-and-deploy/iis/out-of-process-hosting.md Lowercases IIS integration/forwarded headers middleware references in table/text.
aspnetcore/host-and-deploy/iis/modules.md Lowercases middleware references; contains a typo that needs fixing (see comments).
aspnetcore/host-and-deploy/iis/development-time-iis-support.md Lowercases HTTPS redirection/HSTS middleware references.
aspnetcore/host-and-deploy/iis/advanced.md Lowercases IIS middleware references; lowercases static file middleware references.
aspnetcore/host-and-deploy/health-checks/samples/5.x/HealthChecksSample/README.md Lowercases health checks middleware reference.
aspnetcore/host-and-deploy/health-checks/samples/3.x/HealthChecksSample/README.md Lowercases health checks middleware reference.
aspnetcore/host-and-deploy/health-checks/includes/health-checks6-7.md Lowercases health checks/CORS/authorization middleware references.
aspnetcore/host-and-deploy/health-checks.md Lowercases health checks/CORS/authorization middleware references.
aspnetcore/host-and-deploy/azure-apps/index.md Lowercases IIS integration/forwarded headers/cookie middleware references.
aspnetcore/host-and-deploy/aspnet-core-module.md Lowercases IIS integration middleware references.
aspnetcore/grpc/migration.md Lowercases “Middleware” in section/link text.
aspnetcore/grpc/interceptors.md Lowercases “Middleware” in section headings/text.
aspnetcore/grpc/configuration.md Lowercases “Middleware” in table link text.
aspnetcore/fundamentals/url-rewriting/samples/6.x/SampleApp/README.md Lowercases URL rewriting/static file middleware references.
aspnetcore/fundamentals/url-rewriting/samples/3.x/SampleApp/README.md Lowercases URL rewriting/static file middleware references.
aspnetcore/fundamentals/url-rewriting/samples/2.x/SampleApp/README.md Lowercases URL rewriting/static file middleware references.
aspnetcore/fundamentals/startup/includes/startup56.md Updates HSTS xref anchor.
aspnetcore/fundamentals/servers/yarp/transforms.md Updates heading casing (“Add transforms”).
aspnetcore/fundamentals/servers/yarp/timeouts.md Lowercases request timeouts middleware reference.
aspnetcore/fundamentals/servers/yarp/middleware.md Lowercases title/description/headings.
aspnetcore/fundamentals/servers/yarp/extensibility.md Lowercases “middleware pipeline” and “HTTP forwarder” references.
aspnetcore/fundamentals/servers/yarp/dests-health-checks.md Adjusts passive health checks middleware wording.
aspnetcore/fundamentals/servers/yarp/cors.md Lowercases CORS middleware reference.
aspnetcore/fundamentals/servers/yarp/config-files.md Lowercases “ASP.NET Core middleware” in note link text.
aspnetcore/fundamentals/servers/kestrel/security-considerations.md Lowercases host-filtering/security middleware references (including table links).
aspnetcore/fundamentals/servers/kestrel/includes/kestrel6.md Lowercases forwarded headers/connection/host-filtering middleware references.
aspnetcore/fundamentals/servers/kestrel/host-filtering.md Lowercases host-filtering/forwarded headers middleware references.
aspnetcore/fundamentals/servers/kestrel/endpoints/includes/endpoints5-7.md Lowercases “Connection middleware” heading/link text.
aspnetcore/fundamentals/servers/index.md Lowercases IIS integration middleware reference.
aspnetcore/fundamentals/portable-object-localization.md Updates heading casing/phrasing.
aspnetcore/fundamentals/minimal-apis/security.md Replaces relative middleware link with xref and lowercases link text.
aspnetcore/fundamentals/minimal-apis/middleware.md Lowercases “ASP.NET Core middleware” link text.
aspnetcore/fundamentals/minimal-apis/includes/webapplication9.md Lowercases static file middleware references; updates heading casing.
aspnetcore/fundamentals/minimal-apis/includes/webapplication8.md Lowercases static file middleware references; updates heading casing.
aspnetcore/fundamentals/minimal-apis/includes/webapplication7.md Lowercases static file middleware references; updates heading casing.
aspnetcore/fundamentals/minimal-apis/includes/webapplication10.md Lowercases static file middleware references; updates heading casing.
aspnetcore/fundamentals/minimal-apis/includes/minimal-apis9.md Lowercases “ASP.NET Core middleware” heading.
aspnetcore/fundamentals/minimal-apis/includes/minimal-apis8.md Lowercases “ASP.NET Core middleware” heading.
aspnetcore/fundamentals/minimal-apis/includes/minimal-apis7.md Lowercases “ASP.NET Core middleware” heading.
aspnetcore/fundamentals/minimal-apis/includes/minimal-apis6.md Lowercases static file middleware references; updates headings.
aspnetcore/fundamentals/minimal-apis/handle-errors/includes/handle-errors7.md Lowercases exception handler middleware references.
aspnetcore/fundamentals/minimal-apis.md Lowercases “ASP.NET Core middleware” heading.
aspnetcore/fundamentals/logging/index.md Lowercases host-filtering middleware phrasing in log category descriptions.
aspnetcore/fundamentals/localization/includes/localization35.md Lowercases routing/localization middleware references.
aspnetcore/fundamentals/localization-extensibility.md Lowercases localization middleware link text.
aspnetcore/fundamentals/index/includes/index8.md Updates HSTS link text/xref anchor wording.
aspnetcore/fundamentals/index/includes/index3-7.md Updates HSTS link text/xref anchor wording.
aspnetcore/fundamentals/index.md Updates HSTS link text/xref anchor wording.
aspnetcore/fundamentals/host/generic-host.md Lowercases host-filtering middleware reference.
aspnetcore/fundamentals/file-providers.md Lowercases static file middleware reference.
aspnetcore/fundamentals/error-handling/includes/error-handling9.md Lowercases exception handling/static file/endpoints middleware references.
aspnetcore/fundamentals/error-handling/includes/error-handling8.md Lowercases exception handling/static file/endpoints middleware references.
aspnetcore/fundamentals/error-handling.md Lowercases exception handling/static file/endpoints middleware references; updates subsection heading casing.
aspnetcore/fundamentals/error-handling-api.md Lowercases exception handler middleware references.
aspnetcore/fundamentals/environments.md Lowercases exception handler and HSTS middleware references; updates HSTS xref anchor.
aspnetcore/fundamentals/configuration/index.md Lowercases host-filtering/forwarded headers middleware references.
aspnetcore/fundamentals/app-state.md Lowercases session middleware reference.
aspnetcore/diagnostics/mvc1005.md Lowercases authorization/CORS middleware references.
aspnetcore/client-side/spa/includes/intro6-7.md Lowercases static file middleware reference.
aspnetcore/client-side/spa-services.md Lowercases webpack dev middleware headings/references.
aspnetcore/breaking-changes/9/overview.md Lowercases forwarded headers middleware entry.
aspnetcore/breaking-changes/8/overview.md Lowercases forwarded headers middleware entry.
aspnetcore/breaking-changes/8/forwarded-headers-unknown-proxies.md Lowercases forwarded headers middleware title/description/heading text.
aspnetcore/breaking-changes/6/overview.md Lowercases HTTPS redirection middleware entry.
aspnetcore/breaking-changes/6/middleware-ambiguous-https-ports-exception.md Lowercases HTTPS redirection middleware references throughout.
aspnetcore/breaking-changes/5/static-files-csv-content-type-changed.md Lowercases static file middleware reference.
aspnetcore/breaking-changes/5/middleware-exception-handler-throws-original-exception.md Lowercases exception handler middleware title/description/heading text.
aspnetcore/blazor/tutorials/signalr-blazor.md Lowercases response compression middleware references.
aspnetcore/blazor/tutorials/movie-database-app/part-1.md Lowercases multiple middleware references (exception handler, HSTS, status code pages, HTTPS redirection, antiforgery, static files).
aspnetcore/blazor/security/webassembly/standalone-with-authentication-library.md Lowercases forwarded headers middleware reference in resource list.
aspnetcore/blazor/security/webassembly/index.md Lowercases forwarded headers middleware reference in resource list.
aspnetcore/blazor/security/webassembly/hosted-with-identity-server.md Lowercases IdentityServer/auth/authz/JWT bearer middleware references; lowercases forwarded headers middleware in resource list.
aspnetcore/blazor/security/qrcodes-for-authenticator-apps.md Updates heading casing/phrasing.
aspnetcore/blazor/security/interactive-server-side-rendering.md Lowercases CORS middleware reference.
aspnetcore/blazor/security/index.md Lowercases antiforgery/forwarded headers middleware references.
aspnetcore/blazor/security/gdpr.md Lowercases cookie policy middleware reference.
aspnetcore/blazor/security/additional-scenarios.md Lowercases authentication middleware references.
aspnetcore/blazor/javascript-interoperability/index.md Lowercases HTTP response caching middleware reference.
aspnetcore/blazor/host-and-deploy/webassembly/multiple-hosted-webassembly.md Lowercases static file middleware reference.
aspnetcore/blazor/host-and-deploy/index.md Lowercases static file middleware reference.
aspnetcore/blazor/host-and-deploy/app-base-path.md Lowercases routing/static file middleware references.
aspnetcore/blazor/fundamentals/static-files.md Lowercases static file middleware references throughout.
aspnetcore/blazor/fundamentals/startup.md Lowercases “ASP.NET Core middleware” link text.
aspnetcore/blazor/fundamentals/signalr.md Lowercases response compression middleware reference.
aspnetcore/blazor/fundamentals/routing.md Lowercases status code pages re-execution middleware reference.
aspnetcore/blazor/fundamentals/navigation.md Lowercases status code pages re-execution middleware references.
aspnetcore/blazor/forms/index.md Lowercases antiforgery middleware references.
aspnetcore/blazor/components/rendering.md Lowercases status code pages re-execution middleware references.
aspnetcore/blazor/components/render-modes.md Lowercases authorization middleware references.

Comment thread aspnetcore/security/authentication/social/additional-claims.md Outdated
Comment thread aspnetcore/security/authentication/social/additional-claims.md Outdated
Comment thread aspnetcore/security/authentication/social/additional-claims.md Outdated
Comment thread aspnetcore/migration/fx-to-core/areas/authentication.md Outdated
Comment thread aspnetcore/host-and-deploy/iis/modules.md Outdated
Comment thread aspnetcore/mvc/controllers/filters/includes/filters7.md Outdated
Comment thread aspnetcore/blazor/tutorials/movie-database-app/part-1.md

@wadepickett wadepickett left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@guardrex,
Approved, but do see my suggestion for a link fix.

@wadepickett

Copy link
Copy Markdown
Contributor

@guardrex, I re-approved since there was one more commit and another approval required.

@guardrex

guardrex commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator Author

Thanks, @wadepickett.

Let's see if @danroth27 really wants to proceed with this. If so, I'll merge it; and from now on, all middlewares will be treated as general nouns with the only uppercase letters being part of proper adjectives. I'll 😢 in my 🍺 over it 😆, but that's what we'll do from now on.

@danroth27

Copy link
Copy Markdown
Member

Let's see if @danroth27 really wants to proceed with this. If so, I'll merge it; and from now on, all middlewares will be treated as general nouns with the only uppercase letters being part of proper adjectives. I'll 😢 in my 🍺 over it 😆, but that's what we'll do from now on.

😂. I honestly don't feel strongly about this either way. We should of course be consistent. I believe our Microsoft style guides say to reserve capitals for true proper nouns and branded product/feature names. I think of middleware names as largely descriptive (authorization, rate limiting, etc.), not proper feature names, but I get the readability argument. If it's less disruptive to standardize on treating middleware names as proper nouns, I'm fine with that.

@guardrex

Copy link
Copy Markdown
Collaborator Author

I guess that we'll leave it to @wadepickett and @tdykstra to decide. 🧑‍⚖️ I'll adopt whatever style they want to use.

IMO, these are proper nouns by definition ... specific, named things in the framework. In some cases, it seems to me that dropping the caps makes it hard to understand which words are adjectives and which words are part of the name.

If we don't proceed with this PR, I made a couple of updates that I'd like to put on a new PR ... things that I spotted for a quick fix along the way.

I'm 👂 for the ruling! 😄

@wadepickett

wadepickett commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

I am aligned with Dan here:

"I believe our Microsoft style guides say to reserve capitals for true proper nouns and branded product/feature names. I think of middleware names as largely descriptive (authorization, rate limiting, etc.), not proper feature names"

In our case, we want to call out proper feature names with a cap, and what you changed in this PR from what I saw was removing caps from middleware things we were describing and referring to, not proper feature names.

The guide reserves capitalization for genuine proper nouns and branded names. "response caching middleware," "exception handling middleware," etc., are descriptive phrases, not brand names.

I also agree with you, Luke, on adopting hyphenation for compound -ing adjectives where ambiguity is real (host-filtering), but leave clear ones like "exception handling middleware" and "URL rewriting middleware" unhyphenated.

I don't think this is necessarily the highest priority issue at the moment per se, but it's also one of those where if we don't clean house once in a while, it builds on itself as a problem. People look to previously published content to determine how to proceed with an update, etc. So I am happy it's being addressed, thanks.

I will help by also adding some rules to our repo agent skills to help keep this clean, tracking issue here: #37360, will have a PR going soon.

@guardrex

Copy link
Copy Markdown
Collaborator Author

I don't agree with that analysis 😄, but I'll adopt and enforce the rule that you set.

For the record, I was following the well-established convention on this that the FTEs put into place many years ago, which was based on Chicago and standard written English ... and to avoid confusion over adjectives and parts of the name. If you want me to provide more info on how Chicago and other style manuals treat this subject, I can add a little more discussion.

Anyway, I guess we're just waiting for @tdykstra's feedback.

@danroth27 danroth27 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM

@wadepickett

Copy link
Copy Markdown
Contributor

Thanks Luke, and genuinely, thank you for tackling 800+ of these by hand. That's not fun work, and the cleanup matters.

Your reasoning is sound and well-grounded in Chicago and the original FTE convention, and Dan said he doesn't feel strongly either way. This really is a close call, and I don't want to over-index on something that isn't a huge deal. My preference for lowercasing the descriptive phrases is mostly about consistency with the Microsoft Style Guide and matching what readers see across the rest of the .NET ecosystem, blogs, and source: less context-switching for them.

I think your concern over adjective ambiguity would be good to bake into a rule. I'd rather solve that with hyphenation than with caps: "host-filtering middleware" where the meaning is truly ambiguous, while leaving clear ones open ("exception handling middleware," "URL rewriting middleware"). That directly addresses the confusion you're worried about without reintroducing inconsistent casing. Exact casing still stays for true brand/feature names and API identifiers (HSTS, UseHsts, etc.).

Let's still get Tom's read before we call it settled, since you're deferring to us and Dan's neutral.

I'll fold the lowercase + hyphenation-for-ambiguity guidance into the repo agent skills (see #37360) so future contributors don't just copy older capitalized patterns. It's in draft, and we can update based on the outcome here after Tom chimes in.

@wadepickett

Copy link
Copy Markdown
Contributor

@tdykstra, could use your input on guidance going forward.

@tdykstra tdykstra left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I'm 100% in agreement with dropping proper noun status for middleware. I expect it will result in less confusion, not more. I'm open to looking at examples where proper noun status seems to be a better fit than the alternative. but they will be hard to find.

The most important argument in favor of this change is what Dan says about the style guide's conservative attitude towards capitalization. Dropping proper noun status puts us more in line with the style guide and with the rest of the published ASP.NET Core docs, which tend to follow the style guide.

@guardrex
guardrex merged commit 0c2b8a2 into main Jul 22, 2026
4 checks passed
@guardrex
guardrex deleted the guardrex/middleware-name-changes branch July 22, 2026 11:32
@guardrex

Copy link
Copy Markdown
Collaborator Author

😄 The "Ayes" have it! The motion is carried!

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.

Drop proper noun status for middleware references across the doc set

5 participants