I would like to revive the discussion about a single user pod
installer for Diaspora. Prepare for brain farts.
These are things that I think of when I imagine a single user pod:
1 - can be installed from tarball + script
2 - should use a self-contained database like sqlite3
3 - should not need to have a resque server instance
4 - should run on an unprivileged port
5a - the core should run on as little as router (e.g. 32MB RAM +
400Mhz), the front-end on a desktop
5b - the whole thing runs on ARM (router / raspberry pi)
1+2 are trivial, 3 could require retries when a pod is unavailable or
not responding, 4 and 5 would require massive changes. 4 would require
a change to the webfinger stuff to talk to pods on the unprivileged
port when 80 is not available (meh). 5a seems impossible, but I feel
it's quite important to separate server stuff from front-end stuff. It
would be sweet if the inter-pod communication could be handled by a
small compiled program that runs on a router. A full-blown RoR
installation won't work in this scenario.
My questions:
Do these requirements describe a desirable outcome? If so, who would
be interested to join me in designing and coding a tiny, very
constrained daemon that listens to pod chatter, queues messages and
uses sqlite (or similar) as a database?
-- rekado
Correct. This is the reason for the first point in the list:
> 1 - can be installed from tarball + script
Still, intra-pod communication has not changed much (at all?) in
months, so a project like this could be targeted now.
Best,
Dana Priesing
--
You received this message because you are subscribed to the Google Groups "diaspora-dev" group.
To post to this group, send email to diaspo...@googlegroups.com.
To unsubscribe from this group, send email to diaspora-dev+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/diaspora-dev?hl=en.
To unsubscribe from this group, send email to diaspora-dev...@googlegroups.com.
I think it's a neat idea... I would like to point out that the constraints on hardware seem a bit draconian... Particularly in terms of RAM.
Phones nowadays have more processing power and RAM than that. Plus, just spinning up a single Ruby VM instance is ~40MB. That being said, I've run Rails apps on an old Sun Netra T1 with 400MHz SPARC processor and 512MB of RAM. You can get those refurbed for <$100. So I think coming up with a DVD install of Linux and pre-configured D* would do more for single user pods than optimizing for lowest-end hardware.
Jason
1. make it easier to install/deploy Diaspora (for dev purposes or
running a traditional multi-user pod)
2. make it possible to deploy Diaspora to non-professional hardware
and join the network
What Max, Tom, and Jason said is aimed at (1). Though I realise that
this is important, my intent with this message was to look at (2).
I've repeatedly seen comments on D* expressing the wish to *really*
own one's data by running a simple pod as someone without access to a
VPS or dedicated server. I know that this is not something the core
team should spend time on and that new developer resources should not
be diverted away from contributing to squashing bugs in D*.
Still, I think that the code is reasonably well compartmentalised to
allow for something Raven24 and I proposed. I especially like the idea
of running a caching daemon on a router that handles webfinger
enquiries and caches posts until they can be committed to the database
on the desktop. I think this wouldn't be too difficult to implement as
we would hardly need the RoR stuff to change. A simple installer would
still be needed to get the desktop application running, but the
difficult part of proxying requests from the outside world would be
handled by the router daemon.
It's an additional program, compiled, no ruby, running on ARM under
very tough resource constraints. Anyone with a router running dd-wrt /
openwrt (e.g. Buffalo routers) should be able to install the daemon
and be done with it.
In this light, task 2 is contingent upon task 1. Let's get a simple
ruby installer ready, while I continue to think about the requirements
for the D* daemon in addition. Whoever wants to discuss requirements
for the daemon: post to #RouterDiaspora on D*.
Cool?
Now that this is out of the way, let's talk about the installer.
There really is only MacOS and Ubuntu (representative for any other
GNU/Linux distribution); I don't see the need for a VM image which
would require a lot of maintenance.
On both Mac and GNU/Linux we can use rubygems for handling most
dependencies. For those gems that require native extensions we need
distro packages as rubygems can pollute system library directories
which are difficult to clean up later.
How far should the installer magic go?
Should an installed pod come with a working minimal nginx configuration?
http://github.com/rekado/diaspora-daemon
There's not much to see yet, but you may contribute your ideas on the
wiki or in the form of Haskell code.