Reply vs Comment

There has been discussion in the chatroom regarding the term "Reply" used in #Socialhome, and whether it should be changed to "Comment".

Which do you prefer, "Reply" or "Comment"?

Socialhome HQ

#Hacktoberfest is halfway

There is still time to contribute to #opensource and earn yourself a Hacktoberfest 2017 t-shirt + stickers. All you need to do is sign up on the Hacktoberfest website and make 4 PR's on #GitHub.

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.

Get hacking!

socialhome - A federated social home.

Socialhome HQ

#The #Federation

In the US, these things [#Facebook, #Twitter, #Google] are becoming pure Orwellian Evil and those are things that I am interested in for sure.

I am still uncertain on The Federation as the end goal.


Things do not always federate smoothly (with dropped posts, mis-ordered timelines, pods coming and going) -- and I often wonder how many of the pods are plopped in by security #agencies anyway...


Plus the actual usage is quite low.

The Federation [#Hubzilla, #diaspora, #socialhome, etc] claims more than 650,000 or so users; but that is just "I signed up once" users.

Actual use across this whole mess was 16k users last month. In total.

(It is actually kind of embarrassing to claim 650,000+ users given that).


So ... for me ... the jury is out on The Federation.


[Other #diaspora #nits](/posts/4017fe20166f0135bd7e4986d5cbec7f)


the federation - a statistics hub
Podlist and statistics for The Federation (diaspora*, Friendica, Hubzilla).


Another new contributor to #Socialhome. User tehw0lf contributed a fix to share button visibility when not signed in.

Thanks! ๐Ÿ†

tehw0lf has 2 repositories available. Follow their code on GitHub.

Socialhome HQ

Finally got myself a sane #logging setup. Previously I've been struggling to make any use of my file based logs, which has led to impossibility in debugging production problems in #Socialhome. Basically what I was doing was setting a few rotating log files and logging to them from all processes. What that means is that the log files just rotate so fast (due to many processes) that you don't really have time to catch problems.

While trying to keep things simple, I was losing a lot of valuable information. More users in the system means more unexpected stuff happening.

So now I've moved to sending all application logs from all processes via #rsyslog to an external service. Right now trying Loggly, which wasn't as easy to set up as they claimed, but is quite nice once done. Good filtering, easy to narrow down on interesting stuff. Great improvement, can squash those random #federation payload processing bugs now :)

Any good recommendations on logging services or good self-hosted logging aggregator apps to set up?

#sysadmin #selfhosted

Jason Robinson

#Socialhome gets it's fourth contributor ๐ŸŽ‰

Thanks to Piotr Orzechowski for contributing installation instructions for developing on #Alpine #Linux. We hope this means more PR's coming up ;)

Socialhome HQ

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.

New features

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.

Stream precaching

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?

GIF uploads

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

Vue.js streams

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.

Docker images

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.

#changelog #news #socialnetwork #thefederation #selfhosting

Rewrite streams in Vue.js ยท Issue #202 ยท jaywink/socialhome
See high level description at http://socialhome.readthedocs.io/en/latest/roadmap.html#vue-js-app-s Streams currently implemented features below which need to be replicated on the Vue.js side. Tick ...

Socialhome HQ

More interesting posts?

If someone wants to help with contributing more interesting posts for this account, please see the repository here. Maybe a good idea to come and chat about ideas first on IRC, for example, or use the github issues. Contributions welcome!

The post code is relatively simple and can be found here: https://github.com/jaywink/the-federation.info/blob/master/src/social.js

Some ideas:

  • Software stack comparisons
  • Year on year changes
  • Less often looked at stats like new user signups, new comments, etc
  • 10 largest nodes
  • Adding graphs to the posts (Socialhome has an image upload API that allows embedding images to posts)

#thefederation #diaspora #friendica #hubzilla #ganggo #socialhome

the-federation.info - Statistics hub for The Federation

The Federation

It looks like I have to start speeding up the block #feature ๐Ÿค”


Jason Robinson

Sunday project: Huginn, Docker & Ansible

Some time ago I set up a #Twitter account posting #WWII "as it happened" events to #Socialhome (see here). This was accomplished using Zapier that reads the tweets and then POST's to the Socialhome API.

All that worked great and #Zapier is really nice. Except it's limited to 100 events per month on the free tier and this seems wasn't enough for the WWII tweets coming in. Zapier paid plans are from $20/mo which is way too much just to replicate some tweets.

At first I thought about making my own app to do all this but then I remembered running into Huginn, which I have been wanting to install anyway. It's basically a self-hosted #IFTT or Zapier, but allowing for even more complex stuff like unlimited chaining of events.

Docker + Ansible

I'm pretty new to #Docker but eventually I want to dockerize more of my apps. So of course I was happy to see #Huginn has a Docker image, allowing me to not have to muck about with any more #RoR apps. I use #Ansible for pretty much everything, so it made sense to build a playbook to deploy the app in a Docker container.

Luckily (or thanks to the fantastic Ansible team that is!), maintaining Docker containers with Ansible is as easy as doing anything else with it.

I chose to keep the web server out of the containers to use my standard #LetsEncrypt role for getting SSL on top. This made the role very simple, having only to 1) fetch SSL cert, 2) set up Apache to proxy and 3) push up a container.

The docker_container Ansible module call is basically just this:

 - docker_container:
   name: huginn
   image: huginn/huginn
     - "{{ huginn_db_volume_mount }}:/var/lib/mysql"
     APP_SECRET_TOKEN: "{{ huginn_secret }}"
     DOMAIN: "{{ huginn_domain }}"
     FORCE_SSL: "{{ huginn_https}}"
     INVITATION_CODE: "{{ huginn_invitation_code }}"
     MAIL_FROM_ADDRESS: "{{ huginn_mail_from }}"
     RAILS_ENV: production
     SMTP_DOMAIN: "{{ huginn_smtp_domain }}"
     SMTP_PASSWORD: "{{ huginn_smtp_password }}"
     SMTP_PORT: "{{ huginn_smtp_port }}"
     SMTP_SERVER: "{{ huginn_smtp_server }}"
     SMTP_USER_NAME: "{{ huginn_smtp_username }}"
     TWITTER_OAUTH_KEY: "{{ huginn_twitter_key }}"
     TWITTER_OAUTH_SECRET: "{{ huginn_twitter_secret }}"
   register: _docker_huginn

The container IP is then picked up from _docker_huginn by Apache to do the proxying.

The playbook itself, without any extra customization is pretty much here:

 - hosts: myhost
   become: yes
   become_user: root

     letsencrypt_email: youremail@example.com
     huginn_domain: huginn.example.com
     huginn_invitation_code: changeme!
     huginn_secret: changeme!

     - huginn

The result is the ansible-huginn role. Tested on #Ubuntu 14.04. Right now a bit limited in terms of configuration that can be passed in. Will expand as necessary.

Fun Huginn stuff

Some initial things I want to do is to use the chaining to make the tweet replicating not embed the tweet, but instead rip out the text + media and create a normal post instead. That should make for cleaner streams with less Twitter JS firing off.

Any tips on fun stuff to do with Huginn?

huginn - Create agents that monitor and act on your behalf. Your agents are standing by!

Jason Robinson

Socialhome client shcli now available as a Snap

shcli allows creating content using either the command line or #Python API. Now in addition to installing from PyPi, it's available as a #Snap.

If on a recent #Ubuntu desktop or server, just do sudo snap install shcli and start posting. On the desktop you can also use the software manager to install it as any other package.

On other systems, for example #Arch, #Debian, #Gentoo, #Fedora, #OpenSUSE, #OpenEmbedded, #Yocto, #OpenWRT and #Solus, install the Snap daemon first.


Socialhome HQ

Testing #Socialhome #Python client shcli #snap package. Hello, world! This time in strict confinement :P

Jason Robinson

Testing #Socialhome #Python client shcli #snap package. Hello, world!

Jason Robinson