voat / voat-android

Official voat Android app repository
GNU General Public License v3.0
13 stars 5 forks source link

What technology should we use? #2

Open yotamN opened 9 years ago

yotamN commented 9 years ago

Before someone start building the application for Voat I think we should first start and think how are we gonna do that. I thought about using Steroids so we could create iOS and Android app with the same code, what do you think?

kmark commented 9 years ago

Just happened across this. I'd recommend avoiding all "cross-platform" solutions if this app isn't time-sensitive. The only decent one I'm aware of is Xamarin but that is cost prohibitive. AppGyver Steroids looks interesting but building the app with JavaScript (or CoffeeScript) isn't. Are there bindings for Google Play Services and all Android-specific APIs on the free version? I'm not sure about iOS but for Android it looks like the app, at the end of the day, is still one big WebView.

Jawnnypoo commented 9 years ago

I currently have a pull request in the queue for creating a native app. Still waiting on the site to be up so that I can flesh it out further. But I am certainly going to advocate for native development, as it provides the best user experience in most cases for a complex site like voat

yotamN commented 9 years ago

@kmark With steroids you have access to Cordova's API, this is what you get:

I think it's more than enough for the app, I think we should use this instead of native solution because the app doesn't going to need too much access to the system and cross-platform solution like steroids will be more time efficient.

Jawnnypoo commented 9 years ago

While I am sure you could build an app using this framework, I firmely believe that if Voat wants to be taken seriously and compete with third party native apps (since there are already a few on the Play Store) they will need to go native as well. Since the app will be open source, I am sure there would be many Android devs willing to take the time to commit to the project. On the other hand, if you had someone come to check out the Android/iOS repo and see that it uses a specialized cross platform solution, people will turn away. It may get something out fast in the short term, but as a long term solution I believe it would hurt Voat. A big problem with reddit in my opinion is that it has no official native apps, and this created fragmentation of native users. With a strong native app, an app that people are happy to use, Voat will be off to a correct start.

lyndsysimon commented 9 years ago

A quick win might be to see what third-party Reddit apps are using as an API client (BaconReader on Android, Alien Blue on iOS) and see if we can't write a wrapper for it to connect to voat instead.

Doing this first would let the existing third-party app community quickly roll out Voat apps that share much or all of their code with their Reddit apps.

kmark commented 9 years ago

@lyndsysimon So effectively wrap the voat API around reddit? That's interesting and just might be worth it. I wonder if the voat team would have any objections to creating their official API similarly to reddit's to help improve developer adoption.

If we're going to create this wrapper as an online alternative API for reddit apps we need to make certain there's a way to change the URL the app's connect to.

lyndsysimon commented 9 years ago

While I think it would likely be fine, I'm hesitant to suggest that voat's own API be a mimic of Reddit's. Google and Oracle have been fighting it out in federal court for some time now about whether or not an API design is copyrightable.

I'm not familiar with Reddit's "CPAL" license, but I do know that the library I've used in the past for interfacing with Reddit in Python (praw) is licensed under the GPLv3. In my experience such libraries, even those in other langauges, are almost always licensed under similar terms.

By forking and modifying these libraries, we would avoid any potential legal issues that might arise from Reddit claiming that we are infringing upon their copyrighted API design.

kmark commented 9 years ago

Good catch with that Google v. Oracle case. I stopped following it awhile ago and last I heard of it Google was in the clear. Looks like that has changed.

It looks like, unless there are any other opinions, a native app is the consensus.

Jawnnypoo commented 9 years ago

Native app is in progress, and I am working pretty closely with the new API and API developer right now. Come join me if you want to help out. Should have a fully functioning app by the end of the week.

https://github.com/Jawnnypoo/voat-android

lyndsysimon commented 9 years ago

I've absolutely zero experience with mobile development, outside of some play apps I've written using Python + Kivy. I'll drop by :)

ntkachov commented 9 years ago

Whatever API voat could/do use, the sites functionality is so similar that they shouldn't worry about anything other than building what makes sense for them. Worrying about this issue before there is a real API is silly. Build the best thing for your use case and let the lawyers sort things out later. Also voat is in Sweden, you might get different laws applying in this case.

lyndsysimon commented 9 years ago

Whatever API voat could/do use, the sites functionality is so similar that they shouldn't worry about anything other than building what makes sense for them.

I completely agree there - voat is voat, not Reddit. I see the group talking in this thread as almost a separate team from voat itself. If we can do something now to promote adoption, then we can get to work on that while voat itself matures further.

Worrying about this issue before there is a real API is silly.

This seems like a false dichotomy. No one is stopping work on voat pending the results of our discussion. Working on API and encouraging adoption seems to be the most effective use of our time.

Build the best thing for your use case and let the lawyers sort things out later. Also voat is in Sweden, you might get different laws applying in this case.

Good point on it being in Sweden.

I'll also add that there are going to be people who are only interested in the mobile app side of things. I for one don't even have a Windows machine available to run .NET and hack on voat itself. Installing the whole stack, learning C#, and learning the build environment for it all at once is too high a barrier for a F/OSS project for my taste. Installing Android Studio and brushing up on my Java is a much more reasonable approach, and I anticipate being able to knock out a bug here or there whenever I have a few minutes of free time.

kingflurkel commented 9 years ago

Why not Polymer / web components, some cordova to build native app?

kmark commented 9 years ago

For the same reasons as Steroids, if my understanding of Cordova is correct.

yotamN commented 9 years ago

Steroids is Cordova but better, it's use chromium so you don't need to support that crappy Safari browser.

stevenroose commented 9 years ago

C# would be preferred by Voat devs I suppose. Xamarin seems to be the only choice there. Sadly it's not free. However, being such a large project, Voat might be able to get a lifetime-free deal with Xamarin, they might see it as good publication.

Cordova works, but is not very performant. Javascript is hell. As an avid Dart enthusiast, I recently discovered Sky, a cross-platform framework for Android and iOS development using Dart. It's built by a Google employee mainly, so probably Google-backed. But it's far from mature, so not a good applicant if you want to get the app out fast.

Even though I don't have the time myself to work on this, I'm interested to see what framework gets chosen :)

yotamN commented 9 years ago

@stevenroose Does someone really use Dart except Google developers? TypeScript is better and even Angular 2 (Google's MVC Framework) recommend TypeScript

stevenroose commented 9 years ago

The Dart community is young, but growing. I think statements like "Typescript is better" are very bold.

Currently, Angular 2 is developed for JavaScript and Dart in parallel, so that will benefit Dart adoption because up till now, the Dart team has always worked separately implementing API's after the JS version are released (see Angular 1 and Polymer).

I know it's off topic, but allow me shortly. Typescript is basically just Javascript in a fancy coat. That's good, because JS needs that coat because plain JS is ugly and cumbersome to work in. However, Typescript will always keep a lot of the disadvantages baked into JS. Dart on the other hand, can run perfectly without having anything to do with JS. For the web of today, it has to compile to JS (just like TS does), because JS is the language of the browser. But Dart also has its own VM runtime, which is much more powerful. Dartium is an example of a case where Dart is used without any JS runtime. Sky is another one. Sky is not like Cordova, there is not browser intermediary. It's the Dart VM running on mobile devices, giving it high performance and high frame rates. Some things that come to mind that the Dart VM supports and JS/TS does not is multiple inheritance (TS has an ugly mixin workaround, but Dart supports MH), large integers (JS is limited to 53 bits, Dart VM supports dynamically sized integers), multi-threading (apart from asynchronosy, Dart also supports real multithreading using Isolates; I think WebWorkers might bring that to JS too i/t future).

Back on-topic: I think Voat prefers sticking to C# :)

choikwa commented 7 years ago

well, Xamarin and VS went free now... so what now?

kmark commented 7 years ago

As long as it stays OSS Xamarin / VS Community should be free. According to the Microsoft Software License for Visual Studio Community 2015:

Any number of your users may use the software to develop and test your applications released under Open Source Initiative (OSI) approved open source software licenses.

So a license must be selected from here: https://opensource.org/licenses Shouldn't be an issue.

marlid91 commented 5 years ago

Three years (+++) later and still no app.

smaragdus commented 5 years ago

It is a pity and a shame that there is no official Voat client for Android- using browsers to access Voat is a pain.