Console #181 - Story of LocalSend, a cross-platform alternative to AirDrop
Featuring Geany, MarkText, and LocalSend
🤝 Sponsor
This space is reserved for sponsors that support us to keep the newsletter going! Want to support Console? Send us a note at osh@codesee.io
🏗️ Projects
Browse through open source projects on OpenSourceHub.io, add your project to get more exposure and connect with other maintainers and contributors!
Geany
Geany is a small and lightweight integrated development environment.
language: C stars: 2840 last commit: 1 day
repo: github.com/geany/geany
site: geany.org
MarkText
MarkText is a simple and elegant markdown editor focused on speed and usability.
language: JS stars: 42026 last commit: Aug 2023
repo: github.com/marktext/marktext
site: marktext.cc
LocalSend
LocalSend is an open source cross-platform alternative to AirDrop.
language: Flutter stars: 21331 last commit: 2 days
repo: github.com/localsend/localsend
site: localsend.org
🎙️ Interview with Tien of LocalSend - An open source cross-platform alternative to AirDrop
Hey Tien! Thanks for joining us! Let us start with your background.
Hi! I was born in Germany and my parents came from Vietnam.
Java was my first programming language. I found a really good German YouTube tutorial channel, “The Morpheus Tutorials,” and I watched every episode, programming some simple games with Java.
When I went to university, I learned many more languages. For a long time, Kotlin was my favorite, but eventually, I discovered Flutter. Since then, I’ve been eager to use Flutter in my first job.
Luckily, I found an open position at a software company that focuses on developing mobile apps with Flutter. I worked there for two years before deciding to become self-employed. Now, I develop products for clients and work on my own projects as well.
What’s your most controversial programming opinion?
To me, Python is overrated. I prefer programming languages that are statically typed. With Python, the code might look simpler, but you lose a lot of information if you don’t document your code properly. Of course, the same goes for JavaScript.
What is your favorite software tool?
Git and IntelliJ.
What are you currently learning?
I’m dabbling a bit in Rust.
Why was LocalSend started?
My sisters have different operating systems, and it was quite a challenge to share large numbers of photos and videos without compression from one device to another. We tried some open-source alternatives like Snapdrop, but unfortunately, the service was down at that time.
I wanted a solution that didn’t require any third-party service. I played around with shelf (a Flutter HTTP server package) a bit and realized that it works on all operating systems, including iOS and Android. After three weeks, I released the app on the App Store and Play Store with minimal features, like file selection and sending. The Windows version followed shortly after.
How does LocalSend work?
LocalSend sets up a server on each device, and they discover each other by broadcasting a UDP message. Most importantly, file transmission is just a POST request — it’s essentially a file upload.
Why did you pick Flutter?
I like Flutter because it allows you to build cross-platform apps with very little effort. I don’t think I could have undertaken this project alone if I had chosen another framework.
Are there any projects similar to LocalSend? If so, what were they lacking that made you consider building something new?
Snapdrop is quite similar to LocalSend. The main issue with it is that it requires a third-party server. I wanted a solution that is completely independent of external networks.
What was the most surprising thing you learned while working on LocalSend?
Developing apps for Linux is really challenging. Without the contributions from the community, it would have been very difficult to create an app that works across all distributions. Even today, there are some issues that I can’t fix on my own.
How did the project get popular?
I think a Chinese website featured my app during the New Year. I can’t speak Mandarin, but I was really interested in how they discussed my app. In the following months, LocalSend gained users organically as more and more people wrote about it on the internet.
Is LocalSend intended to eventually be monetized if it isn’t monetized already? If so, how?
I don’t plan to monetize LocalSend. I’m happy to receive donations, but they’re just a nice extra.
What are you most proud of?
I’m proud that LocalSend has garnered so much attention in such a short timeframe! I’ve even had clients from Germany compliment my GitHub profile because of LocalSend.
How do you balance your work on open-source with your day job and other responsibilities?
Usually, I divide my workload into days. For example, I might work on LocalSend for an entire day and then spend the next day working for my clients. Of course, if the workload becomes too much, I have to prioritize my actual job.
What is the best way for a new developer to contribute to LocalSend?
They can open issues on GitHub (especially with concrete reproduction steps), make minor UX improvements, or help translate the app into other languages!
Where do you see the project heading next?
I want LocalSend to support Bluetooth and Wi-Fi Direct file sharing, though both features require a deep understanding of low-level technologies.
Unfortunately, the Flutter ecosystem isn’t quite ready for that yet, so implementing these features would take a lot of time.
However, I also plan to provide a CLI version of LocalSend, so you can run a server without a GUI. This feature is more feasible, and I’ve already made some preparations for v1.12.0, so you can expect a CLI version soon.
What motivates you to continue contributing to LocalSend?
Like many developers, I enjoy seeing people use and appreciate my software. This project has also helped me build a reputation as a skilled developer.
Where do you see open-source heading next?
Open-source software reduces costs for consumers, as more and more open-source projects compete with commercial alternatives. In my opinion, open source offers significant marketing advantages to a project, especially within the IT community. People appreciate it, and so do I.
Interested in sponsoring the newsletter or know of any cool projects or interesting developers you want us to interview? Reach out at osh@codesee.io or mention us @ConsoleWeekly!