55
 85

Socialhome HQ

hq@socialhome.network

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

We apologize for the recent outages during the last few days. Experiencing some problems with the server. Hoping to identify the root cause soon and fix.

#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

Try it!

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!

Participate

Are you a #Django, #Python or #VueJS coder? Want to build a social network? Check out the contribution guide and get in touch!

Changelog

Update notes

This release contains long running migrations. Please allow up to 10 minutes for the migrations to run, depending on your database size.

Added

  • 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 Profile entities 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 NodeInfo documents 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=True and 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)

  • Add share endpoint 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.

Changed

  • Breaking change. Content API results now return visibility as a string ('public', 'limited', 'site' or 'self'), not an integer.

Fixed

  • There was no notification sent out when a local user followed a local user. This has now been fixed.

Removed

  • 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.

#thefederation #federation

jaywink/socialhome
socialhome - A federated social home.

How to: creating content via shcli

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 requests library.

Create a Python environment

Either install shcli in a virtualenv or globally, depending on your use case. For desktop users, a global installation makes sense.

Virtualenv

Install virtualenv for your system and create a Python 3 virtualenv and activate it.

Global install

Ensure you have a compatible Python 3 version of pip installed. For example on Ubuntu, this would be the python3-pip package.

Install shcli

Virtualenv:

 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.

Post stuff!

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.

An example:

 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 public, limited, self or site.

That's it pretty much! The response will be either the created content as JSON or some kind of error, if something went wrong.

Python API

You can also use the API through Python by importing shcli.create and passing in the same arguments as for the cli create command.

Code

The repo for shcli is on GitHub licensed under MIT.

#socialhome #howto #python #api

First part of upcoming #VueJS rewrite of #Socialhome streams merged in. Thanks, christophehenry!

Down with #jQuery, bring up the modern JS stack!

Socialhome is now on The-Federation.Info

You can now find and track #Socialhome nodes on https://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 #changelog #devdiary

Socialhome HQ - Socialhome

Socialhome v0.3.1 released

In addition to new features and bug fixes, this release has several #security fixes for the way inbound remote #federation payloads are handled, especially regarding content update. All #Socialhome instances that we know of have been updated to this release.

Full changelog:

0.3.1 (2017-08-06)

Fixed

  • Bump federation library again to fix a regression in reply relaying due to security fixes in the library 0.14.0 release.

0.3.0 (2017-08-06)

Security

  • Reject remote content updates via the federation layer which reference an already existing remote content object but have a different author.

    Note that locally created content was previously safe from this kind of takeover. This, even though serious, affects only remote created content stored locally.

  • Reject remote reply updates via the federation layer which try to change the parent content reference.

  • Bump federation to ensure remote entity authorship is verified correctly.

