I’m planning a large open source project, a secure and distributed social media tool (the existing ones I know of aren’t secure). I’m looking into Meteor, have read a lot about it, and am excited to use it if it can do everything I need. I’ve looked at other cross-platform development tools, and they don’t have what I need:
open source and not corporately-controlled
HTML/CSS/JS for layout
HTML templates to separate design from code
a seemingly happy and active user community
This project would not be web-based, but would be mobile apps on Android and iPhone (desktop client app maybe later). This is needed for security, so that users don’t need to trust servers with plaintext personal information.
My questions right now are:
Can I use plain old TCP and UDP sockets in a Meteor app?
I plan to store data only on the client side, i.e. on the mobile device, not on any server. Is it possible to use Meteor this way, i.e. MongoDB or other datastore on the client? If a server/daemon is required, is it simple to have it run locally on the same device as a client, securely?
This app will have the UI process, and probably a different process to listen to an open socket for messages from the network. Is it possible to fork() a new process or thread, or alternately, does the JS event model handle this cleanly enough in the one thread?
How is app responsiveness these days when using HTML/CSS/JS? I know it used to be slower than native apps, but that was a few years ago.
I assume a Meteor app can access a device’s camera and other hardware, right?
By any chance, is it possible to link in or call Java or other libraries with Meteor code? I’d like to make using Tor an option, and Orbot (Tor proxy on Android) is written in Java. I may also want to use code from the secure messaging tool Briar. If linking or calling this way isn’t possible, I may be able to translate the Java to JS, with GWT.
I realize this is not the usual Meteor model of reactive client-server apps, but I like Meteor’s other features.
Note that the whole system will probably have servers, but they will be written separately. Servers will do little more than pass encrypted messages among clients and other servers. There may be a second kind of server: a trusted personal server to encrypt and send messages e.g. to all friends, in order to minimize battery usage and traffic on the mobile device.
Thanks so much for any answers! All relevant thoughts or advice are most welcome and appreciated. (I would have asked stackoverflow, but I believe they frown upon asking for recommendations.)