Phở Networks, an experiment to create a singularist & truly scalable social platform

The IndieWeb and the Time Well Spent movements both have valid concerns around today’s social media landscape. The social media, today, is:

– Wildly commercial; serving the advertisers’ interests at the expense of consumers’ valuable time and attention.

– Prone to surveillance pressure from governments, e.g. PRISM

– Vulnerable to censorship.

Since the early 2000s, we’ve come a long way with new forms of social media. It all started with blogging. Then we’ve seen several object-centered sociality tools such as Flickr, Youtube and Twitter pop up, while at the same time, a number of multi-dimensional social networks like Friendster, MySpace, Facebook, LinkedIn came to prominence and burst.

Mark Zuckerberg and co seem to be the only ones who have succeeded in building a durable company to weather the seasonality of this world, but the social media evolution has not stopped since then. Snapchat, Instagram, and Sararah are all shreds of evidence that social media is a living tissue that is becoming increasingly granular, purpose-built and diversified.

Perhaps in recognition of this reality, Facebook Inc. just recently changed its mission and finally gave niche communities a wider set of tools to succeed online. But, in my opinion, a monolithic product is not exactly what their target audience had been asking for. A fast-paced domain like social media requires fast-paced solutions that allow one to prototype new forms in no time while ensuring that if it breaks out, it won’t collapse.

Enter Phở Networks. An open source, MIT licensed project that I’ve been personally spending a lot of time on, for almost a year.

– In a nutshell, Phở Networks lets you create independent social media outlets.

– Phở Networks is singularist; because it allows you to create any form of social media, with a simple language that many sysadmins have already familiarized themselves with in the UNIX world; ACL — access-control lists. You may use Phở Networks as your blogging engine, but you can also create a whole new Facebook. Need proof? Just visit the pho-recipes Github repo.

– Phở Networks is lightning fast and massively scalable, because it takes an unorthodox approach as to how it handles data. With Phở, data is stored and served warm right off the RAM, as it is built on top of Redis. With this unconventional RAM-first design choice (in contrast to caching, which most high-scale web sites have opted into), Phở Networks won’t be cheap (for now), but it will be blazing-fast and super low-maintenance by avoiding the limitations of sharding and hard-drive friction.

– And Phở Netwoks is created in GraphQL. When you start using it, you’ll realize creating social media outlets in SQL, with MVC architecture, just like you’ve created static or quasi-dynamic web sites, wasn’t meaningful. After all, those technologies were never meant to be natural to the fabric of social. Here’s a sample GraphQL schema file that defines a Tweet:

# pho-graphql-v1

type Tweet implements ObjectNode
@edges(in:"User:Post, User:Like, User:Consume", out:"Mention")
@permissions(mod: "0x07555", mask:"0xfffff")
@properties(expires: 0, editable: false, volatile: false, revisionable: false)
id: ID!,
content: String! @constraints(maxLength: 140),
create_time: Date! @now

– Last but not least, thanks to its decentralized architecture, Phở can never be censored. Your data is yours.

Phở will also be an opportunity for me to give hundreds of thousands of network creators on Ning and who were left in the cold when both companies were forced to switch to a premium model.

Enough with words. If you have Vagrant installed, giving it a try is as easy as:

vagrant init phonetworks/xenial-php71-pho
vagrant up
vagrant ssh
# now we're in the virtual machine.
cd /opt/pho-kernel
php -a
# now this is PHP shell
include "play.php";

If you like it, please give it a star on Github at, and spread the word. We will be enhancing this with REST and GraphQL API interfaces, so that the stack would be accessible not only by PHP, but universally.


Leave a Reply