К содержимому
Hub
All notes

August 24, 2026 · 3 min read

The default that broke an entire feature

ПродуктПриватностьУмолчанияUX

When messaging appeared on the site, every user defaulted to «only friends can message me first». It looked like sensible care: no strangers, no spam, privacy respected.

It could not work at all. To become friends you send a request and wait. To agree on anything you write. The first message to a stranger never went through, which means messaging worked for nobody except those already friends — that is, nobody.

There was a separate insult in the interface: next to a person you had just found sat a «Write» button that was guaranteed to fail. Offering an action that cannot succeed is its own kind of rudeness.

What is worth noticing here.

A default is not a detail or a matter of taste. The overwhelming majority of people never open settings, so the default is the product's behaviour. Getting it wrong is the same as shipping a broken feature, only invisibly: the code is fine, the tests pass, and it cannot be used.

Privacy by default is a good rule, but it has a boundary. A setting that closes the only entrance to a feature does not protect the person — it disables something they can see in the menu.

The right default here is «anyone», with the restriction remaining a choice for those bothered by strangers. That is exactly how the messengers people use every day work.

And finally, about the fix. Changing someone's privacy setting after the fact is a bad idea, permissible in exactly one case: when there was no choice. The value was set by a default, not by a person. So the migration of old accounts is bounded by date — anything created after the fix is left alone, because there it is a deliberate choice.

TypeScript
/// Кто может написать первым: "EVERYONE" | "FRIENDS" | "NOBODY".////// По умолчанию — кто угодно. Сначала здесь стояло "FRIENDS", и это/// было ошибкой: чтобы подружиться, нужно отправить заявку, а чтобы/// договориться о чём-либо — написать. При таком умолчании первое/// сообщение незнакомому человеку не проходило никогда, и переписка/// на сайте просто не работала.////// Ограничение остаётся, но как выбор человека, а не как исходное/// состояние: кому мешают незнакомцы, ставит "FRIENDS" или "NOBODY".allowMessagesFrom String @default("EVERYONE")