Added

  • API has two new endpoints, the "Content" and "Image Upload" routes. (#120)

    • Content API allows browsing content objects that are visible to self, or public for anonymous users. Content objects owned by self can be updated or deleted. Creating content is also possible.
    • Image Upload API allows uploading images via the same mechanism that is used in the content create UI form. The uploaded image will be stored and a markdown string is passed back which can be added to content created in for example mobile clients. Note, uploading an image doesn't create any content itself, it just allows embedding images into content, just like in the UI.
  • New API docs exposed by Django REST Swagger. These are in the same place as the old ones, at /api/. Adding to the documentation is still a work in progress.

  • Add image upload button to the create/reply editor. This makes it possible to upload images from mobile browsers. (#120)

  • Make profile "following" button link to "following contacts" page, if user is logged in and own profile.

Changed

  • Create and update content will now redirect to the content created or updated. Previous behaviour was user preferred landing page.
  • Delete content will now redirect back to the page where the delete was triggered from. Previous behaviour was user preferred landing page. If the content delete is triggered from the content detail page, redirect will happen to user preferred landing page as before. (#204)

Fixed

  • Fix internal server error when replying to content that contained only characters outside the western Latin character sets.
  • Visual fixes for content rendering in content delete page.
  • Make direct profile handle search survive extra spaces before or after the searched handle.

#thefederation #changelog

jaywink/federation
Python library for abstracting social federation protocols

Chat with us on #Matrix

We've now a #socialhome:matrix.org room on Matrix too, in addition to our IRC and Gitter rooms. All these rooms are bridged, so you only need to join one to talk to participants in all three.

#Django developer?

Want to help build a cool social network site that federates with #Diaspora, #Friendica, #Hubzilla, and in the future #Mastodon too? Come talk and join in, help is required!

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

#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!

#devdiary #changelog

Socialhome HQ - Socialhome

Nice to see some discussion starting to happen in our #Gitter and #IRC chats (which btw are bridged). Come join in if you have questions or comments regarding #Socialhome, or are just interested in following discussion regarding the project.

Gitter: https://gitter.im/socialhome/Lobby

IRC: #socialhome on Freenode (or webchat)

socialhome/Lobby
Where developers come to talk.

Socialhome v0.2.0 released

I think we said "release every few months".. It's been 3 days, so might as well :)

This release contains among the search feature and bug fixes, a #security fix for an XSS issue that was just discovered. If anyone is running a node that we don't know of, please upgrade your version ASAP.

https://github.com/jaywink/socialhome/releases/tag/v0.2.0

Full changelog:

Security

  • Fix XSS vulnerability in profile edit. Unsanitized profile field input was allowed and one place showed a field without escaping it. The fields are now sanitized and escaping has been ensured.

    The problem concerned only local users and not remote profile fields which were correctly sanitized already.

Added

  • Added search for profiles (#163)

    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.

    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.

  • When searching for profiles based on handle, fetch profile from remote if it isn’t found locally (#163)

Changed

  • Improved content/reply create/edit form. Replies don’t contain visibility or pinned form elements any more. Added also some help texts regarding drag’n’drop image embed, visibility and content pinning.

Fixed

  • Make reply notifications to local users not send one single email with all local participants, but one email per participant. Previous implementation would have leaked emails of participants to other participants.

  • Correctly send replies to remotes (#210)

    If parent content is local, send via the relayable forwarding mechanism. This ensures parent author signs the content. If parent author is remote, send just to the remote author. The remote author should then relay it.

  • Ensure calling Profile.private_key or Profile.key don’t crash if the profile doesn’t have keys. Now the properties just return None.

  • Fix regression in profile all content stream load more functionality. (#190)

  • Filter out “limited” visibility profiles from API list results. These profiles are not available in the search so they shouldn’t be available to list through the API either.

#socialhome #changelog

jaywink/socialhome
socialhome - A federated social home.

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!

Where?

Test Socialhome at https://socialhome.network . This node follows the development branch and will always have the latest merged in features.

#socialhome #devdiary #changelog

Socialhome HQ - Socialhome

Socialhome v0.1.0 released

The plan was to start doing releases either when 1) enough features are implemented to satisfy a certain level of use or 2) when the first non-project instance is running.

Since the latter happened (yay!) yesterday, I decided to push out the first initial release of #Socialhome today. The first version 0.1.0 includes the following main features:

  • Streams (followed, public, profiles)
  • Content creation
  • Content OEmbed / OpenGraph previews
  • Replies
  • Follow/unfollow of profiles
  • Contacts list
  • Pinning content to profile

The rationale of moving to releases is that other node maintainers will have an easier job running their node. A changelog will be kept for any noteworthy changes that users or node maintainers should be aware of. Releases will happen probably every few months, depending on what lands in master branch.

If you run an instance following the master branch, please keep an eye on the changelog for any important changes when pulling in fresh code.

Interested in trying Socialhome or participating?

#federation #thefederation

Socialhome HQ - Socialhome

Congrats to @{Erik; vertex@pod.togart.de} for setting up the first (that we know of) non-project #Socialhome instance 😍🌟

Welcome to the club, social.togart.net!

Started a #Roadmap section in our documentation. Below the high level architecture of current and possibly future #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!

Thanks @{Augier; augierle42e@diaspora-fr.org} for the good discussion regarding this in our little #Helsinki #hackathon at the Anders office a few weeks back, and for kicking off this mammoth task 🍻

Contact management lands

You can now access contacts you follow via the navbar "Contacts" menu item. This allows visiting contact profiles and unfollowing them. Check it out and let us know of any improvement ideas!

Next will add contact search. Will also add a "followers" contacts version at some point in the future.

About the following model

Socialhome following is done the way it works on #Twitter, ie the asymmetric model. This is why we call it "following" instead of "sharing" as in #Diaspora. There is no requirement of creating a social connection with someone to share with them. Following basically just means "I want to see this persons posts in my followed stream". It doesn't give the followed person any extra visibility to your posts or profile.

In the future once non-public content support lands (currently everything is "public"), there will be a way to manage aspect like groups for purely targeting content. Adding a person to this kind of list is separate from following. In other words, you don't need to follow someone to include them in a contact list. This is the "sharing" side that for example Diaspora has included in the "follow" side.

The contact management page will be refined as different kinds of contacts are available. Currently there are only "people I follow" and "people who follow me".

Where?

Give Socialhome a try at https://socialhome.network

#devdiary #changelog #socialhome

Socialhome HQ - Socialhome

Followed stream is here!

Finally! The most basic feature of them all, seeing what the people you're interested in are writing about, has finally landed in #Socialhome. Why did it take this long? Well, before this many things had to be implemented, for example contacts on the #federation layer and actually following people in the UI.

Additionally, added a preferences screen for users. There is one preference available at the moment, choice of landing page. When logged in, users used to always see their own profile. Now you can choose what page you want to see when you log in or click the navbar logo. Tip: if you change it to a stream, access your profile via the "My Profile" link in the navbar.

Currently "profile" is the default (to keep old behaviour). I'm thinking of making the "followed" stream the default (which mimics what you see on other networks normally). Opinions?

Next: contact management! Have a feature that would make Socialhome more useful to you or make you want to try it? Let me know!

#devdiary #changelog

Following (top) and follower (bottom) counts now in the profile panel, for local profiles.

For self, these will be soon links to contact management pages. When viewing other profiles, they are just text, since we don't want to show other people who is following who.

Opinion: should there be a user setting to hide these counts?

Next: Contact management and stream of contacts content.

#socialhome #devdiary #changelog

#Socialhome will participate in the #EFF action day for #NetNeutrality July 12th.

https://github.com/jaywink/socialhome/commit/0d15d7e37aec58d5b73412e08f1d135995f0c0e3

Challenging all #webmaster's out there to do the same!

More info here.

Add EFF action day for Net Neutrality on 12th July code · jaywink/socialhome@0d15d7e

Profile content stream + minor redesign

Added now a new "All content" stream for each profile. This can be found in the user profile. It is always rendered by default if the profile is remote or is a local profile with no pinned content.

Also related to this a minor redesign of the profile page. The "stamped" area with profile information is now centered with two columns on xl-large screens, two columns on left for large screens and full-width on medium or smaller. It now has a user actions drop-down for modifying settings or profile content, and for other user profiles there are the home/follow/unfollow buttons as in stream content.

The navbar also received a rewrite as bumping a #Bootstrap 4 alpha version broke things again.

Feedback

Would love to receive feedback on the usefulness of the profile stream, or streams in #Socialhome in general. If you have tried Socialhome, did you find the grid layout useful or confusing?

It is likely the design will live quite a bit in the future. The current one was really a "let's try this" idea which still needs to be proven. Underneath the code is starting to suffer from "spaghetti code" problems with lots of #jQuery events firing to pull the strings. I'm seriously considering rewriting the stream with either #React or maybe #Vue. Before that happens, it would be nice to have a clearer idea of the future stream #UX.

If you want to give feedback or discuss these things, feel free to leave some comments here or get in touch via chats or GitHub issues. Private messages don't yet work in the #federation layer so please don't send those yet.

Project info

As a reminder for new readers. Socialhome is a #Django powered project aiming to create a platform that allows users to create a simple social profile with dynamic content. All content is federated using the #Diaspora protocol. Streams are in a central role, and we plan to have many types of streams, including custom per user streams.

You can find the code here and some documentation. The official site is https://socialhome.network which is a Socialhome instance itself and open for registration. Feel free to play around and feedback is always welcome!

#devdiary #changelog

Socialhome HQ - Socialhome

You can now follow/unfollow #diaspora, #friendica and #hubzilla users from #Socialhome. In preparation for user content streams, there is now a link to the user profile. Additionally, a "Home" button exists for remote users which points to the remote home profile of the user.

In other news, we also now have an #API \o/ It's not ... complete, but it does support authenticating (using a token), retrieving profile lists and doing a follow/unfollow action. Some (minimal) docs regarding the API here. For the API next will probably be creating content. Bots, anyone? ;)

RTFD!

We now have initial #documentation set up at socialhome.rtfd.io

Feedback welcome. Includes installation (for #Ubuntu 14.04) and basic configuration. Still needs a lot of things like feature roadmaps and of course installation docs for other platforms. Actual user help pages will are planned to be inside the app itself.

Anyone want to #contribute installation docs for their favourite platform? Also, a #Docker file would be fantastic.

Ps, want to chat about #Socialhome? Join #FreeNode #socialhome channel or our Gitter chat and say hi.

#socialhome

Remote followers and replies come to #Socialhome

You can now follow accounts on Socialhome servers and be ensured that when that account posts something, it will be delivered to your account. Our follower model is intentionally simple, similar to #Twitter and the kind. A user can follow and be followed. Sharing happens (in the future) via direct targeting of users or lists of users, instead of a requirement to do a share action separately.

Some time ago also local and federated replies were added. Get interacting!

We now have infinite scrolling in all streams at #Socialhome. Scroll content until your browser runs out of memory!

Next: #federated comments. Still wont see if anyone replies to these posts - hoping to solve that soon!

#Socialhome gets its second contributor. Thanks to contributor Jari Winberg, images in content creator don't overflow the preview window any more. Appreciated!

Ps. Our issue tracker has a newcomer label for issues that should be relatively easy to tackle even without too much knowledge of the code base or #Django. Take a look if you want to contribute to a fresh software stack in #TheFederation!

#Socialhome now has a "single content view" ie an url for each content. Clicking the content timestamp in the streams opens up the single content view in a modal. When arriving directly via an url, the single content view opens in a dedicated page.

URL's are a combination of content ID and a "slug" generated from the text. The slug part (which is optional) should help with SEO rankings. Since Socialhome is meant for permanent articles too, this becomes more important than for the average social media post.