Josh McDonald <j...@joshmcdonald.info> writes: > Why should links be in the filesystem, rather than an application / > UI construct?
For a lot of reasons. But the question is justified. - because it would be more modular and represent more code reuse, to factorize out the management of links in the file system module, rather than having it in each application. - because that would provide the user with a more consistent user experience (both look and feel), than when each application implements its own semantics and user interface to manage files (as we can see on the horrible iOS and Android systems). - because providing a generic tool to manipulate files let the users control their data, contrarily to putting the application (and therefore, unless it's a GPL application readable, understandable, modifiable and compilable by the user, is actually a proxy of the commercial or political interests that provide this application to the slave^W user. Notice the qualificatifs, the GPL is not enough: how many users can read, understand, modify and compile the source of the GPL application they use (take for example LibreOffice oremacs). The points here are that: 1- applications are not written in languages that are readable by the (non programmer) users. 2- applications are not written in a way that is understandable by their users. 3- and therefore, applications are not modifiable and compilable by users. Therefore, embedding important features such as file system management into applications is strongly restrictive of users' freedom, taking control over users' data. The GPL idea would be that users could contract programmers to help them with those point. How many times did users contract you to read GPL programs, or to modify them? (cf. the recent openssl and bash bugs). Until there is a lot of changes in the way applications are written, and in the way they are licensed and distributed, embedding file system management features in the applications (or in the frameworks used by the application, like Cocoa and iOS try to do), is very bad. > Why should there be 1 filesystem, rather than 0, or > thousands? Indeed. There can as many file systems as you wish, and a system should provide a way to manage as many file systems as you wish. The unix systems let you do that, with the mount(2)/umount(2) and chroot(2) primitives. Linux helps even more with bind move and shared mounts. But otherwise, this question refers to capability based systems which often provide explicitely set-up per-process directories to give access explicitely to authorised files. Indeed, this seems to be a good way to avoid a lot of security problems. The question is how to design a user interface letting us do that conveniently enough. (And again, there's the question of trusting the programs that perform those tasks anyways, can those programs be read and modified by the users (with the required "capabilities")? > Why must a filesystem be a DAG + links, rather than some > other graph, or a soup with a lot of queries? See my previous answer. Again, you're right to ask the question. Trees are but a simple way to manage files where the human user keeps control of it. Granted, when managing libraries of millions of pictures or mp3 songs, other organization scheme, more automatic, and more multidimensional may be required. This becomes more a database than a (classic) file system. Should the system integrate database systems to manage files (like old mainframe systems), or should unix stay a uni-user simple system (unix) instead of becoming a multi-user complex system (multics)? Just joking anyways, I'm on the Lisp Machine side of things. My point here is that it is a difficult problem to solve satisfatorily: - you need to provide a generic file system module that is independent of applications to let the user keep ownership of their files despite using privative applications, - you now need to provide a database system that works for all kind of different applications with different requirements, - nowadays, you might also need to integrate remote files (cloud storage, etc), behind this database API. > Why should a "link" simply be a file pretending to be in two > directories at once, rather than a data-carrying relationship between > two nodes in the graph? Well, in the current situation, links carry information: their name, and a few file system attributes are link-specific. An application can take advantage of it. An example, is scripts with care called with different symbolic link names and perform different actions accordingly. But granted, in a database view of the thing, you might want to add other attributes. > I think these are much more interesting questions :) Yes. -- __Pascal Bourguignon__ http://www.informatimago.com/ “The factory of the future will have only two employees, a man and a dog. The man will be there to feed the dog. The dog will be there to keep the man from touching the equipment.” -- Carl Bass CEO Autodesk _______________________________________________ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc