firebase / quickstart-android

Firebase Quickstart Samples for Android
https://firebase.google.com
Apache License 2.0
8.85k stars 7.32k forks source link

[Proposal] Quickstart Kotlin #557

Closed thatfiredev closed 6 years ago

thatfiredev commented 6 years ago

It has been more than a year since Kotlin became an official language for Android. It is being widely used by Android Developers and most of android samples and blog posts found on the internet are written in Kotlin nowadays.

I suggest rewriting, in Kotlin, the same android samples contained in this repository. Maybe pushing it to a new repository, since the java samples are also helpful.

samtstern commented 6 years ago

@rosariopfernandes thanks for bringing this up for discussion!

We are definitely working on bringing Kotlin to our Firebase developer materials, alongside Java. The first thing we need to do is get our reference docs in order (since those are the most basic thing) and then we can move on to snippets and samples.

the-dagger commented 6 years ago

@samtstern Any tips on how folks can help the firebase team with the conversion? Maybe starting off with the reference docs is something that we can help you out with?

samtstern commented 6 years ago

@the-dagger we're actually going to put reference docs on hold for now and jump straight into getting Kotlin snippets alongside the Java snippets in our guides. I will be working with one of our tech writers int the very near future to start this.

I still have to think of a plan for getting Kotlin into this repo in a maintainable way that still makes it easy to navigate. In snippets-android we defined common interface between Kotlin and Java classes but that doesn't work as well for an app.

the-dagger commented 6 years ago

I see, @samtstern that makes sense. How doing something similar to what the official Android docs do? They have separate packages for Android and Kotlin for the docs.

screenshot 2018-07-24 at 10 06 03 pm

This might however be an issue when Dart arrives later on down the line, but happy to brainstorm more on this if you'd like to 👍

samtstern commented 6 years ago

@the-dagger yep that's the most likely course. Can you link me to that repo? Also what editor/theme are you using? Very pretty haha.

the-dagger commented 6 years ago

Sure, here you go! https://github.com/android/snippets

Let me know if there's a way I can help, happy to do so 🙂

For the theme, I'm using a chrome extension named Octotree, makes it super easy to browser github repos! https://chrome.google.com/webstore/detail/octotree/bkhaagjahfmjljalopjnoealnfndnagc

screenshot 2018-07-24 at 10 12 45 pm

Edit : @samtstern I looked up a bit more on this and found out that Google Maps samples do something very much similar with 2 packages, one in Java and another one in Kotlin.

https://github.com/googlemaps/android-samples/tree/master/ApiDemos

the-dagger commented 6 years ago

@samtstern A gentle reminder on this one. Really excited to see Kotlin support for the quickstart samples.

samtstern commented 6 years ago

Today I sat down with our writers and hashed out a plan to get Java and Kotlin equality on all docs. Once that's done (will take a bit of effort) the quickstarts are next in line!

On Wed, Aug 1, 2018, 3:32 PM Harshit Dwivedi notifications@github.com wrote:

@samtstern https://github.com/samtstern A gentle reminder on this one. Really excited to see Kotlin support for the quickstart samples.

— You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub https://github.com/firebase/quickstart-android/issues/557#issuecomment-409746616, or mute the thread https://github.com/notifications/unsubscribe-auth/AIEw6tc2IRMtm9EQmqe2Ud7ZQi59XNLWks5uMiyPgaJpZM4VJzI2 .

the-dagger commented 6 years ago

Awesome, that sounds like a plan! Looking forward to it, should be fun haha.

samtstern commented 6 years ago

@the-dagger @rosariopfernandes ok it's now time to start making this a reality. But I think we need to think really carefully about how we want to do this.

Some options:

Some nice things I'd like to preserve:

the-dagger commented 6 years ago

@samtstern awesome, sounds great! I would go with the following option :

Build Kotlin and Java together and insert a first screen in the app where the user decides to run either the Kotlin or Java version

