Developing a self-hosted alternative to Google Keep
bruce965 @ bruce965 @lemmy.ml Posts 1Comments 114Joined 3 yr. ago

Oh yeah, both Joplin and NextCloud are great. I tried them both in the past. NextCloud is a bit bloated in my opinion though, I was hoping to go for something simpler both to install and to use.
Most of us here on the Lemmy Selfhosted community are skilled enough to keep a computer running somewhere, expose it securely on the internet (or just LAN, if that's good enough), and install their own services such as Joplin and NextCloud, but my goal would be to make something that you don't need to self-host. If you can trust any server, you don't need to host your own. I like the idea of building a network comprised of both self-hosting users, and "normal" users, like here on Lemmy.
The federation may leave you wanting more and the collaboration might not be “real time” enough for you either, though. If you can build something better by all means go for it.
I'm not sure I understand what you mean. Do you mean writing a protocol that supports federation is a very difficult thing to do? Actually my first draft didn't include federation as that's just too much for my skills. But I am considering adopting Matrix, and Matrix includes federation, so why not? They built real-time messaging with Matrix, so I would assume that should be real-time enough for document editing.
As far as I know, Joplin is not really real-time collaborative, nor federated. I was using it a few years ago and I like it, that would be a great suggestion for people not interested in those two things.
why you wouldn’t hop on projects already out there
Ah... that's... yeah, that would probably make a lot of sense. I think that to us developers it's much easier to come up with our own ideas than to hop onto other projects unless they align very well with our vision. It's quite unusual to find other people with our very same goals. I'll be honest, I code for fun. I would like to build this tool because want it more than because I need it, as there already are both Google Keep and Joplin after all. If there was an alternative out there with most of the feature features I need, in a programming language and framework that I am familiar with, I would probably have joined or forked it. But no, unfortunately that's not the case. My goal is not to just find/build a replacement for Google Keep, my goal is to find/build a framework that can be used to build more collaborative apps in the future. A replacement for SplitWise is my next goal immediately after Google Keep, and I assume (hopefully not too naïvely) that once I will have a starting point, making more similar apps will be virtually free in terms of time required.
Actually, I was just so incredibly lucky that the Matrix protocol seems to overlap almost exactly with all the things I had in mind. I had included a few more features in my draft for a custom protocol, but honestly adopting something already made would save many tens of hours of work, so joining something already existing sounds like a good idea. I don't think I will be able to contribute code to it though, as it's developed in a language I am not familiar with (yet), so if I decided to go for Matrix after all, I will just be joining as a consumer.
LibreOffice also has Async collab [...] might also benefit from another person putting their time towards it
Oh, that's actually good to know, thanks! Personally, at the moment I use Google Docs when I need to work in real-time on a document with someone else. In my opinion it's just too convenient to just be able to share a link which can be opened with a web browser from any device and operating system. There are some good self-hostable web options for documents imho though, which are probably less resource-demanding than LibreOffice.
Unfortunately I am not interesting in contributing to LibreOffice. I have installed it on all of my devices, but I almost never use it.
Whatever you choose to do, I’ll be super interested to see the results.
I'll take that as an encouragement! Thanks!
Ah, that's why the UI looked familiar! I have some of their apps on my Android :P
Joplin is not really real-time collaborative, nor federated. Or rather, it wasn't last time I used it a few years ago, unless things have changed now. As a developer, I like Joplin though, that would be a great suggestion.
Oh yeah, I looked into and tried some of the European collaborative docs softwares, in particular I like this Numerique's clean Material UI interface and I'm definitely going to take inspiration from it (although I haven't installed and tried it, I just checked screenshots). Although, if you are recommending it as an alternative to my idea, Numerique doesn't seem to be federated, nor to be privacy-centric (well... it is if you self-host, but my idea is to let people collaborate through different servers, like Lemmy, I don't want users to need to trust the owner of the servers they join). And I really need an alternative to Google Keep more than Google Docs. I'll be honest, Google Keep is really well made in my opinion, I would say we don't yet have a good self-hostable alternative.
did I mix google keep and docs
Yeah, Google Keep is more like for text snippets, links, checklists, scribbles, and images. Google Docs is a full-fledged RTF editor. I was planning to implement the two things separately. I considered implementing Markdown in the Google Keep replacement, but I am still undecided whether it might count as feature-bloat.
vjournals
Oooh, that's nice. I know about VCard and VCal, but I didn't know about VJournal. Thanks for the hint, this might be very useful!
Ah, that's a shame, I quite liked the idea of using the "Simple" prefix. Well, naming software is hard! I'll just keep it as a temporary name for now. Thanks!
As a personal anecdote, recently I installed a co-op videogame on my Linux Steam machine and I couldn't get past the main menu, I wasted quite a bit of my own and my friend's time before realizing it was a bug in the Linux build. After reinstalling the Windows version through Proton everything worked flawlessly.
Please don't publish a Linux build unless you plan to test and maintain it.
Then what's even is the point of this license? There will always be a third party distributing unofficial binaries.
And if this license forbade third parties to redistribute binaries, then it would no longer really be FOSS.
Fair enough, but then it's the same thing as open-sourcing the code but not providing support nor binaries.
I mean, personally I also prefer it to FUTO's proprietary license, that's for sure. But I'm one of the few privileged users who can build from source.
If this license doesn't impose any extra restrictions on the code (and as you say, anyone can fork and provide prebuilt binaries), then this would just increase the risk of spreading malware, with no real benefits for the original developers.
In my opinion, if you want to monetize your software without going proprietary, all you have to do is provide the users a convenient way to get it. There are some paid FOSS apps on Google Play, as well as some paid FOSS games on Steam. You don't want to distribute binaries? Fine, okay, that's alright and I respect your choice. You don't want to provide support to non-paying users? Fine, that's very reasonable in my opinion. But...
...do you want to impose extra restrictions on your code? Fine to me, but then you are no longer doing open source, don't try to pretend you are. And if you are not imposing any restrictions on the code then you are imho just going to hurt small users. We shouldn't fight small users imho, we should fight the big corporations exploiting FOSS code for their proprietary businesses. But if there are no extra restrictions on the code, then big corporations wouldn't care.
That's my opinion.
I'm not a lawyer, but this doesn't seem to be compatible with (A)GPL licenses.
I would say this is going to harm small users more than big corporations. As a small user I might be unable to build from sources myself, so I would have to pay. But as a big corporation building from source would be something I can certainly do trivially, then I wouldn't be subject to the restrictions imposed by this license.
Imho, if someone wants to force their users to pay, then they are not doing open source. Please let's not try to pretend we are by adopting a OSI-approved license and slapping extra restrictions on top of it.
Just go AGPL for datacenter-oriented softwares, or GPL for drivers and embeddable code, or a proprietary license such as FUTO's for end-user software.
All repositories related to emulation and Nintendo, some of which I backed up on a self-hosted Forgejo instance.
Also, everything that you use and doesn't have more than 2 or 3 maintainers.
If your question is about the legal difference: this fork is licensed as GPL 2 (free libre open-source software), while the OG is proprietary (albeit source-available).
This means that everyone is allowed to do anything with this version and nobody can ever prevent them from doing so, while the OG doesn't have such freedom.
The original authors might one day decide to halt the development and pull the source code, and/or decide to start "enshittifying" Aseprite, but LibreSprite will forever remain free and available to everyone.
For me it was the same drive. I remember I had to generate a special file to convince VirtualBox to use the physical partition as if it was part of a different drive. I don't remember the details. Quite hacky perhaps, but it worked.
Iirc I had a Windows 7 (maybe 8 or 10) Home OEM, original (not cracked), but it still worked. Perhaps if I had kept using it for long periods in the VM it would have started complaining? Anyways I booted it baremetal from time to time, so maybe that's why it kept working.
That would definitely be a technical challenge, but also it's absolutely possible.
I used to do dual-boot Windows + Linux and I could run the Linux installation from a VM in Windows as well as the Windows installation from a VM in Linux.
When rebooting between metal and VM, Windows would always spend a few minutes "doing things" before continuing to boot, but it worked.
Linux would not even fret. It would just boot normally without any complaints.
I don't remember exactly which distro I had at the time, but probably it was Linux Mint.
If you don't want proprietary drivers the choice is quite straightforward: AMD. The official drivers are open source.
As for my experience, I've had absolutely no problems in the last few years with AMD, but I have to admit that I have always been using an iGPU, which has always been good enough for my needs.
I used to have problems with Nvidia proprietary drivers, but that was at least a couple years ago, things might have changed. I've never had issues with the free unofficial drivers, besides worse performance.
FYI this has already been a thing for a long while thanks to an open source third-party implementation, and also works on Windows 10. I use it all the time, it's very similar to Linux's and I've never had any issues so far. Not sure if Microsoft's official solution will be any different/better.
Yeah, I realize that and that's a nuisance for a videogame... If the game is small enough, OP might be able to give it a virtual GPU with VirtualBox, I did it in the past to play with friends on a single computer. I don't know if the usual KVM-based VMs support it as well.
Oh yeah, I used Joplin in the past. Although the goals are quite different from my idea. Joplin is a great recommendation as an alternative to Google Keep, but it's not real-time collaborative (or federated, for what it matters).
Ah, I don't remember this option. Maybe it wasn't available when I tried it last time a few years ago. I guess that means Joplin is still being actively developed.
Oh! I just noticed that they have quite a few things besides Docs. I mean... I probably should. My goal is for something much smaller, I just want a replacement for Google Keep, and some day in the near future, SplitWise. Joplin sounds like a better candidate than Numerique.
Thanks for pushing to collaborate, I realize that would actually make more sense than starting a new project from scratch. Not without guilt, I have to admit that I code for fun, and I have more fun working on something that works exactly as I envision it rather than just joining another project. Someday I might learn how to make some real contributions to existing software, but I don't think this idea of making a simple replacement for Google Keep will be my trampoline to working this way. Still, thank you for trying to push me to do it!