Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Amplify should be built for Amazon first, then developers! #7174

Closed
nubpro opened this issue Nov 12, 2020 · 7 comments
Closed

Amplify should be built for Amazon first, then developers! #7174

nubpro opened this issue Nov 12, 2020 · 7 comments
Labels
DataStore Related to DataStore category feature-request Request a new feature

Comments

@nubpro
Copy link
Contributor

nubpro commented Nov 12, 2020

Today, let's talk about AWS Amplify project as a whole, I would like to touch on a controversial subject (if it isn't one yet) which is regarding to its existence. Been using Amplify for 6-7 months and I'm noticing there's a pattern on the GitHub page, specifically there's a vicious cycle in the development of Amplify. Any PM or SE thinking of adopting Amplify in a real world project should read on.


My Experience of using DataStore

The project that I'm working on is grossly tied to Amplify and I'm the developer building the app with DataStore. The main driving force of adopting DataStore is that it comes with offline support that it's going to dramatically cut down the development time. What I'd got instead is I'm spending most of my time digging into Amplify source codes to pin point the problems and being super frustrated and disgruntled using DataStore.

My app crashes when it suffered internet connection drops
My app does not sync with the server after the device returns from sleep

I'd to address these problems myself with this PR #6366 and #6436 respectively.

The more I use DataStore, the more problems I discover. This leads me to believe there's no absolutely no projects on Amazon that is using Amplify and DataStore currently or probably in the future. Why you'd ask?
There's many fundamentals of DataStore that is straight out broken which is totally game breaking to absolutely any projects.

Three major flaws:
Performance - #6996 #6994
Resilience - #6162 #6488 #7036
Reliability + Usability - #6542 #6361 #6363


The Vicious Cycles

Vicious Cycle 1 (Stable release?)

  1. Amplify comes out with a new feature.
  2. We, the developers is the first hand user to test out these features.
  3. Developers face a number of bugs, proceed to open a ticket in GitHub.
  4. Developers hands are tied and most are probably stuck in using the new feature.
  5. If you're lucky, your tickets get resolved in 1-3 days (this includes the time taken for the bug fixes to be released).
  6. More problems surface, developers file ticket. Cycle repeats.

Vicous Cycle 2 (Requesting essential features)

  1. Developers request a number of essential features. Datastore - sync status #4808 DataStore: support for multi-tenant apps with sharing? #5119
  2. Amplify staffs consult developer for use cases. This I cannot comprehend why they're doing so, perhaps if they have started out building DataStore for an actual production app, they would have understand the use cases. But God's forbid, I don't think they did.
  3. FQ takes 4 months and 7 months respectively to complete. Let's not forget vicous cycle 1 to get these feature stable.

No saint developer can work on this timeline.

Vicious cycle 3 (Critical bugs)

  1. I filed a number of critical bugs.
  2. Some of the bugs I filed are 4 months ago, and to this day, it is still being investigated and look into.

Flaws with the performance and resiliency of DataStore are extremely critical and should be treated as such.
If Amazon were to use DataStore in their apps, I'm fairly certain these bugs are squashed within 48 hours. This is simply because THESE BUGS IMPACT THEIR BUSINESSES!


The Solution?

Build Amplify the way it is meant for Amazon services, then focus on external developers.
In other word, use the freaking tool you'd build, ADOPT THEM INTERNALLY!

Let's take a page from the industry leaders where they are building tools to serve their own purpose.

  1. Facebook
    They built React and React Native. Both of these super powerful lib/framework are in-use in the Facebook app. These tools are pushed to the consumers for robust testing before being published to the developers.
    (source)

  2. Microsoft
    Microsoft builds React Native for Windows and ships the new Microstore Store on the Xbox (source).
    They introduced Fluent UI which is also being used in the Office apps (source).

  3. Apple
    Apple created Swift and it is been used on many default iPhone apps such as Calculator, Measure, FindMy, Widgets. (source).

  4. Google
    Heck even Google is leveraging Flutter on Google Stadia and Google Assistance (source).

  5. Amazon
    Amazon infra uses DynamoDB (source1 source2).

These examples says a lot about building tools.
Build tools that you use, then hand the tools to the public.
I strongly believe this is the correct mentality that should be applied when building any tools.
I can't amplify this point enough. (pun intended)

I truly hope this message gets to the right person to do the right thing for Project Amplify.

@nubpro nubpro added the feature-request Request a new feature label Nov 12, 2020
@sammartinez sammartinez added the DataStore Related to DataStore category label Nov 12, 2020
@renebrandel
Copy link

renebrandel commented Nov 12, 2020

Hi @nubpro - thank you for spending the time to provide such detailed feedback to your experience. I understand the frustration that you must've been facing. Do you have some time to jump on a call with me and the broader team. We'd love to walk through some of our improvement ideas and see if we can have a clearer messaging on some of the issues. You can either DM me on Twitter: @renebrandel or email me directly: "renbran at amazon dot com".

