Skip to content
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

Why NodeJS & Browser JS, Typescript, Golang and Python over Rust? #19

Open
ChristianKleineidam opened this issue May 15, 2020 · 4 comments
Labels
discussion open for public discussion question Further information is requested

Comments

@ChristianKleineidam
Copy link

It seems to me like a plan that implements AvionDb in NodeJS & Browser JS, Typescript, Golang and Python requires writing code 3-4 times and at the end of the day the AvionDb still won't be able to be easily used on Native Android/Native iOS/Xamarin/Flutter. If the code was written in Rust it could be used in all-contexts (maybe a bit additional work on the web to integrate with IndexedDB)

At the same time both performance and security are likely worse then if the project would be in Rust. Both are important for this project.

@vaultec81 vaultec81 added discussion open for public discussion question Further information is requested labels May 15, 2020
@vasa-develop
Copy link
Member

vasa-develop commented May 15, 2020

Hi @ChristianKleineidam!

I totally agree with you. The plan to create GoLang & Python implementations (it is already available in different flavors of JS) was decided when the project started, and at that point in time, I didn't have much idea about the benefits of Rust.

But as I have learned it's better to have a Rust implementation than GoLang or Python. BTW, there are folks in the OrbitDB community (@aphelionz) who are already working on the Rust implementation.

So, I think we should change the README to reflect this. Any thoughts @vaultec81?

@vaultec81
Copy link
Member

vaultec81 commented May 15, 2020

I think we should definitely support Rust. I am a little wary of supporting python. Should we reconsider and only support JS, Golang and Rust? I think Golang has value as its used primarily in a lot of ipfs related areas.
Edit: I am not entirely sure on the specifics. I have heard of golang being compiled into Android and iOS bindings.

@aphelionz
Copy link

An argument for JS in particular, one that we use for OrbitDB, is that JS is a very ubiquitous and accessible language, which means many more people can contribute meaningfully to the discussion and code base. Rust is more performant, uses fewer resources, etc etc - absolutely 100% yes, but the JS community is simply much much bigger at this point.

It's the same reason why we don't use Typescript, Lerna, Yarn, etc.

That all being said, @vasa-develop is right and you can check out http://github.com/rs-ipfs when you get a chance to see the latest Rust IPFS work :)

@vasa-develop
Copy link
Member

vasa-develop commented May 16, 2020

Thanks for the insights @aphelionz!

@vaultec81 You are right, I have used Golang for generating Android & iOS bindings. So, I think Golang & Rust can be 2 implementations that we can agree upon.

Should I add Golang & Rust to the README?

BTW, I added some details on the current state of go-orbit-db by Berty: #20

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion open for public discussion question Further information is requested
Projects
None yet
Development

No branches or pull requests

4 participants