Difference between revisions of "Friendica"
(→Roadmap) |
m (→My first addon) |
||
Line 92: | Line 92: | ||
I decide to give the first one a go to start with and created a small addon that accepts the basic format of URL and if there's no module of that name and there is a user of that name, it redirects the browser to that user's profile page with the profile tab selected. | I decide to give the first one a go to start with and created a small addon that accepts the basic format of URL and if there's no module of that name and there is a user of that name, it redirects the browser to that user's profile page with the profile tab selected. | ||
− | Here's the code for my ''shortprofileurls'' addon: | + | I used the ''init_1'' hook (hooks listed [https://github.com/friendika/friendika/wiki/Plugins here]) which is called early on but after the database is established. Here's the code for my ''shortprofileurls'' addon: |
{{code|<php>function shortprofileurl_install() { | {{code|<php>function shortprofileurl_install() { | ||
register_hook('init_1', 'addon/shortprofileurl/shortprofileurl.php', 'shortprofileurl'); | register_hook('init_1', 'addon/shortprofileurl/shortprofileurl.php', 'shortprofileurl'); | ||
} | } | ||
− | |||
function shortprofileurl_uninstall() { | function shortprofileurl_uninstall() { |
Revision as of 14:09, 16 August 2012
A distributed social network is an Internet social network service that is decentralised and distributed across different providers. The emphasis of the distribution is on portability, interoperability and federation capability. It contrasts with social network aggregation services, which are used to manage accounts and activities across multiple discrete social networks.
Open standards such as OAuth authorisation, OpenID authentication, OStatus federation, XRD metadata discovery, the Portable Contacts protocol, the Wave Federation Protocol, OpenSocial widget APIs, microformats like XFN and hCard, and Atom web feeds—increasingly referred to together as the Open Stack — are often cited as enabling technologies for distributed social networking.
A few social networking service providers have used the term more broadly to describe provider-specific services that are distributable across different websites, typically through added widgets or plug-ins. Through the add-ons, the social network functionality is implemented on users' websites.
Installation
We've tried very hard to ensure that Friendika will run on commodity hosting
platforms - such as those used to host Wordpress blogs and Drupal websites. But be aware that Friendika is more than a simple web application. It is a complex communications system which more closely resembles an email server than a web server. For reliability and performance, messages are delivered in the background and are queued for later delivery when sites are down. This kind of functionality requires a bit more of the host system than the typical blog. Not every PHP/MySQL hosting provider will be able to support Friendika. Many will. But please review the requirements and confirm these with your hosting provider prior to installation. Before you begin: Choose a domain name or subdomain name for your server. Put some thought into this - because changing it is currently not-supported. Things will break, and some of your friends may have difficulty communicating with you. We plan to address this limitation in a future release. Also decide if you wish to connect with members of the Diaspora network, as this will impact the installation requirements. Decide if you will use SSL and obtain an SSL cert. Communications with the Diaspora network MAY require both SSL AND an SSL cert signed by a CA which is recognised by the major browsers. Friendika will work with self-signed certs but Diaspora communication may not. For best results, install your cert PRIOR to installing Friendika and when visiting your site for the initial installation in step 5, please use the https: link. (Use the http: or non-SSL link if your cert is self-signed). | |
— Friendika team |
Our installation
Installation looks quite straight forward, but involved a little bit of difficulty because it uses URL rewriting but we already have rewriting activated for other sites, and we have .htaccess files diabled, so I had to add our own section in our Apache configuration instead.
There was one difficult problem which took a while to figure out. The problem was that when the naked domain was requested, the site would load but would have a "page not found" message in the main content area. After talking to some very helpful people in the #friendica freenode IRC channel, I created a log file and enabled maximum logging by adding the following to the .htconfig.php file:
Then after going to the naked domain the following error was reported in the log:
This indicates that the naked domain is somehow resulting in a request filename of index.html, which is strange because our default index file is set to index.php. But this log entry at least shows us a workaround that can be done until the real problem is discovered, which is to simply ignore the /index.html portion of the filename if it exists, which is why the following rule was used in the rewrite configuration:
DRFN
DFRN provides the means for people to conduct online social network activities without requiring a central website (such as MySpace, Facebook, etc.). These web companies quite literally own the personal communications and online friendships of hundreds of millions of people.
Why is this a problem? Because we don’t know that these companies can be trusted to do “the right thing” with our private information – because we aren’t their customers, advertisers are their customers. Our goal is take back our personal relationships and privacy and create an open social web where our communications belong to us.
The DFRN (pronounced dee-fern - Distributed Friends & Relations Network) framework provides the communication basis for a decentralised social network - where cooperating servers share information on your behalf while operating in a web of trust relationships you control. It can provide a “Facebook-like” experience without requiring a central company or server.
The goal of DFRN is to provide an open and distributed social communication platform with server requirements comparable to that of a typical hosted blog. Instead of a central server, a collection of distributed 'cells' or 'nodes' are able to communicate with each other on your behalf.
In recent years, the use of centralised social networks has come under a good deal of scrutiny over privacy and trust issues. The centralised model offers some technical advantages over a distributed network, but at a price of giving up personal control of private communications and data to the central provider.
Zot!
When the team started building Friendika a year ago, there were no computer protocols for privacy-aware social networking on the web. A group of people were trying to build social networking on the "open stack" - which is a set of protocols originally conceived to add capabilities to blogs. But these didn't have any way of handling privacy. Also around that time, the Diaspora project started their own work on a privacy-aware social network and as best as can be determined - tried to find a way to secure the open stack. This protocol has never been formally published.
We set out to build a privacy enhanced social network, and decided that the unique requirements of a decentralised conversational network coupled with privacy issues surrounding member profiles necessitated a new mode of privacy-enhanced communication - and hence a new protocol. We created DFRN to address the short-comings of existing systems.
DFRN works well - but since we started with nothing, we over-engineered the privacy capabilities. This is OK, because it's much better to over-engineer them than to under-engineer them - as we saw happening in similar projects. But we've now had a year to work with DFRN, and we feel we can do it better. We can also do it a lot simpler - which makes it easy for other projects to integrate. Currently Friendika has communication links with many networks, but no other networks have secure communication links with Friendika. We've got a rather high barrier to entry, and that is mostly due to the difficulty in implementing the somewhat unwieldy DFRN protocol.
Zot! is a streamlined privacy protocol for social networking, drawing on all the strengths of DFRN, but reduced down to the bare essentials. We still provide RINO node-node message encryption. We still provide dual authentication of every communication before it is allowed. We still provide seamless remote-login to turn decentralised server nodes into one large but private space - with your own privacy rights extended to the farthest node.
It's just leaner and meaner.
We're re-writing the spec at this moment and this will soon be published - and like DFRN, released publicly and given to the public domain. We feel that the ability to communicate and share privately and securely is so critical to the future of the web that nobody should ever be allowed to own it.
Then we will start working on the Zot! server.
Roadmap
Friendika is one of the only distributed social projects which has a notion of security and privacy and access control. It isn’t an afterthought. Mistpark was designed from the ground up to support private communications. Nevertheless there are other distributed social projects. A large number of developers from around the globe are working on something known as the “Federated Social Web” – including development teams such as Status.net, Diaspora, OneSocialWeb, SocialRiver, BuddyPress.
My first addon
I'm setting up a Friendica site for a project I work with who wanted a couple of specific requirements from their social networking platform. Friendica seems to fit all their needs except for these two requirements,
- they want users profile pages including contact details to be available from a simple domain/username URL format
- they want a specific form containing inputs for Skype, Facebook etc where they enter their contact details
I decide to give the first one a go to start with and created a small addon that accepts the basic format of URL and if there's no module of that name and there is a user of that name, it redirects the browser to that user's profile page with the profile tab selected.
I used the init_1 hook (hooks listed here) which is called early on but after the database is established. Here's the code for my shortprofileurls addon: