-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
How to contribute #115
Comments
Hello @jknedlik You are the first to offer help 🚀 👏 What do you wish to do?
You could do everything in small steps, with every little step being merged into the code; instead of one big PR with lots of work put into Thank you thank you thank you :) |
Do you want to work with AI, like Copilot or similar to improve the code? |
Do you know Fractal? https://gitlab.gnome.org/World/fractal It is written in RUST, a GUI client. Would it be possible to get/copy some ideas/features from there? |
General IdeaI would like to refactor code while I get my rust up to speed. QuestionsThere is a lot of copy/paste, boilerplate and duplication in this main.rs. Examples:
Sometime functions use a Vec, sometimes [String] All of these are just specific questions for some functions / implementation details / naming convention / Nitpick?/ etc. which I would need to explained/improved(by me). So I would have to know what kind of liberties I have in redesignin some parts of the project.
Not really, as I want to learn the language and the matrix-protocol/voodoozemac while coding. I will use clippy though.
I have seen it, but I would hesitate to just copy code/ideas before reworking. finally:I think there is a lot of refactoring needed, but I am very unsure if I would just be thrashing around in your code. |
Hi @jknedlik In general I agree with a lot of what you said: lots of copy/paste, lots of boiler plate, not "abstracted" into higher level data structures, inconsistencies in naming (room as str or as Room, ...), inefficiency regarding copying objects manually or by compiler, ...
hahaha, I had to laugh, at least smile. You will not upset me if the result is better. There are a few design principles that I like and do not want to lose:
The program is the way it is because there was never a design or an architecture for the program. I started out with 1 feature. A month later I added another, and so forth... without design, without planning. I wanted to add a new feature, I started with copy/paste of existing feature, ... 😄
I agree, now is not the time to steal code. I have not done so far. But recently I though about it as a reference for certain API calls.
That sounds great. Again in order to "protect" you from unforeseen frustration, I suggest to go in smaller steps, identify something limited in scope, and finalize PR, and repeat this cycle frequently. Ah, and as last words: thanks again for your interest ❤️ |
As for the 4 specific code snippets above. There was/is no design decision to have them the way they are. They grew that way. Each example can be improved, e.g. the 4 functions can be combined into 1, etc. All 4 can be simplified. Pretty much as you said 👏 |
In commit e75389f I addressed your first code snippet comment. Why |
|
i also want to contribute to this project where can i find a list of needed features, improvements or something like that |
Hi @DimitriiTrater , thanks for your comments.
What you say makes sense, usually I leave commented code while there are "doubts". For example, regarding verification: that feature is not fully working working, so I left some commented code to remind me what I had tried already (in vain), etc. Once something is clear, working well, established, then I remove the commented old code. |
That is great to hear. You are very welcome @DimitriiTrater . 👍 ❤️ I would start with your needs. Is there something that you would like to use and that does not currently exist? Start with that. In other words, if you have personal needs, implement those for yourself and hence for the whole community. Second: compare what the Python version can do. The Python version has a lot more features than the Rust version. Take the feature in Py that you like best and that does not yet exist in Rust, and implement that. Also, if you want a real challenge: fix "verify". I tried many things and it is partially working, but not fully working. That would be a great contribution to see Also, https://github.com/8go/matrix-commander-rs/blob/main/README.md#what-you-can-do shows some ideas for new features. |
Another rather trivial change would be: There are 3 message send format options now:
Instead of 3 options it would be better to have just one option with 4 possible values: e.g. |
Another feature that would be great and very useful, would be the implementation of the
And additionally, but somewhat different:
|
I have some small questions on how to contribute to this software.
Is there any official way to talk to the devs (you?)?
I do see some part in refactoring that I could do, but I would like to talk about it first.
Honestly my Rust is a bit...rusty, but I do have several questions on some small coding decisions that I just might not get right.
Would be a shame to invest my time into a PR, that just was my mistake.
The text was updated successfully, but these errors were encountered: