dotnet / android

.NET for Android provides open-source bindings of the Android SDK for use with .NET managed languages such as C#
MIT License
1.92k stars 526 forks source link

Publish a roadmap #1626

Closed andre-ss6 closed 5 years ago

andre-ss6 commented 6 years ago

What are your plans for the platform for the next years? Will you keep updating the platform? Do you plan to make the current experience better? There are still outstanding issues from over two years that haven't been fixed. Do you plan to fix those? When?

Right now, from the outside, it looks like you are obsoleting the classic platforms in favor of Xamarin.Forms (or at least plan to do so in the near future).

I want to know if I can invest my company's resources into this platform.

jonpryor commented 6 years ago

What are your plans for the platform for the next years?

Fix bugs and improve reliability and performance and aim to provide the best developer experience possible.

Will you keep updating the platform?

Yes.

Do you plan to make the current experience better?

Yes. :-)

There are still outstanding issues from over two years that haven't been fixed. Do you plan to fix those? When?

At this point, I don't think "completely bug free" software is possible...unless you're Donald Knuth and writing TeX.

We don't have unlimited resources. We fix what we can, improve what we can, and endlessly debate the boundary between "bug" and "feature" (e.g. is improving build times fixing a bug, or working on a feature?). There will almost certainly continue to be bugs, and we will do our best to address them.

Right now, from the outside, it looks like you are obsoleting the classic platforms

What specifically gives you this impression? Xamarin.Android master has a prototype API-P binding, though we're still trying to figure out how best to release that binding for people who don't use Jenkins Build Artifacts.

andre-ss6 commented 6 years ago

@jonpryor Wow! Thanks a lot for the meaningful response! I confess I've been a bit stressed out with Xamarin these last days as I've been trying to convince my company to switch to Xamarin, but, well, let's say the current issues aren't helping.

At this point, I don't think "completely bug free" software is possible...unless you're Donald Knuth and writing TeX.

Hehe, of course. But let's not fool ourselves. I mean, Mono.Android is great in every sense. Performance is great; translation is great; API support is great...

However.

The current tooling/design/environment overall experience is quite poor. Android Studio (AS) seems like another world of development compared to Android in VS:

And I could go on. But for that we have our in-the-thousands Bugzilla. And Github. And UserVoice. Oh, and we're not even talking about iOS/XCode here. That could go on for even longer.

Now, please, don't get me wrong. I'm not saying AS has no issues, or any other IDE/framework for that matter. But, please, let's be honest. Look at the rest of the VS/.NET development experience. When was the last time you spent a week fighting the IDE/compiler/tooling? Or even a day?! Not even .NET Core pre-releases (and even the first official releases) ever managed to give me so much headache (and boy did I have headaches with it). We all know these cryptic errors are well too common with Xamarin. Couple that with the subpar design experience and it starts to become really hard to justify using the tool.

It's very different when you're just building your personal software: you're free to spend as much time as you want in order to use your favorite IDE/language to develop for whatever platform. And that's why I stuck to Xamarin. However, convincing your company to invest its resources into a platform which could make developers waste 3 hours a day (in the best estimate) just:

Well. It's a hard thing to do. Especially now, when we have iOS support in Kotlin - which is one of the freaking official Android dev languages! - and Flutter, which seems to spend more with marketing than the entire mobile division at Samsung. We're not in a Java/Obj-C vs C# world anymore. Even though I completely love C#, the [absolutely crushing] competition against Xamarin makes me want to switch.

Anyway, sorry for the wall of text. But I think it was necessary to really make my point as clear as possible. I'll address the remaining points in the next reply so this doesn't get too much big.

andre-ss6 commented 6 years ago

[...] endlessly debate the boundary between "bug" and "feature" (e.g. is improving build times fixing a bug, or working on a feature?)

I know this is the Xamarin.Android repo and you're from the Xamarin.Android team, but I guess there must be some overlap...

Yea, I agree that it may be hard to decide whether improving build times is a bug or a feature - a normal PBI. However, is it that hard to decide between "stabilizing tooling" vs "XAML Intellisense" or "CSS styling"? And this brings me to the next point.

What specifically gives you this impression? Xamarin.Android master has a prototype API-P binding

I know you've been still hard at work with Xamarin.Android and I also know about the P bindings. I've even been using that as evidence that the platform is still evolving. However, to be honest, I'm yet to fully convince myself of that.

Since the Microsoft acquisition, there seems to be just so much focus on the Xamarin.Forms platform. We barely hear anything about the classic platform. Forms has a full roadmap planned and published, with complex and/or time-consuming features planned and being worked on. We see Xamarin.Forms news in the VS Start Page every month. In the meantime, we classic developers still get to experience the same frustrations we did way back on 2016 (I won't dare to go way too much back because I don't have the knowledge/experience), with no info whatsoever as to what the devs are doing. And if I understand correctly (and I may be very wrong), Xamarin.Android and Xamarin.iOS will of course keep adding support for newer API versions because Xamarin.Forms benefit from that.

