Profiles
The name “profile” is a terrible name, it causes tons of confusion whenever I try to explain it to someone, and I clearly need to find a new name. I just don’t know what else to call it. Please send suggestions if you have one. “Tweet folder”, maybe?
A “profile” is simply a folder (or a “directory”) that contains an entire, self-contained collection of tweets. It’s a set of tweets, retweets, all the users for those tweets and retweets, all the photos and videos included in those tweets, and a bit of other associated data.
The concept of a profile is at the core of Offline Twitter’s data sovereignty model. You can see everything to do with every tweet in it, using only the data in it. The entire company called Twitter could explode tomorrow, and all their servers crash, and the domain name gets bought by a wealthy bird-watching society, and you’d still be able to see all of those tweets exactly how they were.
As a self-contained collection of tweets, it might make sense to have more than one of them if you use Twitter for multiple purposes. In this way, a profile serves a similar role as a “list”. You can create as many profiles as you want and they will all be stored in separate folders. For example, if you don’t want posts about cute designs for a scarf to be intermixed with angry political arguments, you can create separate profiles for your knitting people and for your political people.
You can switch between profile directories in the app.
I originally intended profiles to be a replacement for lists, but lately I think I’m probably going to implement lists anyway, so that use case is probably not as useful as I originally expected. Profiles as the data model will still remain though.
Data format
The structure of a profile folder is pretty simple.
- There’s one file called
twitter.db
, which is a SQLite database holding all the tweet data and text content. - There are a bunch of folders for media content, such as images, profile images, videos, link previews, and so on.
- Finally, there is a file called
settings.yaml
, which doesn’t have any purpose yet. Once the app is a bit more mature and all of the major features are working properly, this settings file will probably be used for customization stuff like font size, etc.