6 ms·
Interesting that they decided to change the project format from bag of files to single file. I certainly remember when I was new to computers and I was using so
by codetrotter 6y ago
Interesting that they decided to change the project format from bag of files to single file. I certainly remember when I was new to computers and I was using some software and brought only the project file with me to a friend and didn’t know I had to bring the source files also. But after the first time of making that mistake I learned from it. Personally I still like the bag of files approach for music and video projects because it keeps the source files accessible and I use a few different pieces of software and don’t want my source files locked into a project files (even when it’s a SQLite based approach like Audacity 3). And for me personally I don’t want to duplicate files on my local storage medium either.
But I can see how it will be helpful to users in general.
macOS has a really interesting feature that allows bag of files to appear like a single file to users but it’s actually just a directory and you can still access the files inside by opening it as a directory. Of course that doesn’t help for cross platform software though, as on other platforms you will still only see it as the bag of files that it really is.
- rectang 6y ago> macOS has a really interesting feature that allows bag of files to appear like a single file I think this is what you're referring to: https://en.wikipedia.org/wiki/Package_(macOS) https://en.wikipedia.org/wiki/Package_(macOS) I used to have problems with running out of file descriptors on MacOS, and I recall that the maximum number was 256. I was wondering if this package abstraction could be used to work around it. But then I checked `ulimit -a` and it looks like on Big Sur the max is now 2560. Progress!
- quesera 6y agoThe wikipedia article does not mention the most common example -- .app "files"/bundles. E.g.: zsh% ls Applications/Firefox.app/Contents CodeResources Library PkgInfo _CodeSignature Info.plist MacOS Resources
- codetrotter 6y ago> I think this is what you're referring to Almost. I was actually referring to https://en.wikipedia.org/wiki/Bundle_(macOS) https://en.wikipedia.org/wiki/Bundle_(macOS) which is the same concept. See also https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html#//apple_ref/doc/uid/TP40009259-SW1 https://developer.apple.com/library/archive/documentation/Mi...
- rectang 6y agoHuh. It looks like "package" is the more general type and "bundle" is a more specific format. Even if "bundle" is what you were thinking of, it looks to me like the high-level description you gave matches "package"! But I struggle to understand the criteria that a "package" must satisfy to qualify as a "bundle". According to your second link a bundle is "A directory with an internal structure specified by Core Foundation Bundle Services." So there's a finite list of bundle file types, maybe?
- codetrotter 6y ago> So there's a finite list of bundle file types, maybe? No, third party software can define bundles too.
- rectang 6y agoLOL. "Wrong!" "Wrong again!" "Still wrong!" Fine. I tracked down the relevant official documentation: https://developer.apple.com/library/archive/documentation/CoreFoundation/Conceptual/CFBundles/AboutBundles/AboutBundles.html https://developer.apple.com/library/archive/documentation/Co... > • A package is any directory that the Finder presents to the user as if it were a single file. > • A bundle is a directory with a standardized hierarchical structure that holds executable code and the resources used by that code. [...] > The Finder considers a directory to be a package if any of the following conditions are true: > • The directory has a known filename extension: .app, .bundle, .framework, .plugin, .kext, and so on. > • The directory has an extension that some other application claims represents a package type; see Document Packages. > • The directory has its package bit set.
- jdmichal 6y agoI wonder: Is it like the new Office formats, where it's actually a zipped bundle? In this case, maybe they just zipped up all the files they already had and saved a lot of reimplementation in other parts of the system.
- coliveira 6y agoNo, they're using SQLite3 as the repository.
- yellowapple 6y agoRight, but the individual rows in that SQLite3 database could indeed be entire files, which is what I think the GP was getting at. Basically: using SQLite as if it were an archive format, with file data stored as BLOB-typed columns (and possibly other columns for various metadata). Whether Audacity is actually doing this, I don't know.
- thristian 6y agoAudacity almost certainly isn't doing this, but you can use SQLite to treat an archive as a database: $ echo "select name, sz from zip" | sqlite3 -table mb.zip +---------+--------+ | name | sz | +---------+--------+ | MB.EXE | 125952 | | MB.DOC | 1225 | | MB2.DOC | 9158 | +---------+--------+ ...and to treat a database as an archive: $ sqlite3 new_archive.db -A --create log.txt $ sqlite3 new_archive.db -A --list log.txt
- oblio 6y agoThis is insane, SQLite can open ZIP files? :-))
- mavhc 6y agoAll file formats are now zip files or sqlite files it seems