I was playing around with Rails and thinking about the general direction of ditizen.net. Since we defined this project to be something to learn about we should make sure we learn something relevant, and we somewhat settled on (micro-)services :)
Now stock Rails seems pretty bad when it comes to services. While it is somewhat possible to enforce code separation between parts of the application (which is a good thing), Rails does not have the vocabulary to define how various parts of the app should talk to each other, and, consequently, also lacks the tools to describe tests. I am talking about test cases like "when a user posts a message his friends should find the message in their timeline soon, but not necessarily right away." Also, Rails lacks the tools to orchestrate multiple service processes.
Furthermore people seem to leave Rails. This reminds me of the time when people left PHP to either Rails or Django 10 years ago, and consequently PHP became toxic on CVs.
So, for the lets learn something which is fun and increases employability I would say we should look at other technologies. My personal favorites at this time are http://phoenixframework.org and http://crystal-lang.org; however, both require to learn a new language (and crystal is still pretty alphaish, meaning, the language changes quite often). So that option would mean it would take really long to come up with something.
On the other hand people are more and more fed up with Fcebook these days (especially since Turkey started to have facebook kick out people) and are actively looking for something else. Some consider vk.com a suitable option, but since their privacy rules are even worse than fb's this is probably not an option for many. I think if we forget the "lets learn microservice" approach, stick to Rails, but build a clean reimplementation of ist-ur, and "just" add some notion of posting privacy (for groups and the like), we could come pretty far with not too much effort, and could later on still rebuld part of the things in whatever fancy sht we like then :)
I think what we would need for a somewhat attractive thing includes:
User Accounts :)
Posts, with simple formatting, images, image galleries, videos;
Comments, which are posts in reply to other posts;
walls, with "followers-only" and "world" posts;
public groups, where everyone can join + write;
semipublic groups, where everyone can join, and only admins can write;
private groups, where admins manage memberships, and only admins can write;
semiprivate groups, where admins manage memberships, and only members can write (Note that a user's wall is basically a private group where the user is also the admin)
Note that apart from the visibility things here @jensitus did all those things in the current ist-ur already, and I therefore hope he can stil remember how he did that :)
I was acting CTO of a social networking startup back in the days that wanted to build a SN with roughly the above feature set. These guys failed since their main motive was money; but the tech worked fine. We ended up with ~100000 users, on Rails 2.3, on pretty old hardware compared to today's standards. So rails would certainly a suitable platform for a feature set as above. (Not surprisingly, since the current ist-ur also works, right?)
Wow, thats a mouthful ;)
Why not stick with ist-ur.org? Or ditizen?
Ok.. services and testing, I get it.
@fkleedorfer I would certainly stick with ditizen.net as a name :)