Something has been bothering me with the structure of the 10Centuries data model recently and I've been unable to identify exactly what the problem was until I was on the train home from work yesterday when, in a flash of insight, things became clear. The underlying problem stems from a core limitation in 10Centuries with regards to accounts and how they're used in the content publishing mechanism: every account is treated as an identity, and every identity is essentially an account. If a person wants to publish posts on one website as "Tom" and on another website as "Jerry", they can easily use the same account. The problem is that when someone looks at the blog post via the RESTful API, they'll see that Tom and Jerry are both the same account but with a different author name.
This is silly, and it's something I've also blindly dealt with over the years writing the occasional post under an alias on various sites all the while using this very account. To make the matter even more blindingly obvious, publishing a social post alongside a blog post or podcast would come from the origin account, not an alias. So what exactly was the point of allowing aliases in the first place?
But this line of thinking is how the missing piece fell into place ...
What 10Centuries could really use are "personas". A single account could have many personas, but a persona would belong to only one account. This would allow a person to have what appears to be multiple accounts on here that are all available through a single sign-in. But then comes the obvious question: why would anybody want to do this?
With the dwindling activity on 10C — across all functions, not just social — I've been looking at ways to potentially resolve the "dead timeline" problem that people can face when they look at one of the social apps or sites. A lot of people have micro.blog accounts, and that project appears to be "open" enough that it's possible to build the necessary interfaces to play nicely with the network. Making 10C an "easy" way for people to use their micro.blog account seems like a natural fit. People would see posts from that network in their timeline, and they'd also see locally-created posts as well. The system would be smart enough to know where to send the response, posts too long for a single 280-character object on micro.blog could be presented as a partial with a link back to the full message in a proper stream view on a person's personal 10C site. Of course, people who do not wish to use micro.blog wouldn't have to. They could continue to use the system however they choose and everything would continue to work as expected. As working with micro.blog would require the full adoption of microformats, 10C sites would also — finally — adapt to play nice in the IndieWeb space.
Why the multiple personas, though? Separation of identities, really. Not everyone may want their micro.blog account tied to their main 10C account, and not everyone would have just one account to link to. It makes sense to allow multiples for personal, professional, creative, and silly accounts to exist all within one account, while appearing as multiple personas with varying degrees of data visibility via the API.
This is more or less a logical progression so far ... right? I certainly hope so.
But wait. IndieWeb is an alternative to the "corporate web" and its silos. While 10C is most certainly not a corporate entity, it is still very much a silo. So this means in order to make this idea ideologically complete, I need to share the source code for 10C with the world.
Okay. I can do that. Version 5 is still very much slated to be the 100% open version of 10C that anyone and everyone can download, install, use — and abuse — to their heart's content, ideally finding issues and contributing back to the community whenever possible. This just means that Version 5 needs to have files to share.
Another Ambitious Goal?
As I explained recently, the last little bit at the day job has been an absolute slog. I'm not excited to go to work and solve problems there anymore. I'm dreading the inbox with every glance at the little mail icon. I'm just not much into the corporate tools right now. What I'd like to do is focus a bit on making something that I can be proud of, even for a little while. A basic version of 10C v5 might just pull me out of the doldrums and get the brain firing on an extra cylinder or two.
But this means I need to put a bit more thought into the data model and how everything will be structured. With 10Cv4 I started playing with the idea of "channels" and how every object was a self-contained entity that resided in a channel that could be accessed via a site or a pipe. While this model did solve some interesting problems, there's still room for improvement. The same can be said about the account structures, which still use the terrible term
user and will be changed as soon as is feasible. It's already been decided that accounts can have personas, and accounts can own channels and be granted permissions to them. But what else can be improved about accounts and the model? Are the ToDo and Notes entities as effective as they could be? How about the Photo entities? There is a lot to think about, but not all at once.
What I'm going to aim to do is release a proof-of-concept of a Version 5 implementation in the coming weeks. It will not be too ambitious at first, instead being a simple little tool that will contain an API, a web presentation layer, files, and the start of a self-hosted platform with a few ideas I've been toying around with for 10Cv4 that would probably make more sense to ship with a more modern API. If the project is something people see potential in, then maybe there will be a few people contributing to the project and building something much better than a single person could hope to accomplish. I won't hold my hopes out, though.
There's a lot that I still don't understand about microformats and the IndieWeb project, and there are things in both projects that break my brain as I try to parse the logic behind decisions without knowing the context. That said, it's one of the few ways forward for people who truly care about owning their data and for the 10Centuries platform that I've invested so much time and effort into building.
Let's see if this concept of personas is the missing piece that will make 10C a little more interesting.