You see things like the Xamarin forums filled with furious rants about how the platform is bad; reddit filled with negative comments about the platform; the SO Developer Survey 2018 showing Xamarin as the second most dreaded framework among developers; medium posts just hating constantly on the platform; And in every one of these places (except for the Xamarin forums, of course) you see all kind of people - PMs, Evangelists, etc - from a lot of different technologies/frameworks (such as Kotlin, Dart and RN), asking for feedback, trying to convince people to use their platform, trying to understand people frustrations... And yet nothing from Xamarin.

Now, of course marketing from other technologies won't kill Xamarin. I'm not saying that. But let's just remember that Microsoft has some pretty long history with abandoning frameworks/redoing things from scratch. So yea, my biggest fear is not that Xamarin will be abandoned by the community - instead, that it will be abandoned by Microsoft.

I hope this makes it clear as to why I feel insecure about the future of the platform.

touseefbsb commented 6 years ago

@andre-ss6 I am a ex-Microsoft Student Partner and a passionate uwp platform developer, (I develop apps for windows 10 ). as u might be guessing I am a big C# and VS fan. but I want to thank you for all the explaination you gave in above 2 comments. I am trying to pick a framework bcz I want to start my career in android development for now, ( and maybe in IOS as well in future ) so that I can expand my apps to more devices. I came across kotlin and absolutely love it, but I had to admit there is a learning curve right there, and when analyzing closely I maybe wrong but I still think c# already had those features which kotlin is wowing people with. and c# is improving every month and very fast and modular to use, so I will always prefer c# over any other language in the world even if it is kotlin, that is why I am excited about "Blazor" ( using c# at client side of web, an experimental project by Microsoft currently in 0.3.0.0 version ) .

