Replying to @⁨drq@mastodon.ml⁩

@n0icz я вот че подумал, это же даже не настолько было бы сложно реализовать и на старой доброй Ext4, не прибегая к каким-то новым ФС с крутой системой метаданных.

Мы, например, знаем, что имя файла (как и его адрес в дереве директорий) это технически просто хардлинк на некоторую область на диске, и таких хардлинков может быть сколько угодно. То есть, по сути это уже и есть готовая система тегов, надо просто сделать ее чуточку комфортнее.

Например, сделать в корне специальную директорию "/tags", в ней создать поддиректории по именам тегов, а эти директории забить хардлинками на тегированные файлы, и любые операции с ней расценивать только как линкование/разлинкование, запретив копирование и удаление.

Ненуачо, ext4 уже создает служебную папку "/lost+found" со всяким говном с проверки, и никто туда даже не заглядывает, почему бы не сделать что-то более полезное. Заодно юниксвейно, все можно через файлы и сисколлы делать в файловых менеджерах.

ru

Replying to @⁨dside@mastodon.ml⁩

@drq глянул тут, и вижу что stat показывает число ссылок на inode, очень вероятно, что он где-то его хранит. Что логично — ему же надо как-то знать, когда удалён последний хардлинк и содержимое айноды можно больше не хранить. Теоретически можно этим воспользоваться, чтобы пропускать чистку ссылок, когда она не нужна. Иногда. Насколько это реально поможет… надо исследовать паттерны использования.

@n0icz

Replying to @⁨drq@mastodon.ml⁩

@drq
Я не очень понял, ты хочешь чтобы, условно, в файловом менеджере можно было создать группу файлов и находить эти файлы в отдельной вкладке, а не настоящей папке? Ну тогда удобнее будут симлинки, если честно. Да и проще будет реализовать на уровне файлового менеджера. Типа в домашней директории создать папку groups в ней папки групп, а в каждую такую папку кидать симлинки на избранные файлы.

@n0icz

Replying to @⁨drq@mastodon.ml⁩

@drq
1) по итогу просто победит самая распространенная реализация. Да и к тому же, это реально не удобно, только если пользоваться сразу несколькими менеджерами.
2) ну открывать просто по пути к симлинку. Ну или просто написать консольную утилиту.

Ну и вообще, давайте не будем нагружать файловую систему лишними задачами. Не хватало ещё багов в функциях ФС :madeline_wee:
@n0icz

Replying to @⁨drq@mastodon.ml⁩

@drq
Так ты назвал не функцию, а задачу :ablobcatbouncefast:
А теги это уже отдельная функция. А как известно, чем больше функций, тем больше и ̶о̶т̶в̶е̶т̶с̶т̶в̶е̶н̶н̶о̶с̶т̶ь̶ потенциальных багов. Я не хочу потенциальных багов на уровне файловой системы. Уж лучше обойтись файловым менеджером и консольной утилитой :madeline_wee:
@n0icz

Replying to @⁨drq@mastodon.ml⁩

@drq это, правда, может приводить к неочевидным приколам, которых от системы тегов не ожидаешь — нет простого способа полностью удалить файл, например. До тех пор, пока на него есть хотя бы один хардлинк, он будет храниться на диске. Потому что, насколько файловая система осведомлена, это полноценные файлы. Просто, по стечению обстоятельств, хранящие своё содержимое в одном и том же месте.

@n0icz

Replying to @⁨drq@mastodon.ml⁩

@drq для нужд каталогизации тебе нужна т. н. "слабая ссылка" (weak reference), которая не сдерживает зачистку исходного ресурса. Такие можно встретить в языках с managed heap и GC, и самое ходовое их применение — кэши.
В файловых системах симлинки к ним ближе всего. Но они могут вести вникуда. Их можно чистить автоматикой, но тогда получаем в её (автоматики) лице процесс, функционально неотличимый от индексатора, и ничего особенно не выиграли.

Я предполагаю, что многочисленные системы на внешнем индексаторе не просто так остановились.

@n0icz

Replying to @⁨drq@mastodon.ml⁩

@drq это здорово раздувает операцию чтения уже проверкой действительности ссылок, а к тому же и допускает в ней запись. Это *можно* сделать, но в этом легко очень деструктивно накосячить. А для такого фундаментального элемента для функционирования системы… такое вызывает скорее опасения, чем восторг.

Но мы вроде в каком-то из прошлых тредов обсуждали, что можно ставить UX-эксперименты такого рода с FUSE. Тем более что каталогизировать таким образом файлы же наверняка нужно не по всей системе, а скорее в пределах домашней директории, и остальную инфраструктуру трогать необязательно.

Правда, драйвер такой ФС будет… отдельным процессом. Опять.

@n0icz

Replying to @⁨drq@mastodon.ml⁩

> так ФС и так способна на ходу допрашивать ссылки (например, в ls битые симлинки видно сразу), разве нет?

@drq я подозреваю, что это делает ls/шелл, а не ФС. Но это не точно.

Тормоза — смотря как напишешь. Ты в любом случае хочешь загрузить ФС дополнительной работой, так что быстрее оно быть не может. А если операции над этим деревом файлов производить планируется руками, там не такие высокие требования к скорости.

@n0icz

Replying to @⁨mo@mastodon.ml⁩

@mo это про предложение выше по треду: mastodon.ml/@drq/1170041344013

Чистка так-то потребуется и тем, и другим. У симлинка просто последствий неуборки немножко меньше.

@drq @n0icz

