Hello GNU-Social,
My name is Adrian and for a long while I have been interested in
distributed social networking. I'm the person behind DSNP, which has
been mentioned here before. DSNP has been a great learning experience
for me, and fun too. At one point I had my immediate family using my
2-node network of social-networking sites.
Unfortunately, it has grown to the point where it's too much work for me
to do alone. Either I must redirect my efforts to another project with
momentum behind it, or stop development. I'm hoping that GNU-Social can
be that other project. For that to work there needs to be some harmony
of design ideals. So here I present mine:
Separating a social application into backend and frontend is the right
approach.
The backend is basically a message distribution system and associated
database that is aware of social concepts. I think we should not be
afraid of designing and implementing a new protocol. A new protocol will
give the maximum freedom to make what we need. Piggybacking on other
protocols means also piggybacking on the design goals and limitations of
those protocols.
The frontnend provides the user's view into the social space. For this
you use a language like PHP.
-Adrian
Henry Litwhiler wrote:
I've said it once, and I'll say it again: PHP is a valid frontend option
for GNU Social, but I would strongly question it's suitability for the
backbone of a project such as this. A small, fast, desktop application
that users run to change settings, and serve out data to other users
could be written in something like Python.
How about such an application runs in the background on all GNU Social
computers (or, because it's been suggested, ARM-based power-outlet-sized
computers) at all times, receiving new posts (if it gets turned off, it
will load everything it's missed from the network) and sending out data.
Rather than having everyone running their own server, with their own GNU
Social PHP install serving data to /everyone/, we could use the PHP
install as a /private/ GUI - users point their browser to 127.0.0.1, and
load up a Facebook-like application with *all* their friends' latest
posts, images, videos, etc.
This particular itch (the need for an easy, extensible GUI) is certainly
best scratched by PHP. But to make PHP the backbone of GNU Social would
be a gross misuse of PHP - it simply isn't designed for (nor is it best
for) such a task, whereas something like Python /is/.
The Python application wouldn't display things to the browser, and I'm
not saying that we use Python to replace PHP's role as our web
application language - instead, we can use it to manage the backend
communications between GNU Social users.
--
Henry L.