Wake up Garmin

As a developer, I'd like to do some general remarks on the state of the ConnectIQ ecosystem.

- The SDK manager is bad. You need to sign-in to download the SDK. You can not choose where the files will be installed. It's no longer possible to direct download the SDK and the devices bits. There is no documentation about how these files must be arranged to be able to launch a monkeyc command. This software is for developers, give them the control.
- The SDK is not easy to install on Linux (and it's even worst since the creation of the SDK manager). It depends on library deprecated for years. Last time I tried I had to use an old version of Java because you forgot to include some XML libraries. Garmin should provide a package for main Linux distributions and a Docker image, that's the minimum.
- Why don't you provide a Github Action to easily test an application?
- The different sizes of the icons. For my app, I have to provide icons with the following dimensions: 30x30, 35x35, 36x36, 40x33, 40x40. Is that really necessary? Instead of releasing new watches every two weeks, could some time be spent to streamline their differences?
- More generally, the differences between the watches. I had to give up a nice design to be able to support all these watches with so many form factors, screen definitions and button layouts. A simple look at the "Compatible Devices" page on you website and you can see the problem. As a single brand you have more fragmentation than Android has ever had.
- You have to add a line in a file each time a new watch is released. The worst is when you have to tell that you want to support custom editions of a watch (I'm thinking of the "Mercedes-Benz" edition. By the way, how could someone at Garmin think that's a good idea to have "Mercedes-Benz" editions of some watches?).
- The behavior of the simulator does not match real devices (try a Ui.Picker).
- The documentation could be improved especially for the CLI.
- Last time I checked, the samples provided with the SDK are of really poor quality. Some don't even work...
- Even this forum is bad. You have to scroll to the bottom to force the entire conversation to load (or click a "View more" button). I can't find a list of all my messages or a list of the topics I created. phpBB was better 15 years ago.
- Listen to your users in this forum. There are so many topics without proper answers or promises of new releases that never come.

And I have to say the problem is bigger than these issues. A few years ago I was really loving Garmin products. It was so cool. Then I don't known what happened. I think it started with the long due release of the modern Garmin Connect. Then the issues with the smartphone app. Recently the hack of Garmin Connect. As an IT guy all these events scare me. I'm thinking Garmin completely underestimates its IT budget. I no longer trust you.

Good news is it's easy to fix most of the issues. It's just a question of spending some time. If you feel overwhelmed, show this message to your boss so he can provide the resources you need to do these improvements. You are Garmin, a billion dollars company!

After all these rants, I must mention that what you achieve is really good overall. As a user, I can easily install applications on my watches from my phone. It just works. As a developer, I like MonkeyC which is simple and easy to use. It was easy to publish my app on the store.

To sum-up you really have to make your platform attractive to the developers if you want them to develop for you. Please the developers and you'll have good applications on your store.

All of this is just my point of view. Feel free to disagree.

  • Similar "generic platform state" topics were discussed several times before with practically no impact. CIQ team is still rushing to implement some new features from their mysterious internal roadmap while leaving current state of the platform very frustrating for developers. At least for those who are trying to implement something more than simple hobby app or try to rely on the platform and believing once developed app will simply remain to work. 

    Here is similar older topic:
    forums.garmin.com/.../919246

    Communication, support, ability to solve issues or ability of CIQ team to coordinate other Garmin teams in related topics are unfortunately appalling in the eyes of developer who want to make development on this platform economically sustainable. Once in the while there are promises that it will be better, but nothing really changed in this past several years. 

    I am in touch with many companies who want to have their services on Connect IQ platform, but due state of it (not just technically), it has to be cancelled in most cases.

    Just observe how long it will take to bring stable version of already presented CIQ4... I will be happy to be surprised. 

    What CIQ team need is some experienced manager who will put the sh*t together and not only focus on "nice to have things" or individual tickets in internal platform - sorry to be saying this on community forum. 

  • Next suggestions for SDK are better code optimization for less power consumption: remove unnecessary opcodes (empty else etc), constants as literals, preprocessor with defines depend on the device, better patterns etc.

  • If you didn't watch the Developer Conference live in Oct, the vieos are on online - The CIQ track has a number of things about CIQ4 along with VS Code.  Here they are:

    https://forums.garmin.com/developer/garmin-developer-virtual-conference-2020/

    The breakouts had a live Q&A which would have been a good way to ask about the future.

    The reality is that linux is a minor plyer and has been since the beginnings of CIQ, as is people that use the CLI.  If you only use the CLI, there are things you can't do, like the App Settings editor. With Eclipse (and VS Code to a lesser degree right now) you can see the command lines used which helps if you want to use CLI for most things.

  • @Jan Čapek I agree with you. They really need someone who will make the whole ecosystem attractive. I have absolutely no business interest in Garmin. I'm just a curious developer willing to try a new platform (and to build a nice application for Badminton because I really like my Fenix 3). Unfortunately this platform does not match modern expectations. I'd rather spend my time doing something else.

    @jim_m_58 I will mirror here what I replied on the other thread. The main goal of Linux support is Continuous Integration. For that aspect linux is not a minor player at all. And yes I can see the command lines generated by Eclipse, but I want a documentation.

  • Linux is a minor player in CIQ.  For example, look at https://forums.garmin.com/developer/connect-iq/f/discussion/237596/sdk-3-2-and-linux/1133266#1133266.

    CI seems to only be a buzzword as it relates to CIQ.  I can't see how it's that useful. How often is your code changing?

  • I don't know what is your link with Garmin. If you are a Garmin employee, I may be rude but I think you're a part of the problem. In this forum, there is always someone like you trying to explain that there is no problem. If you are a developer and don't understand the needs of CI in 2020, there's nothing I can do. If Garmin has their customers (as developers, we are the customers of the ConnectIQ SDK) asking them for improvements of their platform and they reject them telling us it's useless, they are doing it wrong.

    I spend some of my free time to report these issues here because I'm willing to help. My goal is to improve the platform and to improve my application (and I'm doing it for free!).

  • I don't work for Garmin.  I just understand priorities, and Linux isn't high on the list with CIQ.  I've been doing CIQ for 6 years, and professional programming for 40.  I also understand that a screwdriver isn't the best tool to pound in a nail.

    What is the benefit of CI in a CIQ environment?  Please explain so maybe I can understand.  Just because it's the current "thing" doesn't make it so.

  • I also tried to help improve the current situation, which is a big hindrance to both developers and users. Garmin just doesn't care how things are going.

    forums.garmin.com/.../lots-of-unfair-developers-garmin-where-are-you

  • Even this forum is bad. You have to scroll to the bottom to force the entire conversation to load (or click a "View more" button). I can't find a list of all my messages or a list of the topics I created. phpBB was better 15 years ago.

    Yep. And good luck trying to navigate to messages in the middle of a long thread (anything more than a couple of dozen replies.) There are modern, mobile-friendly alternatives like NodeBB or Discourse, so I'm not sure this was chosen.

  • I have mixed feelings about CI and automation in general for CIQ. I agree that for free hobbyist apps it might be useless. But maybe for a revenue-generating app with a team of devs, it would be useful. I certainly don't enjoy manually testing all of the different device "families" when I change an app. Then again, CI can't really test certain aspects of the UI/UX, so we're back to manual testing for that. Just because something isn't continously delivered (e.g. software as a service) doesn't mean it can't benefit from continuous integration.

    As a practical example, I get feature requests for some of my apps, but I'm reluctant to change them now because I fear that building with the new CIQ SDK will cause out of memory issues that didn't happen before. With a viable CI pipeline, I could just setup my tests, make speculative changes and see if the tests pass. Of course that would require the ability to script the simulator, detect out of memory conditions, etc. Unless I'm mistaken or out of date, right now we really can't do any kind of automated integration/system testing in CIQ; afaik only unit tests can be automated.