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.
#Hacktoberfest is halfway
To help potential contributors to #Socialhome, we've tagged a bunch of easy to approach issues in our issue tracker with the 'hacktoberfest' label. Check them out! We have a friendly chat room where you can get help or more information.
Socialhome version 0.5.0 released
Approximately one month since the previous release, #Socialhome 0.5.0 is out with 102 changed files, 2870 insertions and 999 deletions by 2 contributors.
For users there are only a few features added in this release, most of the work being internal refactoring and work in preparation for future features.
Please see the full changelog here.
A few notes on feature highlights.
Shares in streams
Shares are now pulled up to the "Followed" stream. What this basically means is that when a person you follow shares something authored by a person you don't follow, the post will be pulled up in your stream by the share action.
Generally, you should only see a single post once. If you follow the author whose content was shared, that content has already been in your stream, and thus a share will not repeat it. Note however that since stream pre-calculation is a new thing, it is possible that content seen in the stream before this feature was added will pop up in a new share once more.
There are still some things to do for shares, these are being tracked in this issue.
Related to "shares in streams", there was a lot of refactoring work to create the new base for how all streams function. This includes unifying lots of code and rewriting it so that in addition to pulling content out of the database, we can "precalculate" streams. This is done to ensure streams load super fast even if the calculations on what content the stream has are heavy.
The only stream that is currently precached is the "Followed" stream. Precaching means it will load as fast as the public stream even though we now include shares by non-followed users and include them only once - which would be a heavy calculation to do without precaching. The real benefit will come when custom user defined streams are available.
How would you like to configure the content in your stream?
Yes, we love GIF's <3
Links in content
All links in content (whether textual, markdown or HTML) are now treated equally. They will all be used as candidates for OEmbed/OpenGraph fetches and all will be processed to add a
target="_blank" to the link, forcing it to open in another tab/window.
Stream URL changes
All stream urls now live under
/streams/, so for example followed stream is
/streams/followed/. The old url's should still work until they are needed for something else.
Features coming up
Christophe Henry has been hard at work rewriting the current Django template + #jQuery based streams in #VueJS. The status of that work can be tracked here. We're hoping to replace the current stream frontend with the Vue streams within the coming months. This will drop a lot of legacy code and speed up development of new features, and will also mean our #API is fully complete for the stream features.
ActivityPub protocol support
This is still something we want to do as soon as some of the basic features are first implemented. Currently it looks like having it before the end of the year is slightly optimistic, but federating with for example #Mastodon using #ActivityPub will be a strong priority to get early next year.
There has been some work on #Docker images to run a Socialhome instance. Will post more info as they are ready.
What is Socialhome?
Socialhome is best described as a #federated personal profile with social networking functionality. Users can create rich content using Markdown. All content can be pinned to the user profile and all content will federate to contacts in the federated social web. Currently #federation happens using the #Diaspora protocol. Federating using existing protocols means Socialhome users can interact with tens of thousands of other users.
Please check the official site for more information about features. Naturally, the official site is a Socialhome profile itself.
Official site: https://socialhome.network.
Want to work on a #Django and Vue.js powered social network server? Join in the fun! We have easy to follow development environment setup documentation and a friendly chat room for questions.
socialhome - A federated social home.
shcli now available as a Snap
100 users ✌
the federation - a statistics hub
Podlist and statistics for The Federation (diaspora*, Friendica, Hubzilla, GangGo, Socialhome).
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!