# SE-0309: Unlock existential types for all protocols

**URL:** <https://forums.swift.org/t/se-0309-unlock-existential-types-for-all-protocols/47515>\
**Category:** Proposal Reviews\
**Created:** [April 17, 2021, 7:56pm UTC](https://forums.swift.org/t/se-0309-unlock-existential-types-for-all-protocols/47515 "2021-04-17T19:56:29Z")\
**Posts on this page:** 1\
**Showing post:** 52

<div class="post-metadata">

**Author:** ![dabrahams](https://sea2.discourse-cdn.com/swift/user_avatar/forums.swift.org/dabrahams/32/9815_2.png) [@dabrahams](https://forums.swift.org/u/dabrahams)\
**Post date:** [April 23, 2021, 8:58pm UTC](https://forums.swift.org/t/se-0309-unlock-existential-types-for-all-protocols/47515/52 "2021-04-23T20:58:52Z")

</div>

> [@GarthSnyder](#):
>
> However, it involves so many type-theoretical limitations and edge cases that I'm skeptical this scheme can be explained in language comprehensible to the average Swift programmer. It's far beyond the complexity of, e.g., generics.

I happened to be browsing by, just out of nostalgia. I'll add that this is an effect I have always worried the addition of generalized existentials would have. I'm disappointed to see that the proposal doesn't seem to include a careful examination of these implications along with proposing mitigation strategies.

> [@](#):
>
> Requiring protocols to be explicitly GE-enabled would go a long way toward shifting the need to understand the details of the GE implementation onto API developers. It might be worth considering this as a usability issue even though there doesn't appear to be any particular technical reason for it.

That was one of my earliest proposals for a mitigation strategy. Is it enough? I'm not sure. To me it seems like it helps with the surprising-API-non-availability problem, but maybe less so the language complexity effects.

More broadly, my concern here has always been that in an eagerness to “just get past the restriction already,” we'd brush away the downsides and fail to do an enthusiastic investigation of just what they are, how bad they might be, and how we might counteract them. The sense I get from the proposal is, “we thought about a couple things but decided not to do anything,” which I'm not sure is really adequate, especially after such a [thorough exploration](https://forums.swift.org/t/improving-the-ui-of-generics/22814) of the space from @Joe_Groff.

FWIW-ly y'rs,  
Dave

---

_[View the full topic](https://forums.swift.org/t/se-0309-unlock-existential-types-for-all-protocols/47515)._
