Garmin SDK newbie perspective.

Hi All,

I've recently started to develop garmin apps as a hobby because I got Fenix5 as a gift.

I spent so far few evenings developing app and going through docs and here are my first impressions:

  1. https://developer.garmin.com/connect-iq/programmers-guide/ Is this page is even maintained? It contains dead images, documentation is very lacking. Hard to figure how things work no any "big picture" explanations - here are docs off you go - that seems to be idea behind this page. Supported devices are listed to the sdk 2.0 (i guess that current is 3.1.x) which seems this list was not touched for some time.
  2. SDK support -looks like sdk is not working out of the box. I had to hack around to get sdk working on  ubuntu 18.04. Problems can be solved but again nobody cared to provide even trouble shoot instruction how solve issues ( which after some googling seem to be VERY common). A simple "known issues" section in installation guide would save me a few hours.

  3. Is there any formal documentation about monkey C ? All I've seen was article comparing monkey C to other languages. For instance can somebody tell me what "static" keyword does to function?!  My observation is that when static is added to onShow, onShow does not get called, but my object functions are called the same way and have access to instance members. Does anybody know reasoning behind using such exotic language?
  4. Lack of UI library of any decency. All examples I've seen basically are 90% focused on drawing on graphical context. Is that really the way to go. Seems like giving look and feel matching watch one is virtually impossible. For instance all garmin activity apps have scroll bar appearing for moment when switching views up and down. Is there a UI control for that ?
  5. Are 3rd party apps and widgets second class citizens ? Might be minor but I've noticed that when switching through build in widgets i get a nice widget position indication overlay on the left and widgets are starting immediately. But every 3rd party widget I've downloaded does not have position overlay and starts with splash instead providing first screen immediately? That would suggest that there is different treatment, is that the case?
  6. Is there any kind of support form Garmin for developers ? Any bug trackers, any roadmap? Any "barrels" provided by garmin? ( I've only seen few sample barrels on garmin github account)? Is platform or at least SDK code open sourced?

I'm interested on yours seasoned developers take on above.

Best Regards,
MD

  • I can give you my notes on those points:

    1. I wouldn't use that online web page for the Programmers Guide (I've no idea if it is still updated?) I always use the links in Eclipse now in the "Connect IQ" menu for "Programmers Guide" and "API Documentation". (I think the links just open files in your installed SDK directory).
    2. I've no idea what installing on Ubuntu is like ...
    3. There is some basic documentation in the "Programmers Guide" but a lot of things are not explained and assume you are familiar with C and C++. I don't think "static" is explained. My understanding is that "static" makes something global within a class and all subclasses of that class, so there is only 1 copy of it.
    4. No experience using the built in UI functions …
    5. Yes I think they are, as official Garmin apps get access to more and better functionality.
    6. is the best support, but I don't think he works for Garmin! There are Garmin devs that read & post on the forums too and are very useful. And then there is the Connect IQ Bug Reports forum, but it's hard to get feedback on what is being worked on and when.
  • No, I don't work for Garmin!  Grin Just a retired programmer that started with CIQ pretty much when it first came out!  The Garmin folks all have ".ConnectIQ" in their forum names.

    1.  Yes.  Use the doc in the SDK and not the web based versions.  The Programmer's Guide is in the root of the SDK (it's an HTML file) Along with the UX Guide.  The API doc is in (sdkroot)\doc and the file is index.html.  And the readme there includes things like the release notes going back to version 0.0.1

    3. For me, I'm a long time c programmer (the 1970's) and dabbled a bit in Java and Java Script before CIQ .  Given that, play around with the samples in the SDK and you can pick a bunch up,  There's also a sticky at the top of "Discussion" where  PeterD    has a web page with links to the source of a whole bunch of things

    4.As far as Ui, there are two basic ways (that can be used together) - Layouts and what I call direct dc (doing dc calls).  Again, in the samples (and the template programs in Eclipse) you'll see examples of both.

    5.  When Garmin does CIQ apps (like the hydration widget), they have the same access/restrictions  as we do.  But, the native stuff on watches isn't written in CIQ and can do more.  

    As far as widgets, for CIQ ones, they often show the widget name and icon, and that's rooted in history, as in the early days, starting the CIQ VM could take a bit, and this was displayed while loading.  With the latest watches with widget glances, things look like native widgets.(you see the icon aand name only if the widget doesn't have glance view support.

  • I work on CIQ platform for long time already and believe me, frustrations still persist. Basically to develop anything little more complex, you will encounter issue after issue and even after app release, you can't be sure it will stay working as lots of bugs are repeatedly introduced to device firmwares or Garmin apps. 

    But worse thing is Garmin CIQ support. Even critical issues unexpectedly affecting big number of apps can take months to fix and it is not unique that once fixed issues will go back to device firmwares in just next release. That's why most developers reports only fraction of issues, because it is waste of time to try to cover everything. 

    Yes, there is lots of positive on CIQ development also, but I can't stress more these negative aspects which in my opinion are in most cases just waste of platform potential. Unfortunately nothing will change until the team behind it will not finally realise full extent of it and steer their priorities towards it in different manner than their previous attempts. 

  • It's not a waste of time to report as much as possible, because the number of reports influences the priorities for fixes.

    And the delay in fixes can be due to things outside the control of the CIQ group.  If the fix is in the VM/FW, getting that out depends on the priorities and schedule of the folks that do the platform firmware and not the CIQ group.

    Even if a fix is just in the SDK, there are schedules for that, and I don't think anyone would be happy if there was a new SDK every week, that hadn't been fully tested yet.  But I have seen a few cases where there might be a hot-fix for an SDK within days after a new SDK was released.

  • Is there some bug tracker? Bugzilla, manitis, jira anything ?
    And actually i agree with both of you. If you don't let them know, they wont fix it.... on one hand. On the other filing decent bug report supported with explanation potential culprit and perhaps even reproduction project takes time... Somebody should treat people  serious on the other side.
    I've also have big feeling of wasted potential. I have impression that is all some kind of side project that is treated half serious or have really limited budget compared to needs.

  • There's the CIQ Bug report forum.  You can see if a ticket has been assigned, comments on the bugs, etc.

  • I've seen but that's so below today's standards that I've kinda hoped that I'm missing something.
    Zero organization change request together with os support questions mixed with bugs related to specific devices.
    That is really not a way to go IMHO