I am researching with lot of confusion and headaces, I want to select a framework for long term to develop android, and most of my apps will probably also be on uwp as well as on android ( and apple devices, when ill be able to afford their developer account cost :P ) that is why I was inclining towards Xamarin native ( I don't like performance of Xamarin.forms ) but I have to agree with u, I am no expert but Xamarin.android seems to have many problems, another big issue, I want to add that it has limited community, hence 3rd party libraries seem to always be outdated and very less as well. as far as any aspect of community contribution is concerned ( stackoverflow, GitHub, packages, etc ) Xamarin is not good enough, I think native android is much good at that, and by native I mean kotlin, ( because I hate java )

I would really appreciate if you could help me or guide me in making this decision, and yeah I am an indie developer , and I don't work for anyone else, there are pros and cons of each sides, if I pick kotlin, then I wont have an easy access to Microsoft Azure services like Azure AD B2C or any other azure services bcz they seem to give updated samples in uwp and Xamarin but not in android ios native. I have a msdn subscription for my azure account so I prefer to use Microsoft cloud and don't want to move to google cloud or any other. so keeping that in mind, Xamarin again seems to be a better option. but ofcourse I am just one person and my knowledge can be out dated in many areas.

Yes you are also right about flutter ( dart ) is in early stages but seems promising, only problem I see with that approach is , that it is not native they mimic native UI like ionic does. but have u tested , is their performance as good as native? also I don't get it, google made flutter and google also supports kotlin as first class android dev language? why ? why not keep focused to just 1 of them? and then they have kotlin native to share code with ios as well? flutter uses very less code comparatively, but again, it uses plugins for native APIs of the platforms, and how many plugins are there? how much time it will take for community to have all plugins present in native apis?

I would really appreciate if you can help me a little, and thanks again for all the explainations u gave above.

andre-ss6 commented 6 years ago

@touseefbsb Well, first of all let's not derail this topic please :). But I'll try to answer your questions.

I would really appreciate if you could help me or guide me in making this decision

It's a bit hard for me to help to answer this because I'm facing the same dilemma. I think that if you just love C# and .NET and you don't have the responsibility of reporting your team's productivity and won't be blamed by managers on bad technical decisions, than yea, go for it. Embrace Xamarin. It has issues, but you'll be working with C#. But if you're working on some really serious project (meaning: you have to report back to someone), then, well, wait with me for a response here so we know what will be the future of this platform. Lastly, if your app uses some really complex niche tool like offline geocoding or specialized image processors, then know you may not have a good time with Xamarin; Kotlin's learning curve isn't really that steep and as you've guessed, C# and Kotlin shares a lot of the same features, so you've already got some background knowledge there.

In relation to Azure, I don't think it matters much what framework you choose. There are plenty of support for plenty of different technologies. Azure is meant to be completely technology-agnostic. It was renamed from Windows Azure to Microsoft Azure for a reason hehe.

In relation to Flutter, well, it's anyone's guess. As you've noticed, Flutter is something like of a competitor to Kotlin - that is because Flutter is not really "a Google project" in the sense that the company is really putting weight behind it - it's more like a internal project that got greenlighted. So yea, although it seems very promising and looks really attractive, I think the risk associated with Flutter is way, way higher than with Xamarin (at least right now. That may change drastically in the next months).

touseefbsb commented 6 years ago

Thanks that clarifies a lot. I think I might go for kotlin as learning it wont hurt and in the long run I will get every android feature support simply and easily. but I will keep on eye on xamarin progress as well, if it gets better I can switch to xamarin as I am the decision maker in my scenario lol

JonDouglas commented 6 years ago

@andre-ss6 @touseefbsb

First off, I hear you both. I understand your frustrations. I'd like to help provide a little more perspective.

There is a Visual Studio roadmap that outlines a general direction of work going into Visual Studio:

https://docs.microsoft.com/en-us/visualstudio/productinfo/vs2018-roadmap

Although not all Xamarin-related work is listed here, this high-level roadmap is updated to help give a sneak peak of what's to come. For upcoming release specifics, you can read our preview release notes which typically highlight features and bug fixes.

The Xamarin.Android repository however is used for the Xamarin.Android SDK. Items such as the Android Designer, Android IDE integrations, Missing Android library support, etc are best reported via Developer Community. If you ever have doubts of where to file an issue, you can find documentation here.

In the context of this repository, we could add a wiki or documentation page to outline the general roadmap of the Xamarin.Android SDK which would include things like bindings for the latest version of the Android Platform APIs, Support for Android tooling like aapt2/d8/r8/, Support for Instant Run, etc. Majority of these items are already existing pull requests or inside feature branches.

We are working to improve our overall Android experience roadmap to show more new features that will be included in a future Visual Studio version. This is still a work of progress as shown in the Visual Studio Roadmap.

For general Xamarin.Android related pain points, I'd like to invite you both to email me and we can setup a call to walk through them. My email address is in my GitHub profile.

I hope this helps!

touseefbsb commented 6 years ago

@JonDouglas I appreciate it. but obviously we cant disturb u everytime we encounter a bug or a problem with xamarin.android. one of the worry points are the 3rd party libraries, which seem to be usually out dated. do u have any solution for that?

andre-ss6 commented 6 years ago

@JonDouglas Thank you for the response! I really appreciate it!

The Xamarin.Android repository however is used for the Xamarin.Android SDK.

I know this is important to you as a Xamarin developer, but you have to understand that as customers we don't care . And I don't mean to come off as rude or offensive in any way - it's just that all developers know this: when a customer complains about something, you can't just tell them "oh that's because you're not using it the way we initially built it to be used". He doesn't care. He just want his feature. And the guys at Microsoft seem to understand this, since, as I said in an earlier reply, Xamarin.Forms news are all over the place: Visual studio blog/start page, Visual studio magazine, Twitter and of course the official roadmap on GitHub - which is full of big features planned. So I don't care if the official roadmap is here or elsewhere, I just want to know when (or even if!!) the mentioned issues will be resolved.

I know it isn't that simple, but I don't know, can't you just talk to each other in there, maybe talk to the Visual studio PMs, and tell them that although Xamarin may be a great technology, it isn't that great of a platform? Coding in C# may be awesome, but the issues are simply too intrusive to ignore. It feels completely different to work on a Xamarin project and an ASP.NET project. The difference in quality of the tooling/stability is just too big. When I'm working with Xamarin I feel completely out of vs. Just do a quick search on Google on "Xamarin sucks" and you'll see dozens of forums posts complaining about a myriad of issues. But what is really sad is to see that these issues people complained about back in 2016 are still present in the product, two years later. The other day I asked on Reddit if Xamarin is any better - since I hadn't worked with it for some months - to try find arguments to convince my team and myself to make the switch, and people just bashed on the platform, telling me to stay away from it (funny: a flutter PM, which used to be a visual studio PM at Microsoft until recently, replied to the thread, defending Flutter from some accusations, encouraging me to use Flutter and offering help. They must have a marketing department :joy:). I still came back to Xamarin though, only to find out they were right. Anyway, I digress. I'm sorry, it's just too hard to contain the sorrow and rage.

We are working to improve our overall Android experience roadmap to show more new features that will be included in a future Visual Studio version.

This seems awesome! Even if the current experience may have some issues, knowing that they'll be resolved and how the platform will evolve is enough to be able to make a conscious decision on whether or not to bet your resources on it. This may even spark more interest around the community, inviting more contributors, of which the platform is really in need.

By the way: maybe Android studio integration would pay off more than vs. One of the things I'm considering doing here is to let people keep using AS and make an internal extension to keep files on sync (I know there is such an extension on the marketplace, but I also had problems with it).

For general Xamarin.Android related pain points, I'd like to invite you both to email me and we can setup a call to walk through them.

Sure! I'll keep note of this. Thanks! Currently I'm just asking my team to hold on as I keep investigating on how to avoid these issues with Xamarin. If we do choose Xamarin and we have any problem I'll make sure to go after some help!

JonDouglas commented 5 years ago

We have made a conscious effort to include all high level features in the Visual Studio Roadmap and Visual Studio for Mac Roadmap that should give you an idea of where Xamarin is headed.

For specific features inside this repository, we work with both Pull Requests and Projects. This can give you an idea of what is being worked on, and when it will land with the respective Milestone or Branch being added to.

Additionally, you can now Suggest a Feature which, if accepted will be added to the public roadmap.

We will consider in the future a repository specific roadmap for features not included on the roadmap. These typically are included in our release notes today. However for the time being, we currently aggregate all of the high level items to the Visual Studio Roadmaps. Thus I am closing this issue for now.