What I hate about developing for Smart TV

About 6 years ago I took my first babysteps into the world of SmartTV development, when I joined 24i as an intern. Really only knowing Netflix at the time, I had no idea of this massive and interesting world of development that lies behind the apps we now love to use on a day to day basis. But it’s not all been fun and games. Developing for SmartTV can be very frustrating at times, and there are a lot of things that could be improved for the ecosystem to become more approachable. In this blog I take a look at some of the aspects of my day to day job, things that make it both very frustrating and sometimes interesting at the same time.

Please update

By far the biggest issue that I have with developing for SmartTV, is sadly something I have little to no influence in: updates. Are you aware of this term called ‘Evergreen’? It’s this thing where browsers on computers, tablets and mobile phones are constantly updated to support the latest features. Whether it’s adding support for a newer JavaScript version, CSS or HTML5 standard; improving security features or updating support for certain streaming technologies; updates are very much required if you want to be able to continue to support browsers with the tech you have available to you.

Precisely that is what’s lacking on the side of SmartTVs. As an example, let’s look at Samsung (Tizen) and LG (WebOS). Each year they boast about awesome new models during CES and other conferences. Showing new amazing technology about video playback, HDR, OLED, 4/8K, you name it. Older models on the other hand… well, sadly it doesn’t often happen that they get this new tech. No new video tech, no updates to the browser to support newer development standards. Security updates happen, but not as often, and not as long as you would want them to.

Example: TV that hasn’t been updated for a long time ;)

The reality we live in here, is that televisions degrade very quick, because of the lack of updates. Each year, Samsung and LG launch a new version of their respective operating systems. New year, new version. However, the new version doesn’t actually get pushed to older devices. So you’re not actually getting support for the newer features on televisions that many of your customers have. The result? Your only options are either omit the new functionality all together, or attempt to use it on models it is actually available. And you’ll quickly realise that time flies pretty fast, leaving you with years of devices that you somehow have to maintain. Without being able to use the technology you know exists. A prime example is the new LG app from FuboTV, as announced for LG WebOS. The device years it’s available for? 2018–2021…

A foot note is very needed on this topic. Have you thought about the environmental impact of this? By not providing updates, it means televisions eventually become irrellevant. The earlier updates are stopped, the quicker they degrade. Meaning they need to be replaced much quicker, even though everything about the TV still works fine. It’s just that the soft and firmware running on it, doesn’t get updates anymore. And that’s precicely why a lot of people oppose using SmartTVs, rather opting for dongles offering similar functionality. The TV remains there for the screen, the dongle takes care of the rest. So, dear manufacturers, for the love of everything that’s nice, please update your televisions! People don’t like it in phones and they don’t like it in TVs either. Think of the environment, and update!

The famous XKCD: standards

I could have ended the blog right there. Having more updates would already solve some of the massive problems in the ecosystem, because recent years have actually shown that certain standards (and their implementations on multiple television brands) helped a lot with developing apps. But there is another reality to face, for which I’ll always gladly refer to the XKCD comic about standards:

https://xkcd.com/927/

Web-standards are awesome, if they are implemented correctly. We know exactly what we can expect, the documentation is available, and in most cases we already understand the specific behaviour of the code from having used it for regular websites before. On SmartTVs? Not so much. Yes, standards are implemented, but often only to a certain extend. Manufacturers often choose to support only a part of the standard. Whether it’s omitting certain CSS features, certain JavaScript or other tech-related, it’s all ever so slightly different (and often not so slightly) depending on both the manufacturer, as well as the year the TV was released in.

The effect of this is that you’re fighting a constant battle with your knowledge about development, and whether it’s applicable on the device you’re developing for. Standards have always been the promise for solving this, but that really only works if the standard is actually followed. Combine the lack of updates, with the loose interpretation of standards, and you’re in for an interesting time with a lot of surprises. You definitely need to have multiple TVs to test your functionality on, and enough understanding and debugging possibilities to try and find why things are sometimes not working as expected.

What is going wrong?

Speaking of, good debugging tools are the bread and butter of any developer. Being able to quickly get a grasp of the way your code is being executed, and the warnings and error messages that come with it, is really important. The nature of SmartTVs is sadly a bit different. It’s often not as easy as opening the developer console (a la Chrome and FireFox), but you’re working with some remote debugger that has been provided by the manufacturers devices you’re developing apps for

