Show HN: Gurlic – Free and Open Communities
gurlic.com
gurlic.com
Some of the structure seems a bit confusing though as I look around. How can I create a new community or a custom domain? I don’t see the option anywhere. I also can’t find a way to post to any communities besides my own username.
If it weren’t for your comment in this post explaining everything, I’d be really lost. I’d recommend a page with a series of graphics that shows the basic idea of how everything works together. I also noticed that most of the static links on a subdomain page don’t work (ex. the “About” links at the bottom of the page).
Overall, really great job so far and I can’t wait to see what else comes of this! I’ll definitely be looking out for when you open-source the project, at least for better understanding, and maybe to contribute too! :)
Edit:
Ah okay, seems like you need to be following a community to be able to post to it. That makes sense.
It also seems like maybe I need to create multiple accounts to create multiple communities? Each account is its own community? So if I wanted to make a community for “golang” for example, I’d have to make an account named “golang”... Then that account owns itself as a community? That’s my best guess!
I'm guessing you made an anonymous account? Those can only post on communities which allow anonymous posts. Right now, only email-verified accounts can create communities and add domains, only to avoid namespace-squatting and spam really.
Thanks, I'll let you know when I free up the code. :)
Also no, your account username is your account username. You choose a slug/username for your community when you create one, it doesn't need another account.
How are you planning to do moderation? You seem to be going with a reddit-style "the creator of the subreddit moderates" system - how are you planning to deal with the pitfalls of that, like power users moderating thousands of communities, mod abuse and accusations thereof, etc.?
I'm not completely sure yet, and haven't given it much thought. But I suppose there will be a limit on the number of communities/publications one can own. There definitely ought to be a mechanism to cut down on power user abuse.
I'm happy to hear thoughts/ideas/advice on this!
Having policies in advance means people will just go elsewhere. Trying to add such policies later, when you have existing users, will be much harder. You're likely to want to draw that line somewhere; better to draw it in advance.
(I've dealt with user-generated content before; please feel free to reach out privately if you'd like to talk about it further.)
Oh and, before I sign up I should ask if you plan to monetize this via subscriptions or similar so you don't have to vanish on us if you don't want to.
The backend database-layer/logic is in Go/grpc. The shortlink server is in Rust. The frontend is static Go templates, vanilla JS, Svelte and some Vue.
I don't think I'll vanish, but good thought!
I started to build Gurlic as a way to post my thoughts.
Here are a few examples: https://gurlic.com/bob/dont-laugh https://gurlic.com/plato/ion?theme=minimal https://gurlic.com/homer/the-odyssey-book-i?theme=pudding https://gurlic.com/raw/next-stop-immortality?theme=naked
There is a minimal editor for writing longform/articles, with a fair bit of customization, theme options, including custom CSS, adding co-authors etc.
User can also post short posts including media, attachments, reviews, polls and so on. Some examples:
https://gurlic.com/raw/post/320442840570134533 https://gurlic.com/bob/post/lf1Gb5wFYb6A https://gurlic.com/davinci/post/hjWoniPoYNDK etc...
These posts are brought together in profiles which can be customized: https://gurlic.com/raw https://gurlic.com/bob https://gurlic.com/haxor
Profiles can be at subdomains too: https://raw.gurlic.com
Or domains: https://bob.monster
Communities -----------
Gurlic has a thing called a "bread" which is a collection of posts. The most common type of bread is a community, which is sort of like a subreddit or a forum. These are fairly minimal now, but have customization options, mods/admins and so on. Here are a few examples:
https://gurlic.com/music https://gurlic.com/programming https://gurlic.com/space
Communities can be nested:
https://gurlic.com/music/jazz https://gurlic.com/music/jazz/fusion
They can be found at subdomains too, like so: https://music.gurlic.com https://music.gurlic.com/jazz https://music.gurlic.com/jazz/fusion
Or domains: https://gurlic.space
Galleries ---------
A gallery is just another type of bread, but accepts image posts only. Like this:
They can be at subdomains too: https://art.gurlic.com
Or domains: https://gurlic.art
Publications ------------
Publications are yet another type of bread. These are for longform posts only. Here's one: https://gurlic.com/classics
And a post from it: https://gurlic.com/classics/the-iliad-book-ii
These can be at domains too: https://classics.wtf
And a post: https://classics.wtf/the-odyssey-book-iii
Nested breads don't have to be the same type, so you could have a gallery under a community, or some other combination. Like this: https://gurlic.com/art/discussion https://gurlic.com/programming/memes
Other stuff -----------
Most posts can be tagged, marked NSFW, users can be @mentioned, there are #hashtags, all the usual modern amenities. Profiles and communities have RSS too, or should, last I checked.
Work in progress ----------------
I'm hoping to integrate matrix into the code as soon as I find more time to read/learn it and things like dendrite and hydrogen are stable enough. Until then, signed up users get a @username:gurlic.com account and there's a self-hosted version of the Riot/Element as https://gurlic.com/chat that I havent' had the time to play with yet. I'm guessing the usual matrix clients on desktop/phone can be used, but I haven't checked.
Short term goals are to build up a small community of users, fix things that are broken, and make the code free. I'm not a programmer, so all of this took a lot of yahoo searches. I'd be happy to hear feedback and advice.
Longer term goals would be to have activitypub or some kind of way to have federated interaction between domains. But this needs more thought and probably someone smarter than me to look into it.
Most of the backend is Go/grpc for the db/logic, and rust for the shortlink server. The frontend is a combination of Go templates, vanilla JS, Svelte, and Vue.
There is a ton of other stuff I'm leaving out for brevity. Some of them may come to me in the comments if anybody has a question.
Thanks
Surely this is past tense now?
At this point I feel that every new "social platform" should greet me with a whitepaper. "How is this different from Reddit? What are functionality goals?". Your post right here is great at explaining this but maybe this should be included somewhere on the website itself?
The concept of having different types of "breads" based on things like content type and length is intriguing.
One small feature request: It looks like this may be in progress because I noticed a URL on user profiles, but I'd love to see RSS for each user and community.
Users already have feeds at https://gurlic.com/bob/feed, although I didn't complete it I think..
I plan to work on RSS for communities in the coming days!
uMatrix blocked it. Disabled it.
Then uBlock Origin blocked it. Disabled that.
Still blocked, so disabled NextDNS.
Then it worked.
Just a FYI.
one bug that's stood out with videos .. if i pause/stop/finish a video and scroll until new content loads, it reloads the video(s) further up the page and they start playing in the background, forcing me to scroll all the way up to stop them. a minor annoyance but i wanted to point it out.
in addition to preventing this reload from restarting videos, it would be cool if videos im watching pop out to the bottom right (like many news sites do) as i scroll so i "take it with me" while i browse other content
Edit: turn out some post does have title in the url
Are creating API for posting is in your timeline? Is black theme?
wonderful job