@nubpro
Copy link
Contributor Author

nubpro commented Nov 13, 2020

Hi @nubpro - thank you for spending the time to provide such detailed feedback to your experience. I understand the frustration that you must've been facing. Do you have some time to jump on a call with me and the broader team. We'd love to walk through some of our improvement ideas and see if we can have a clearer messaging on some of the issues. You can either DM me on Twitter: @renebrandel or email me directly: "renbran at amazon dot com".

Thanks for the reply.
But I think the message is pretty clear, make products out of the tools you'd built.
Stop making us to be the guinea pigs.

I think this applies to all other libraries not just specifically to DataStore. Unfortunately, I can only speak for DataStore as I mainly use it.

@n10000k
Copy link
Contributor

n10000k commented Nov 15, 2020

Hi @nubpro - As a developer who uses Amplify day in and day out. I feel like you're raising concerns about SLA to bugs etc. You're comparing Amplify against the likes of Stripe, Apple etc. Amplify already is built on top of the AWS infrastructure and let's you have a simple way to collate your application to a certain degree of a AIO solution.

Quote from the Amplify website:

AWS Amplify is a set of products and tools that enables mobile and front-end web developers to build and deploy secure, scalable full stack applications, powered by AWS. With Amplify, you can configure app backends in minutes, connect them to your app in just a few lines of code, and deploy static web apps in three steps. Get to market faster with AWS Amplify.

The AWS Console won't use Amplify or AWS doesn't need to use Amplify to make it's own products, there's a full application including backends for the main infrastructure. There are many sample applications and tutorials by developers and people who work in the Amplify team already who show you how to build applications, products etc.

I would hope you take up a convo with @renebrandel as he's the project manager for Amplify, address any concerns and feedback directly in a call or dm, I mean do you get that kind of direct access to the teams at Apple, Stripe etc? If there's improvements to be made, it's a clear showing that the Amplify team at AWS are prepared to jump on a call with you and listen to your feedback directly and make improvements.

Stop making us to be the guinea pigs.

I also don't agree with this quote, no product out there is perfect, bugs appear and issues happen, things get solved, however take into account that development processes have roadmaps and bugs are most likely graded on severity.

This is my feedback on this issue as a Amplify user. I've never had an issue with the Amplify team or the product itself, I use it day in day out as a developer selling this to my customers.

@renebrandel
Copy link

renebrandel commented Nov 19, 2020

Hi all - just a quick update on this ticket. We've had a call with @nubpro on this issue and are now deep diving into the individual issues. We are scheduling a follow-up call with @nubpro's team to discuss progress, next steps, and reproduction steps.

@renebrandel
Copy link

We've just had in-depth team meeting with @nubpro's development team and have identified the three core issues. We were able to resolve an issue in regards of the refresh token expiry.

For the two other issues, @sammartinez & @iartemiev will be tracking progress within the respective issues listed above. I'll be closing this issue and leverage the other issues as the main tracker issues.

@nubpro - thank you for connecting us with your team and spending the time with us to walk us through the issue at more depth!

@nubpro
Copy link
Contributor Author

nubpro commented Nov 25, 2020

I really appreciate that you guys are willing to approach us directly. Thanks Amplify Team!

Well we are far from done as the problems remains, I'm looking forward to the solutions.

I do have 1 question remain, is Amplify actively being used internally by AWS?
I understand that this probably isnt a fair question to ask as Amplify encompasses a wide array of platforms but you know, I'm kind of eager to know.

@andrekovac
Copy link

Great to see this discussion here. Thanks for initiating it @nubpro .

My current story with AWS Amplify:

  • With some help from AWS support I was able to set up a nice infrastructure concerning S3 containers and authentication which I'm happy with. Recently I started to set up the database with Appsync. Here I ran into trouble:

  • I first tried AWS Appsync with the approach via Apollo with the AWSAppSyncClient. It only supports Apollo v2.4 which is outdated since more than 1.5 years. There I went from fixing one issue to discovering the next one and had to deal with a super old Apollo API without support for React hooks - which are provided in Apollo v3.

  • Because issues lie around for over 1.5 years unresolved without even an outlook to be solved one day, I gave up trust that the AWS Mobile AppSync Javascript SDK will still be actively maintained.

  • With high hopes I now tried Amplify DataStore and am happy about how it's working on iOS (still a small amount of data). However, on Android it doesn't do at all (I will post an issue soon) and after reading through your elaborate post @nubpro and the issues which you linked to I am hugely worried.

  • I don't want to have to deal with these issues for 6 months as others had to endure.. So I think I'll go for a more manual approach now - still making use of other AWS Amplify features I'm happy with - but fixing these core issues with a) Apollo support of AppSync and b) DataStore are prerequisites for companies to seriously use it as a data synchronization solution.

@aws-amplify aws-amplify locked as resolved and limited conversation to collaborators Nov 27, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
DataStore Related to DataStore category feature-request Request a new feature
Projects
None yet
Development

No branches or pull requests

5 participants