About two days ago we found a bug with the registration system on lemmy. Because of this we have updated our registration process a few times, and cannot deny any applications as the person registering does not receive any message and cannot re-apply.
We currently have several hundred people that we are waiting to deny, and some unknown amount of people that we denied prior to finding this issue which we would really like to contact and give them a chance to register as they didn’t write enough in their registration for us to really evaluate if they were a good fit for this instance.
If you’re a developer please take a look at this github issue and please work your magic to help fix this problem.
As an aside, we also have a list we’ve been working on for enhancements that would make moderating and administering this instance a lot easier, and enhancements we think users would enjoy in terms of UI and UX. We’d love to share these as well as facilitate a discussion to surface more ideas (and we plan to in the future), but right now we need to focus on the most pressing issue to us running this website, whether people can create an account here and participate.
As a workaround you can go into the database and query directly for users with rejected application and email provided. Then write a script to email them. Getting a fix developed, reviewed, merged and deployed will take a few days in the best case. And even longer now because we are busy with lots of things.
Thank you. I’ve suggested this method to @Penguincoder@beehaw.org and we are looking into it.
Appreciate you! Good idea. :)
To work on bugs and test do I just need the UI and backend? Does the backend code have a embedded DB for local development? I can code, btw. I can figure rust out, great with JavaScript and JVM languages.
@Penguincoder@beehaw.org may be able to answer these questions.
The rust backend, Postgres Db and UI are all available as docker images. The rust “lemmy” repo has a docker compose file (if you are familiar with the concept) allowing you to spin up the whole stack locally pretty easily if you already have docker installed.
I didn’t know it was written in Rust. I looked at it years ago but never went anywhere with it. I bet I’d be much better at it having written Scala for the last six months, never really got into functional programming until now.
Scala and Rust don’t have that much in common I think. Rust is closer to C++ than to Scala (unless Scala has changed significantly since I last used it years ago).
To be honest when I say a while ago I mean a really long time ago, I remember hearing about it being popular for its functional programming features but also as a C++ replacement and I’ve not kept up since so it might just be the latter now.
popular for its functional programming features
Never heard that. Rust is an imperative programming language. It has a few features from functional languages just like C++, Java, etc. have a few functional aspects.
Rust is an imperative programming language with strong functional programming influences. It started out implemented in ocaml.
The main functional programming influences are a strong functional programming-esk type system and heavy use of pattern matching.
The syntax is a bit odd though, neither fully matching C style syntaxes or functional syntaxes like ML or Haskell.
Apparently they’re still an influence according to the docs.
Sure, but I still wouldn’t choose Rust if I wanted a functional programming language. Because it’s not one. I would pick Haskell or Scala or whatever.
The entire type and class system is basically taken from Haskell
How hard is going from C# to rust? Ngl, I absolutely loath C++ syntax
No matter the language, Rust is just a different beast. You don’t do OOP the way you do in C#, so you will have to change your expectation how code is designed. And you will have a very very hard initial (!) learning curve to get used to the borrow checker, which is Rust’s biggest strength. It’s absolutely worth learning and you will learn something to take “back” to other languages as well. But it’s not easy. No matter your background.
Yeah I dabbled in rust very very lightly lol But the front end is written in inferno which is very similar to react which I’m very comfortable with. All I can say is don’t fear another language! Or don’t let it be a blocker, it may take some time to figure out but if you keep at it day after day you will be amazed how it will eventually makes sense.
Likely need to define some basic rbac controls. They signed up, sure, but don’t receive a “user” role until after approval. Then in the home page, when signed in with no roles assigned, they get a banner saying they’re still pending approval and will not be able to post or comment.
The major concern will be retroactively applying user roles to the existing users.
I’m a fan of this approach. That way, we can return a 200/201 on subsequent registrations for the case where an attacker would query if a user name already exists on an instance. If rejected, remove the account. If accepted, add the user role.
Bit of a tangent here, but if you’re ever looking for experience designers to help out here and there, or to just give something a second set of eyes, I might be able to lend a hand or connect y’all with some bright and chill people.
You probably don’t want me making any PRs, but I know my way around Figma and a user test plan.
I’d love to see you redesign some parts of the Lemmy UI!
In my option, a lot of designing work is still to be done so I’d love to see mockups you can make and your thoughts on design work!
Nice! I’m pretty new, so let me get a little bit more familiar with the platform, and I’ll craft up some stuff!
Is there a way to follow you here? I’d like to see that. I’m working on being a designer and I’d like to see what others are coming up with.
It doesn’t look like that quite exists yet
One option is to get a mastodon client/account and follow a user’s Lemmy address. A funny interaction of being in the fediverse :)
That’s a shame. But I’m sure it must be pretty close on the roadmap. It’s a pretty essential feature.
If we could end up with a theme that looks a lot more like https://kbin.social, I’d be so happy. My biggest gripe with Lemmy is all of the white space, and none of the current themes improve that at all. All of the theme options offered by kbin look amazing by comparison, and to my understanding Lemmy theming is done via CSS based on Bootstrap v4, so new theme creation should be straightforward enough.
It’s to the point where, when visiting Lemmy instances, I use a custom CSS extension to modify a few properties to make it a bit more palatable to me.
If you guys aver need help creating custom themes to offfer to users I’d be happy to contribute.
Can you post your user style??
But I would very much support having a more compact theme available without a browser extension. I think some tightening up up would make this place look more welcoming. It feels sort of “empty” due to all the white space.
Hey there, sure, currently I’m using this. The border between comments on a comment thread doesn’t look the best, but it makes it easier for me to track comment levels so I like it, though there are certain properties I’d like to change but can’t.
Either way, I’m using an extension called Amino to apply my CSS changes on a domain-level.
This fixes a lot of the whitespace and borders to make differentiating between posts and comments a little easier, while minimizing white space. I think it looks nice.
.container-lg { max-width: 1600px; } .col-md-8 { max-width: 80%; flex: 0 0 80%; } .col-md-4 { max-width: 20%; flex: 0 0 20%; } .post-listing { border: 1px solid rgba(34,34,34,.125); border-color: #c80000; border-bottom: 0px; padding-top: 10px; } hr { display: none; } .border-top { border-top: 1px solid rgba(34,34,34,.125)!important; } .border-light { border-color: #e4e4e5!important; }
thank you I like it! I hate when websites force me to have so much blank space. Like I remember what an improvement it was in 2002 when everyone got into sans serif fonts and padding to their table based layouts and using % widths, but the craft has moved on from those days… For this kind of website I am thinking more of a newspaper and less of a coffee table book.
looks like Amino is only available for chrome and edge. For other ff users I will say I use an addon called Stylus but it might not be the best one; kind of resource hungry on big pages.
Hey so just a heads up, I made a few more changes that I quite like (again, for the red theme, tweak appropriately for the default green theme), so thought I’d just update you.
This changes the main feed quite a bit, adding a bit more of a card-like design to posts, though I have done my best to make sure there isn’t too much white-space from this change, I just feel it looks a bit more modern, but again, feel free not to use it :)
It also, and this is my favorite change, changes the title color of any post you’ve visited, something that I feel is basic but for some reason Lemmy didn’t have before. So now any posts you’ve visited before will be a light-gray color instead. Hope you find some value here.
.container-lg { max-width: 1600px; } .col-md-8 { max-width: 80%; flex: 0 0 80%; } .col-md-4 { max-width: 20%; flex: 0 0 20%; } .col-sm-2 { max-width: 10%; flex: 0 0 10%; } .col-sm-9 { margin-left: 5px; max-width: 80%; flex: 0 0 80%; } .post-listing { border: 1px solid rgba(34,34,34,.125); /*border-bottom: 0px;*/ border-color: #c80000; border-radius: 5px; margin-bottom: 8px; padding-top: 10px; background-color: #fff; transition: all .2s; box-shadow: 2px 2px 1px #c80000; } hr { display: none; } .border-top { border-top: 1px solid rgba(34,34,34,.125)!important; } .border-light { border-color: #e4e4e5!important; } body { background-color: #ecf0f1; } .navbar { background-color: #fff; } .card { background-color: #fff; box-shadow: 2px 2px 1px #c80000; } .col-12 .card { box-shadow: none; } .comments { padding-left: 10px; background-color: #fff; } a:visited .d-inline-block { color:#d6d7d9!important; } .my-2 { margin-bottom: 0px!important; }
Thank you for sharing! I will try it when i am on desktop.
I actually used your code as base to start to fix some things that bug me the most… all spacing/positioning the colors are a total mess. So i am interested to see what yours is like. I can tell from looking that yours is more efficient because i do not know what im doing so it is trial and error.
Do you think there is a better place than wherever we are to post? A repo or other code sharing? I think the stylus extension connects to some sort of website but i never investigated it.
omg did you add drop shadows??? wowwowow i love it
How do we deploy custom CSS?
Glad you like it :)
Reckon I’m still going to make a few more refinements as I go as well, it’s already changed a lot from where I started it. Also the border colors are based on the red theme but should be simple enough to swap it out for the green/default theme as well.
How does this work with a federation model. Is it possible that there can be lots of different clients with different UX’es?
That’s pretty much how mobile apps work, so very likely.
Lemmy backend and lemmy ui are separate components. Look up LemmyBB, that for example is an alternative to lemmy-ui.
Fediverse platforms in general are just different UIs for the same content since they all interop to varying degrees. You can subscribe to and interact with Lemmy content from Mastodon, as an example.
Does that go in reverse too? Subscribing to a Lemmy instance, do I have a Mastodon account by extension? I thought they were different federated services, but being able to authenticate and authorize through one (or more) accredited account(s) would make sense for both services.
Lemmy has yet to implement the functionality needed to follow non-Lemmy accounts, but it is in the todo list. You should check out kbin if you’re interested in a similar UI that currently supports this functionality.
Hiya! Lemmy was actually one of the reasons I started learning Rust, but I do also know JavaScript, Python, a bit of Julia, C, C++, MASM, NASM, MIPS, a bit of TypeScript, and Java. I’ve worked on both frontend and backend although I think my expertise and comfort lies with backend primarily. I’m not sure if I’d be able to help with y’all’s issue as I’m not familiar with the Lemmy codebase, but I’d be willing to try and help debug the issue and hopefully get it under control.
A “quick fix” might be to test for a user unapproved status on login and provide it as a status (e.g. 404:application_denied). Then the behaviour can be either release all created but unapproved accounts after 24hrs elapse or perma-“ban” until approved like it is now depending on server preferences.
“Quick fix” as in it’s seems quick but will take me a while to implement if I were to try and I won’t have time for a few days to get serious and become familiar with the code.
404 wouldn’t be the right status code, 403 would be more suitable.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#client_error_responses
Servers may also send [a 404] response instead of 403 Forbidden to hide the existence of a resource from an unauthorized client.
In this case, I agree that 403 is the better response, but for some resources, in the name of security and privacy, 404 might be more appropriate depending on the request.
Yeah at work we mask all responses to the client in production to x00, but in the scenereo the original commenter laid out exposing the 403 would be best.
Adding a modal client side would prob be best here.
Thanks for posting and writing all this up. I’ll take a good look at it if this is a Friday that work tickets decide to slow down.
I cannot code. 🫤
But it occurs to me that we need a couple of features - although maybe they already exist.
One is the ability to back up a Lemmy account and download the data.
The other is account portability - the ability to move an account from one instance to another.
But I suspect that #2 might be impossible.
mastodon has some portability features but not the ability to fully move the content of your account: https://docs.joinmastodon.org/user/moving/ though you can move some stuff like friend lists etc.
Test
I thought this was a mistake. I filled out an application early on and didn’t fill it out correctly. I expect that account was denied, but I did notice that the user was created the exact second I applied which was weird. I assume the username is now in a limbo state. Seems strange that lemmy would create an account before it’s approved.
There needs to be something to approve or reject, after all. It could have been a separate table but this way is probably better ultimately, modulo current bugs. The same machinery can be used for suspending accounts and other steps in the account lifecycle.
I wonder if the RES devs might consider working on BES (or LES)?
We can definitely use all the help we can get. Luckily since lemmy and its UI is open source, we can embed all this highly popular functionality directly into lemmy-ui.
I’d love it. I don’t hate the UI as it currently is, but I’d definitely appreciate some features, like the hotkeys RES has, or a tighter UI in general, with less padding and space between elements.
To be fair, tweaking the UI is surely in my power and skillset, but UI is surely my least favorite part of development as a whole.
If I remember correctly, RES has basically been limping along in maintenance mode for quite a while now and there’s only one or two people left working on it - and only from time to time.
I have front end and back end experience but work has me kind of bogged down this week. If nobody has stepped up by Sunday I should be free to start taking a look at it at the very least.
I’m a beginner with Rust, but a full-time web engineer with React/TS/PHP/SQL/etc experience. I’m a bit swamped at the moment, but I’m down to contribute eventually :)
I forget my password to my GitHub account, so ill just reply here. I agree - it is a bit hard to know if youve been accepted or not. I just kept trying to log in once or twice over an hour or so, but I doubt thats feasible especially for the cases of people who get denied and dont know why.
I am not quite certain on the structure of a Lemmy server, but I imagine there’s a log of users that you can join to a particular db entry for acceptance status and denial message. Given that you host the server that this is on, I imagine you might be able to append some changes to the login page to access these fields.
My thought is that there can be a small text input added to the bottom of the log in page that you can enter in a username, and have it present the necessary data pertaining to acceptance status. Again, not sure how this would work in Lemmy structure land, but in MVC where Im competent, I would have an endpoint that returns data as json, then ping it with an ajax post request. Id imagine something similar could be done here
What about as part of the sign up process you offer browser notifications instead of after the fact? Decoupling is a good thing versus straight up polling.
Off topic but I’m really happy that the developers chose Rust to code Lemmy in. Low maintenance + high performance is the ideal combo for open source server software.
I’d second this. Knowing that the back-end is built on Rust was definitely big part of drove my excitement for this project!
Yeah, I only found out recently but it’s the cherry on top
There are hardly any experienced Rust developers. It’s going to be a big problem.
Is there a way we can minimize the stickies? It’s a quality of life but would be great to read it once and shrink it so I get to my feed quicker.