Yes, some manufacturers do it better than others. Yes, there are tools out there that you can use for development, and on many occasions they provide you with some good information when you’re debugging some interesting issue. But the moment your bug becomes difficult, you are often very limited. Whether it’s not being able to see all network traffic, not being able to place breakpoints, or not having to access to some of the deeper internals that you need for debugging (e.g. video playback issues); there are many limiting factors that, on other devices, could be and are often a lot better set up.

Another downside of this, is that you often really have to surrender to the tools available out there already. Unless you have an interest in building your own remote debugger, there’s really no other option. You can’t really add any plugins like React or Vue framework-debuggers as you would for regular browsers, because televisions are simply not open to this. It’s a big black box and you’ll just have to deal with the hand that’s given to you.

Not development, but equally annoying

I’ll keep this short, as I actually almost forgot this part of the blog. After proof reading the blog, one topic came to mind that is probably actually the most frustrating. I can deal with most development issues, because I can actually influence them for a large portion. Whether I fix the bug, is in many cases in my control. But this (short) topic however, is not: submission.

Like Android and Apple, you have app stores on televisions. Samsung has one, LG has one, other manufacturers have one. They are all different, and they all require specific documentation of the application. But that’s not the problem. I’m more than fine providing them with access to the app if it requires credentials, and giving a full complete document with the functionality that the app has. But for the love of, why does testing/submission need to take a MONTH or LONGER before my new app or even update can go live?

This is by far the thing that’s most often overlooked during development of your app. You have to get it live somehow, and the only way of doing so, is submitting it to the various app stores out there. Sadly the manufacturers take unexplainably long, seemingly to test every single feature that’s in your app. And often end up declining the app for really silly reasons, sometimes even because they have the opinion that a feature should work differently. It’s certainly not as easy as it is on Android and Apple, where it can take a day or sometimes even less. I get that quality is important, I really do, that’s what I strive for as well. But there needs to be a balance between testing every single pixel, and making sure the general app flows work as expected.

Silver linings

If I really hated it that much, I obviously wouldn’t still be in the industry doing what I do every single day. There are also a lot of interesting and fun parts about developing for SmartTV. My favourite part has actually not been related to development, but more the world we’re doing it in. I really enjoy the world of media, and by developing for SmartTV, I get to be involved in media and television that’s used by thousands and millions of users. That’s really cool, and I’m not sure I would want to give it up.

Next to that, if you like puzzles, this is definitely the industry for you. As you can tell, you don’t always get the right puzzle pieces from the tools that you have available, at least not immediately. So being able to do complex problem solving, slowly getting closer to a solution, can be really fun. Yes, it can certainly get frustrating too, but any development can be frustrating, if you’re not able to solve a problem after a long day of hard work.

Life is slowly getting a bit better, too. The world of SmartTV has actually become a lot better in the recent years. Yes, we’re still dealing with very infrequent updates. Yes, standards are still not fully implemented. But on the other hand, manufacturers are actually getting better at supporting latest standards. For example, being able to use EME/MSE for video playback and DRM, is one of the most important features that has become available on televisions starting around 2017. Sadly not earlier, otherwise development would have been a lot easier if you require DRM, for example. But things are looking up, and who knows, in about 5 years from now we might be able to use all the tech that’s now already available on the evergreen browsers like Firefox, Safari and Chrome.

Balance

The story probably isn’t as black and white as it is for me. I’m still working with a lot of older devices that are never updated, so my frustrations might be a lot bigger than people who just started in the industry. FuboTV is a prime example, I can guarantee they’ve had a much smoother development process of their LG WebOS app for 2018 to 2021 devices. Had they tried to get an app going on 2015 or 2016, things would already look very different. Let alone going further back than that. That is however the reality. Many people still have devices from 2014, 2013 and even older in their living rooms. TVs are too expensive and too much of a centerpiece in the house, than to be replaced earlier than after about 10 years of lifespan.

So what you really should be looking for is: balance. Both as a developer, and as anyone else in the industry. Development can be hard if you aim to provide your app to as many years of a TV-brand as possible, as you can read. It can be a costly and time consuming process, if you’re starting out new and without any prior knowledge. So seeking that balance between supporting older devices (where you know you can reach plenty of users), and choosing newer technology and televisions, is very important. In both cases however, you’ll make users very happy with your app. And in the end that’s what it’s all about.

Developer from the Netherlands. Working as a JavaScript Developer at 24i. www.linkedin.com/in/matthijs-langendijk/