Socialhome allows you to build a rich profile that federates across the federated social web. Your content will be available to tens of thousands of users that you can also follow and interact with their content.
The code is hosted on GitHub under the AGPLv3 license.
Create an account and create some content!
Please note however that the software is in early stages and does not support the whole set of features that are planned. If you feel something is missing or should work differently, please get in touch! You can chat to us via GitHub issues, IRC, Gitter or Matrix chat.
Content in Socialhome is visualized in a grid. A WYSIWYG editor is available for creating rich Markdown content. Edit is supported, also through the federation layer. Images can be embedded inline with text.
In addition to Markdown, special trusted users can use full HTML/JS/CSS to edit content.
All content grids are streams in Socialhome. The public stream shows all available public content available from all users, local and remote.
Additionally each user home page is a stream of content pinned to the profile page by the user.
Tag streams show all the content that contains a certain hashtag.
All content is equal, including user profile page content. Any type of content created by a user can be pinned as permanently visible in the user profile. The pinned content can then be arranged by the user in the order they wish.
This profile content is still normal content as any other content in the system. It will federate and it can be replied to.
Socialhome doesn't make a distinction between profile and other created content. All profile content you create can be pushed via the federation layer to other nodes in #TheFederation.
Socialhome is missing features and needs a lot of polish on the UI side. If you are familiar with #Django (or want to learn!) and are interested in getting involved, please don't hesitate to get in touch!
For guidelines how to contribute, please first read our contributing documentation.
Proudly powered by Django
A picture is worth a thousand words
#Socialhome really shines with image based content. Plan is to also have the possibility to view any stream with just the images it contains.
shcli now available as a Snap
100 users ✌
the federation - a statistics hub
Podlist and statistics for The Federation (diaspora*, Friendica, Hubzilla, GangGo, Socialhome).
#Socialhome v0.4.0 released
The focus of work lately has been implementing missing features for proper daily usage. One of these is allowing users to share content created by other people. This is now partially possible. Remote shares are now processed and users are able to create shares, but shares are not yet themselves taken into account when creating a stream. Will write another post related to the status with shares and how they will function.
Check out the release here: https://github.com/jaywink/socialhome/releases/tag/v0.4.0
Registrations are open at https://socialhome.network . Please be aware some features are still missing, but otherwise the software is very stable. Let us know what you think if you decide to try it!
This release contains long running migrations. Please allow up to 10 minutes for the migrations to run, depending on your database size.
Allow user to change profile picture. (#151)
Profile menu now has an extra option "Change picture". This allows uploading a new picture and optionally setting focus point for cropping a picture that is not square shape.
Federate local profiles to remote followers on save. (#168)
Process remote profiles entities on receive.
Remote profiles were so far only created on first encounter. Now we also process incoming
Profileentities from the federation layer.
When following a remote profile, federate profile to them at the same time.
It is now possible to expose statistics from a Socialhome node. This includes counts for users (total, 30 day, 6 month), local content and local replies. These will be exposed via the
NodeInfodocuments that for example the-federation.info node list consumes.
By default statistics is off. Admins can switch the counts on by setting environment variable
SOCIALHOME_STATISTICS=Trueand restarting Socialhome.
Add user API token view. Allows retrieving an API token for usage in clients and tools. Allows also regenerating the token if it has been lost or exposed.
Added bookmarklet to easily share external pages. The bookmarklet can be bookmarked from the 'Create' page. (#138)
Sharing with the bookmarklet will copy the page url, title and optionally selected text into the create content text area. The bookmarklet is compatible with Diaspora, so for example the Firefox sharing service will work.
Support receiving 'Share' entities. Show amount of shares on content. (#206)
Show replies to shares on the original shared content. (#206)
shareendpoint to Content API. This enables creating and removing shares via the API. (#206)
Allow sharing content. Clicking the share counter icon exposes a 'Share' button which when clicked will create a share. (#206)
Allow unsharing content. Clicking the share counter icon exposes an 'Unshare' button (assuming the user has shared the content) which when clicked will remove the share. (#206)
Federate local shares to remote nodes. (#206)
There is now a 'My content' stream link in the navbar 'Streams' dropdown. This goes to your own profile all content stream.
Add user preference for the new stream refactoring. If enabled, all streams that have a new version in progress will be rendered with the new frontend code based on Vue.js. (#202)
Warning! The new frontent code doesn't have all the features of the current on yet.
Content API has three new read only fields available:
local, boolean whether the content is local or remote.
reply_count, count of replies (including replies on shares)
shares_count, count of shares
Make email notifications nicer by using HTML templates in addition to the plain text version. (#206)
In addition to reply and follow notifications, send also when own content is shared.
- Breaking change. Content API results now return
visibilityas a string ('public', 'limited', 'site' or 'self'), not an integer.
- There was no notification sent out when a local user followed a local user. This has now been fixed.
Breaking change. Removed Content, Profile and Users API LIST routes. For now these are seen as not required for building a client and allow unnecessarily easy data mining.
Removed content modal. Clicking timestamp in grid now directly loads the content detail view. (#162)
Loading the content in a modal was an early experiment and didn't end out very usable.
Removed reply button from replies. Technically, threaded replies are possible but the UI implementation is not done. Replying to a reply will be back once UI and federation layer will handle threaded replies properly.
socialhome - A federated social home.
How to: creating content via
Socialhome has an API which covers most of the use cases for building a client. There is also a Python library/cli client that allows creating content over the API. This is a short introductory on how to use that.
shcli requires Python 3.4+. The client has only been tested on Linux, though it should work on Windows and Mac too. The only real dependency it has is the
Create a Python environment
shcli in a virtualenv or globally, depending on your use case. For desktop users, a global installation makes sense.
Install virtualenv for your system and create a Python 3 virtualenv and activate it.
Ensure you have a compatible Python 3 version of
pip installed. For example on Ubuntu, this would be the
pip install shcli
Globally (for example on Ubuntu):
sudo pip3 install shcli
Phew, now we're past the hard part.
Get API token
Go to your Socialhome account profile and find
API token from the profile menu. Copy the token for later use. If you ever lose it, this is the place to generate a new token.
Using the tool is easy. It currently only allows creating content, so commands and options are not plenty. More will be added in the future.
The client takes a command, a domain, a token and then parameters for text and visibility. The domain is your Socialhome account domain (for example
socialhome.network) and token the API token copied in the previous step. To protect the token, the client always uses a HTTPS connection. This is why the protocol is not given in the command.
shcli create socialhome.network 1234567890abcdefg \ -t 'Hello world!' -v public
For complex creations, the client can retrieve the text from a file. Instead of
-t, pass in the file name with the
-f parameter. Visibility can be one of
That's it pretty much! The response will be either the created content as JSON or some kind of error, if something went wrong.
You can also use the API through Python by importing
shcli.create and passing in the same arguments as for the cli
The repo for
shcli is on GitHub licensed under MIT.
Socialhome is now on The-Federation.Info
On a related note. We don't have a logo. Anyone want to contribute one? Fame and fortune will be yours! <3
the federation - a statistics hub
Podlist and statistics for The Federation (diaspora*, Friendica, Hubzilla).
Profile picture update lands!
Even though we like seeing more and more #Django ponies in the stream, we recognize users might want a slightly more personal picture for their profile. So, finally, you can set your own profile picture! Changing the picture also updates it to your remote followers through the #federation layer.
Access the profile picture upload page through the drop-down in your profile. First upload an image, after which it is possible to set a center point for the automatic crop that happens. All profile images are square shape, but your uploaded image doesn't have to be.
This addition is available in the development branch and on https://socialhome.network which runs on the development branch.
Socialhome HQ - Socialhome
Chat with us on #Matrix
Here are some buzzwords from our technical stack: #Django, #Channels, #Bootstrap 4, #jQuery, #Masonry, #RQ, #PostgreSQL, #uWSGI, #Circus, #Mocha, #federation, #Haystack, #Whoosh. And coming up, #VueJS.
#Socialhome image uploads are now available on mobile browsers too. Previously it was only possibly to drag'n'drop an image into the editor. Now you can embed in place by using the new "camera" icon.
This change is in the development branch and will be in the next release. The official public server https://socialhome.network runs on the development branch.
Btw, profile picture upload is almost ready, coming soon!
Socialhome HQ - Socialhome
Profile search lands in development branch
There is now a global #search in the right side of the header. The search returns matches for local and remote profiles based on their name and username part of the handle. Profiles marked with visibility "Self" or "Limited" are excluded from the search results. Profiles marked with visibility "Site" will be excluded if not logged in, leaving only public profile results. If a direct match happens with a full handle, a redirect is done directly to the searched profile. When searching for profiles based on handle, profile is fetched from remote if it isn’t found locally.
IMPORTANT for node maintainers. After pulling in this change, you MUST run the command
python manage.py rebuild_index to create the search index. Not doing this will cause an error to be raised when trying to search. The indexes are kept up to date automatically after running this command once.
The future of search
In addition to profiles, search will be coming for tags and content too. There are some ideas how to represent the global search results page with these different kinds of items. It could be something like this:
In this #mockup, we break the results into their own result areas, making it easier to locate the result you were looking for. The profile and tags results would have pagination and the content grid below would scroll down, loading more results. This would make the search a kind of dynamic stream.
Opinions on this and searching social content in general welcome!
Test Socialhome at https://socialhome.network . This node follows the development branch and will always have the latest merged in features.
Socialhome HQ - Socialhome
One of the central parts here is replacing the current streams with a #VueJS app, for performance and code architecture reasons.
This is a living draft that will be updated as time goes. Feedback welcome, especially from Vue hackers!