spacekookie changed the topic of #qaul.net to: https://qaul.net - Internet independent, decentralised ad-hoc wireless communication application - Logs: https://freenode.irclog.whitequark.org/qaul.net
erictapen has joined #qaul.net
<spacekookie> I guess I mostly talked myself out of it again (see the feedback section :P)
erictapen has quit [Ping timeout: 260 seconds]
Degi has quit [Ping timeout: 240 seconds]
Degi has joined #qaul.net
<lejonet> spacekookie: without knowing more of the codebase and architecture, but here's my naive thoughts: What is it that is stopping you from abstracting the storage parts completely? I've worked a fair deal with distributed filesystems, currently mostly with ceph, and maybe a part of its abstraction regarding how you find objects could be borrowed?
<lejonet> Basically what you do there is that you have the monitor, which is the supervisors of everything, and then you have the actual storage nodes (OSD in ceph parlance, Object Storage Daemon) and when a client wants to know "Where can I find X?" they ask the monitor, which looks up in its tables and metadata which OSD that is storing it and tells the client "You can find X at node Y, go talk to them"
<lejonet> so basically what you could do here, is that you have some type of storage daemon, which abstracts where and how stuff is stored
<lejonet> so in this case, you'd mush the two things together instead of having it separated in frontend/backend, so that the actual storage daemon also fetches and delivers the data, not just tells the client where it is
<lejonet> Sure, architecturally, it becomes a bit more complex, and on few/single user systems, it might seem like a bit over-engineered, but it would follow the unix philosophy of one thing that does one job, well :)
<lejonet> (not to mentioned the added latency of handling storage, but that might be acceptable in some cases)
<lejonet> (and it would be up to the storage daemon to ensure everything isn't stored in one place, if that is such a concern) </naive brain dump>)
erictapen has joined #qaul.net
qyliss has quit [Quit: bye]
qyliss has joined #qaul.net
erictapen has quit [Quit: leaving]
<spacekookie> Hmm, see in a way that's kinda already how it works now, except that the storage API is part of the main daemon that does the routing and everything lejonet
<spacekookie> I guess the idea was: what if we didin't need such a big daemon? On a single user system it's not really a big deal, but it feels weird having a daemon run as root and then having to like...write in people's home dirs and chowning the files afterwards
<spacekookie> Otherwise, maybe we do want to just keep the storage components in each service, and expose another slim library that does basically just that (encrypted storage for a user, for a particular service)
<lejonet> spacekookie: well maybe the storage daemon then should only be like the monitor daemon then, it keeps track of where stuff is stored, and then tells whoever asked where X is, to talk to Y, over there?
<lejonet> and then you have the "OSD" part like you said, as a small storage component in each service
link2xt has quit [Read error: Connection reset by peer]
<spacekookie> What's Y then? Another daemon that runs as the respective (system) user?
<lejonet> nah, Y is the storage component of the service
link2xt has joined #qaul.net
<lejonet> Might be an unneeded abstraction in this system, hence naive brain dump part :P
<spacekookie> Hmm, yea idk, I think it's an interesting idea, I'm not really sure how much the storage system should even do because...it's the one thing in the API that doesn't exist yet xD
<spacekookie> But this is interesting stuff to think about! :)
<lejonet> Basically what the abstraction would give you is that a particular service that needs information Y doesn't need to know where Y is stored, nor by whom/how, because that is what the "monitor" knows
<lejonet> so in a way, it would be a local file routing daemon for file requests :P
<spacekookie> Yea, that could work
<spacekookie> I think more interestingly actually is: how do we figure out who runs what actually, as in: right now the whole system has no concept of a system user yet and I'm wondering if it needs it
<lejonet> Yet again naive brain -> a system user is an implementation detail, so unless you somehow want to be able to directly adress the system with qaul messages, I don't see why you'd need one
<lejonet> You'll have the "system users" as the one running the process/es on whatever platform you're running, but dunno if you actually need that mirrored "inside" the system
<spacekookie> Hm, yea. I guess that's one way of implementing this xD
<spacekookie> Which might be complete overkill, but it does solve these issue
<spacekookie> +s
qyliss has quit [Quit: bye]
qyliss has joined #qaul.net
qyliss has quit [Remote host closed the connection]
qyliss has joined #qaul.net
<spacekookie> Hey noracodes I'm wondering if you have a bit experience with poll_fn: I was looking at building an async interface for the native wifi direct stuff, but now I'm in the situation where I need to poll for something that itself has to await (to lock a mutex) and I'm wondering if you know how to use the context
qyliss has quit [Quit: bye]
qyliss has joined #qaul.net
<spacekookie> noracodes: got it xD https://img.pbb.lc/id/4OrKX4ErGw4mzIVx
frigginglorious has joined #qaul.net
frigginglorious has quit [Read error: Connection reset by peer]
frigginglorious has joined #qaul.net
noracodes has quit [Read error: Connection reset by peer]
noracodes has joined #qaul.net
noracodes has quit [Changing host]
noracodes has joined #qaul.net
frigginglorious has quit [Read error: Connection reset by peer]
frigginglorious has joined #qaul.net
pbb has quit [Remote host closed the connection]
pbb has joined #qaul.net