GNU social is a social communication software used in federated social networks. It is widely supported and has a large userbase. It is already used by the Free Software Foundation, and Richard Stallman himself.
If you would like to know how is it like to be a GSoC student at GNU social, read this blog post!
What would be expected from me?
Reliability Engineering
Fix bugs of current code base and ensure it stays functional
Software Engineering
Further development of GNU social v2
Computer Security Engineering
Ensure GS is secure
Every student will have to pick tasks in each of these fields in GS's GSoC. Excited already? Then read below some of our ideas and learn how you can be part of this!
Difficulty varies per task but in general GS's SoC is demanding, so you better be honestly interested and willing to work hard and learn a lot.
Ideas
Below is a list of (not very defined) ideas of things/areas you can work on this summer at GNU social. They are just ideas, not full proposals. You should pick some of them that seem to be related and talk on IRC about it. The community will help you understanding what has to be done so you can put a good proposal together.
Make the ActivityPub plugin started in previous GSoC reliable
In previous GSoC an ActivityPub plugin for GS was developed but isn't compatible with every piece of software used in the fediverse (only working with Mastodon so far) nor completely safe and robust for large usage.
Some of the existing key problems are:
It is unable to de-duplicate when OStatus and ActivityPub are both enabled - mostly noticed between GS instances with both enabled;
Is unable to verify signatures which is an attack vector that makes the plugin unsafe for use right now;
It also doesn't make use of queues nor collections caching nor has any kind of circuit breaker implemented. This makes its use risky in a highly active GS instance.
Optimize how storage is used
Add support for temporary posts: This will allow support for "stories" and empower whole instances (and/or single users) to have temporary posts.
Optimize OEmbed plugin and further development on image handler: Work on this has already been started.
Review third party developer interfaces
There are various bots in the fediverse and we feel it might be about time to set them apart from humans so that we know who to kill when the robotic uprising comes, so to speak (ahem).
Ultimately, bots aren’t humans and, therefore, they shouldn’t have accounts claiming that they are “Persons”.
So some good measures for making change are:
Introduce OAuth 2 in GNU social for authentication of clients that aren’t browsers;
Review current APIs for Tools that act in the User’s behalf and introduce a user platform for the management of those;
Review current APIs for Bots that act in their own behalf and introduce a developer platform for the management of those.
Technical sidenote for those who have read the ActivityPub standard: GS Bots are represented as Actors with the Application type, while GS Tools are an internal (not federated) thing that allow Actors with the Person type (commonly referred to as Users) to use third party tools to control their account.
“We have you noticed we’ve straighten every dent up”
Props to XRevan86 for that pun! (Notices in GNU social are colloquially referred to as Dents).
GNU social wants to get polished with a modern looking default theme. For this, it would be interesting to come up with some themes guidelines so, if you’re into web design, this might be the task for you! :)
On the other hand, if you are more into backend development, we’ve got you covered. Some new and interesting concepts in the world of Software Engineering were introduced and we are naturally looking forward to include them and refresh the current code base for the release of GNU social 2 with them!