-
-
Notifications
You must be signed in to change notification settings - Fork 4.7k
Why Did you use Rust? Why not writing the entire thing in Flutter? #783
-
If you hadn't used rust, I could have built the app for my android device, I could have made it a mobile app very easily.
Also, I could have connected it to firestore and I could have the data there, cross-platform.
But you used Rust, I can't make any of that, and I don't understand why you needed rust in the first place, for a note-taking app. The performance improvements that you gain by using Rust aren't justified for such an app, it's not a business-critical app with multiple concurrent users.
There's no point in using flutter now, the whole selling point about flutter is it is cross-platform, but you use Rust, which means that every time you package it, you have to make platform-specific changes.
The way I see it: you're not gaining anything by using flutter, nor rust, it's not a cross-platform app nor a performance-critical app.
Also whoever wants to contribute by creating new features has to know Rust and flutter to be able to work on the project. Flutter devs can't understand and work on the backend and Rust devs can't understand or work on the frontend.
Since there are very few people who know both languages, there will be fewer people contributing to the project.
You created a technical debt and technology fragmentation for no reason.
Beta Was this translation helpful? Give feedback.
All reactions
-
👎 14
Replies: 7 comments 8 replies
-
I only just came across AppFlowy myself, so I'm not really versed enough to answer this question, but I came across this blog article that talks about the tech stack, which says that "To make the infrastructure layer more portable, we decided to use Rust to implement this layer, not to mention its high performance and memory safety." You can read more here, in what appears to be AppFlowy's official blog: https://blog-appflowy.ghost.io/tech-design-flutter-rust/
Maybe this will help answer your question?
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 2
-
I don't know about that, thanks for sharing the article, but it's definitely not true, high performance and memory safety aren't a concern for a note-taking app. And flutter is definitely more portable than Rust ever hopes to be in any scenario.
Since the core team downvoted my question instead of answering it, it seems that the decision has been made to use Rust and flutter simply because they're the "cool new technologies" out there. Then they wrote an article trying to justify their design decision by writing whatever.
Beta Was this translation helpful? Give feedback.
All reactions
-
👎 13
-
Hey please be honest. We do not downvote your question.
Beta Was this translation helpful? Give feedback.
All reactions
-
You are free to voice your opinions. Meanwhile, please be respectful and stick to https://github.com/AppFlowy-IO/AppFlowy/blob/main/CODE_OF_CONDUCT.md
Beta Was this translation helpful? Give feedback.
All reactions
-
The two people who downvoted my question aren't a part of the team?
And I'm respectful, it's just a note-taking app. I'm just asking tech-related questions. We don't need to argue over a fancy notepad.
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 1
-
This sounds suspiciously troll-y to me 🤔
Beta Was this translation helpful? Give feedback.
All reactions
-
I agree that "high performance and memory safety" probably wouldn't usually be a big concern for a note taking app frontend, unless... maybe that frontend was doing something like:
- OCR
- handwriting recognition
- audio recording
Then maybe it would make sense?
For a note taking app backend, where it could eventually be hosted in the cloud with many people accessing it, maybe the high performance aspect would come into need here too?
Maybe the thought of eventually moving into those areas could make it worthwhile?
Beta Was this translation helpful? Give feedback.
All reactions
-
I'd like to share some relevant information on this thread.
Here is a link to a list of companies using Rust in production, including a few well-known collaborative software Dropbox, Figma, and Discord.
And an interesting read on the same topic: https://discord.com/blog/why-discord-is-switching-from-go-to-rust
This is for knowledge sharing, and welcome more discussions and brainstorming on this tech stack topic.
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 5
-
@annieappflowy @elieobeid7 @uniphonic
After reading every reply here, I still can't understand why rust should be used on the client side. Does the client side of a note-taking application need to use a system-level programming language? What does the appflowy client mainly use rust for?
I understand if you say you need to use rust on the backend to achieve high performance.
Beta Was this translation helpful? Give feedback.
All reactions
-
I will respond using your thinking method... Why use a WebPage (JS + JS Engine + Full Browser embebbed, only left a SO and a Desktop Manager) for a Desktop APP??? Why take care of the memory, performance?... It's simple, the tech-stack used by a team is a team selection and in this case, my opinion is that was a good selection:
1 - Flutter for UI, multi-platform, rapid prototyping, good UI stack
2 - Rust, performance, memory safe, good coding practice enforced by the compiler.
As you can see on the project, this is not a 100% rust code, is not a reinvent the well, it's only using a very performant tool (rust) for backend and a tool (flutter) to show that info.
Of course, they can select C++ + QT + QML, but hey, then somebody will say why C++ and not Kotlin, or Java + AWT, or JS with Tauri....
Beta Was this translation helpful? Give feedback.
All reactions
-
@lfdominguez
AppFlowy does not clearly state how much improvement the use of rust has brought to AppFlowy.
On the contrary, Golang is simpler and more efficient, why not Golang?
Maybe it's just that Rust looks more advanced.
Beta Was this translation helpful? Give feedback.
All reactions
-
On the contrary, Golang is simpler and more efficient, why not Golang?
This is an example of 'A' it's better than 'B' because you say it? For me Golang it's less efficient, but think on this... what is efficiency? When you go with a project with a team, the team select the tech that is more convenient for them. Why not select ASM, this is really efficient or why not Python, it's really simpler.
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 2
-
I have hit significant performance blocks in my experience with Notion. If AppFlowy can surpass those performance bottlenecks of Notion, than I'm super excited about that.
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 1 -
❤️ 3
-
If you hadn't used rust, I could have built the app for my android device, I could have made it a mobile app very easily.
Also, I could have connected it to firestore and I could have the data there, cross-platform.
But you used Rust, I can't make any of that, and I don't understand why you needed rust in the first place, for a note-taking app. The performance improvements that you gain by using Rust aren't justified for such an app, it's not a business-critical app with multiple concurrent users.
There's no point in using flutter now, the whole selling point about flutter is it is cross-platform, but you use Rust, which means that every time you package it, you have to make platform-specific changes.
The way I see it: you're not gaining anything by using flutter, nor rust, it's not a cross-platform app nor a performance-critical app.
Also whoever wants to contribute by creating new features has to know Rust and flutter to be able to work on the project. Flutter devs can't understand and work on the backend and Rust devs can't understand or work on the frontend.
Since there are very few people who know both languages, there will be fewer people contributing to the project.
You crested a technical debt and technology fragmentation for no reason.
I think that you must first learn about rust, learn about the real Road-Map of AppFlowy and later give the real opinion about the tech selected. If you can't compile your app to android (from 2017 https://mozilla.github.io/firefox-browser-architecture/experiments/2017-09-21-rust-on-android.html) or use firebase (https://github.com/emreyalvac/firebase-rs) don't blame the development team's decisions, since their approach is not the same as the one you want the app for.
One example, you say a simple Note app
, but this app will get a backend hosted on a server with X add-ons, users, protobuff, etc... yes you can do that even on assembly or python, but need performance and memory safety, so i think that rust is a good approach.
Another example, Tauri is a wayyyy better than using the insane
electron, and guessed what? is on Rust.
Beta Was this translation helpful? Give feedback.
All reactions
-
❤️ 1
-
I see this is an old thread, I'm going to close it with a couple of comments.
AppFlowy requires a backend, it cannot be completely developed with Flutter, it's simply not possible. The limitations of such a tech-stack would impose major limitations on AppFlowy.
I understand why it would "seem" easier for individuals and smaller teams to rely solely on a backend-as-a-service provider such as Firebase, but it is highly unreasonable to expect an application with a large roadmap and complex features, to rely on such a provider.
We always support healthy discussions, and of course we cannot cater to every developers preference, especially when it comes to complexity of our tech-stack and implementations, otherwise it would have a huge impact on AppFlowy, and not a positive one.
If there are still any doubts about our tech-stack, and our choices, feel free to open a new discussion, or reach out to us on Discord.
Beta Was this translation helpful? Give feedback.
All reactions
-
❤️ 2