This will not only be much easier to implement, but we can also use interfaces like we did with snippets to ensure that the Kotlin/Java code snippets are always in sync with each other. And as a bonus, we can also easily share resources among different activities.

The build times shouldn't be an issue imo!

@rosariopfernandes your thoughts?

thatfiredev commented 6 years ago

I think this

Create a whole new module for each quickstart in Kotlin. So auth and auth-kotlin

sounds good, but I'm afraid people might run into issues like this and not be able to fix it due to the large amount of modules in the project.

So I agree with @the-dagger . I think creating a first screen sounds like the best option.

samtstern commented 6 years ago

@rosariopfernandes @the-dagger you two are ridiculously productive. Thank you for all the coding and reviewing today. I'm going to leave for the weekend now, so I will pick this back up on Monday morning.

SO excited to see Kotlin happening here. Without your help it would have taken a long time and the code quality would be lower.

the-dagger commented 6 years ago

Kotlin FTW! ❤️

samtstern commented 6 years ago

It's done!

@rosariopfernandes @the-dagger I can't say enough good things about your work here! Not only is this a big win for Firebase developers, but I learned a ton about Kotlin from working with you.

THANK YOU

ezgif-5-93ec62c484

the-dagger commented 6 years ago

Always a pleasure, working on this was a lot of fun :D

screenshot 2018-09-14 at 9 12 56 pm
thatfiredev commented 6 years ago

Woo hoo! :tada: It's always a pleasure to help Firebase Developers and I've also learned a lot from you guys. I just realized we've all been working on different timezones :sweat_smile: and it's amazing what we've accomplished in just a few days.

Now I can't wait to see the Kotlin Docs on the Firebase site!

Dread it, Run from It, Kotlin still arrives :sparkles:

samtstern commented 6 years ago

Kotlin docs on firebase.google.com are (thanks to this work) no longer blocked by anything. Unless something goes wrong we'll start adding Kotlin one product at a time over the next few weeks.

samtstern commented 6 years ago

@rosariopfernandes @the-dagger check it out! https://firebase.google.com/docs/storage/android/start

All of the Cloud Storage Android docs now have Java / Kotlin side by side! We're going to convert each product one-by-one, so more should be coming soon.

thatfiredev commented 6 years ago

Whoop Whoop! :confetti_ball:

the-dagger commented 6 years ago

This is great news! Kudos to all of us. 🎉💯🚀

samtstern commented 6 years ago

Auth landed! https://firebase.google.com/docs/auth/android/manage-users (and all other pages).

That was a big one, auth has a lot of snippets!

I am sure you'll stop caring at some point, but I will post here as each product gets Kotlin-ized for my own enjoyment haha

the-dagger commented 6 years ago

Awesome! I still remember picking this one up as the first snippet and then regretting it later on. 🤣

samtstern commented 5 years ago

FYI we're getting back to publishing more of the Kotlin docs (finally!). Almost everything besides RTDB and Firestore are done and published, those two are coming soon as well.

Example: https://firebase.google.com/docs/ml-kit/android/use-custom-models

the-dagger commented 5 years ago

Yay!! 💯🎉

samtstern commented 5 years ago

Anddddddd it's done! We got all the Kotlin snippets into all the pages. The only stragglers might be the "setup" pages for each product since they use a strange format (and are consumed by Android Studio for tutorials) but even those will be mostly sorted out within a few days.

thatfiredev commented 5 years ago

Woo hoo! Awesome news. I'm glad our work is now public :laugh:

On Fri, Nov 30, 2018, 18:30 Sam Stern notifications@github.com wrote:

Anddddddd it's done! We got all the Kotlin snippets into all the pages. The only stragglers might be the "setup" pages for each product since they use a strange format (and are consumed by Android Studio for tutorials) but even those will be mostly sorted out within a few days.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/firebase/quickstart-android/issues/557#issuecomment-443259385, or mute the thread https://github.com/notifications/unsubscribe-auth/AP_XBgaJg6lN9W6B8ySzXhmuihNhEYvoks5u0V0ngaJpZM4VJzI2 .