Mastodon.mlDr. Quadragon ❌ (@drq@mastodon.ml)@n0icz я вот че подумал, это же даже не настолько было бы сложно реализовать и на старой доброй Ext4, не прибегая к каким-то новым ФС с крутой системой метаданных. Мы, например, знаем, что имя файла (как и его адрес в дереве директорий) это технически просто хардлинк на некоторую область на диске, и таких хардлинков может быть сколько угодно. То есть, по сути это уже и есть готовая система тегов, надо просто сделать ее чуточку комфортнее. Например, сделать в корне специальную директорию "/tags", в ней создать поддиректории по именам тегов, а эти директории забить хардлинками на тегированные файлы, и любые операции с ней расценивать только как линкование/разлинкование, запретив копирование и удаление. Ненуачо, ext4 уже создает служебную папку "/lost+found" со всяким говном с проверки, и никто туда даже не заглядывает, почему бы не сделать что-то более полезное. Заодно юниксвейно, все можно через файлы и сисколлы делать в файловых менеджерах.

Replying to @⁨dside@mastodon.ml⁩

@dside нужно, потому что нафига делать оверлей там, где это необязательно, оверлеи всегда все затормаживают

@drq кстати для питона есть бинды к fuse, довольно неплохие если писать прототип :D
+ встроенный sqlite бекендом хранения

@n0icz

Replying to @⁨mo@mastodon.ml⁩

@mo собственно @drq же и настаивает на том, что для того, чтобы для работы этой функции не требовался оверлей, можно встроить её в саму ФС. А мне это кажется очень хрупкой идеей с учётом того, сколько всего другого в системе, не требующего этой фичи, уже держится на ФС.

Это как, ща всратая аналогия будет, вводить внутривенно препарат на всю систему, чтобы воздействовать на отдельно взятый участок кожи. Избыточно, бессмысленно и часто даже опасно. Можно ведь намазать сам участок.

@n0icz

Replying to @⁨mo@mastodon.ml⁩

@mo в бета-версии этой аналогии не было слова "кожи", и уточнение, что так реально делают при химиотерапии, потому что там нету особого выбора, т. к. участок внутри. Но слово "кожи" устранило необходимость в этом :blobcatytriumphant:

У лимита символов встречаются полезные эффекты :blobcatlul:

@drq @n0icz

Replying to @⁨dside@mastodon.ml⁩

@dside

> А мне это кажется очень хрупкой идеей с учётом того, сколько всего другого в системе, не требующего этой фичи, уже держится на ФС.

А как это мешает тому, что уже есть в системе? Никто ж не заставляет этой фичей пользоваться, но если надо - вот она есть.

@mo @n0icz

Replying to @⁨drq@mastodon.ml⁩

@drq дело не в фиче, а в том, где она находится. Ты же её прямо в ФС предлагаешь затолкать. Если мы считаем фичу опасной, надо либо очень мощно вложиться в её тестирование, либо поднять её от фундамента повыше. Вот решение с FUSE — как раз последнее.

@mo @n0icz

Replying to @⁨dside@mastodon.ml⁩

@dside А я что предлагаю ее не тестировать, что-ли?

Поднять от фундамента - в моем случае не работает, потому что поинт в том, чтобы такая абстракция была частью фундамента и не требовала ничего сверху, и на этом можно было строить уже пользовательский опыт в DEшках, например.

А не просто очередная с-боку-реализация, которых, в общем-то и так полно, и которые все разные, и не везде есть.

@mo @n0icz

Replying to @⁨drq@mastodon.ml⁩

> А я что предлагаю ее не тестировать, что-ли?

@drq а я где-то говорил, что предлагаешь? Дело не в том, что это надо делать. А в том, что это надо не просто делать, а в *конских* объёмах. Такие объёмы оправдать получится только какими-то очень существенными выгодами.

А для того, чтобы на этом можно было строить пользовательский опыт в DEшках, надо не спускать как можно ниже в абстракциях, а банально добиться популярности. Спуск на уровень ниже теоретически даст много установок, что может быть *последствием* популярности, но необязательно ей *предшествует* – т. е. кучей установок ты ещё не гарантируешь уровня популярности, могущего спровоцировать повальную интеграцию. Следствие в обратную сторону крч.

Интеграция чего-то "сбоку" не обрекает на нишевость. Пример – иксы.

@mo @n0icz

Replying to @⁨drq@mastodon.ml⁩

@drq freedesktop звучит как более подходящий уровень, да. Хотя и им потребуется UX research, чтобы выдвигать стандарт, который сможет быть чем-то кроме документа. И прототип на FUSE, теоретически, поможет собрать вишлист, приближенный к боевому. Хотя это не единственный способ, конечно.

Мне ещё понравился приём с атрибутами (xattr) в макоси, где можно хранить первичные данные, а строить из них представление уже в интерфейсных обёртках – где банальным внешним индексером, где FUSE'ом. Формат данных выглядел несколько всрато, но может у него есть не очевидные мне преимущества.

@mo @n0icz

Replying to @⁨drq@mastodon.ml⁩

@drq Если принять во внимание, что фс больше чем одна, все становится несколько забавнее: сейчаc, как минимум на средней по больнице машине, раздел uefi находится под fat. Нередко что-то да живет на сетевых: smb, nfs. И если вспомнить, что еще и на флешках-дисках-смартах-плеерах может оказаться -- и с хардлинками, да и софтлинками становится несколько грустно.
Получить еще одну прослойку: заманчиво конечно, но почему-то не очень хочется, при имеющихся внешних индексаторах или тех же xattr.

Вспоминается про ntfs с ее потоками файла: насколько прикольная вещь хранить с основным файлом еще чего-то. оно даже прозрачно использовалось для метки внешнего файла или локального. Но с настолько неудобным и сакральным способом использования, что диву даешься. Либо удалили, либо собирались удалять в Win11 -- ну и ладно, пользователь не сильно заметил.
Вопрос востребованности и, соответственно, поддержки всего этого.

@dside @mo @n0icz