What external tools do you use for Ignition development, and why?

I lead a team of ~30ish software engineers (70 if you include SCADA dev, we do a lot of Software and MES in Ignition) who all develop almost full time in Ignition at this point, and so we need to build at a bit higher scales than most.

A few of the tools we have used to do this are:
Git: We version control almost every project we do. There's not really an easier way to share code between developers and make sure we're following our own best practices
Github: We manager over 100+ projects and repositories in Github, its the easiest way for us to store and manage code, review pull requests, execute automated pipelines, etc.
Github Actions: We use Github Actions for automating deployment pipelines, linting, automated testing, packaging up exchange formatted resources, etc.
VS Code: Our teams almost 100% of the time have open VS Code and at least 1 Ignition designer, and VS Code is probably open more than the designer overall. For script editing, terminals for git commands or helper scripts, and reviewing changes in JSON files we have essentially turned VS Code into a pseudo-replacement designer for most things scripting.
Flint for Ignition: This is a custom developed that I made to allow for better use of VS Code to manage multiple Igntition projects. It does things like add auto-complete for project scripts, visualize them in a more standard format, and can integrate with a few modules we've made for triggering project script updates and designer updates from within VS Code.
Tag CICD Module: A developer side module we made for enabling better version control for tags by exposing the system.tag.getConfiguration and system.tag.configure functions through REST apis
Project Scan Endpoint Module: A developer side module we made for triggering project scans and designer updates through REST endpoints, so that we can have VS Code trigger a designer update on save instead of waiting for and managing project scans with the native polling
Docker: We are deep in Docker at this point. Engineers that need to run 5-10 gateways on just one project, that may be working on multiple projects at a time need a really scalable way to manage Ignition gateways (quick math, 30 engineers * 3 projects * 5-10 gateways per projects and we're looking at managing ~300-600 ignition gateways all at one time... per day. This is just untenable without something like docker)
Developer Docker Image: We have a developer docker image that we use for doing some fancy things with symlinks to make it easier to version control code across multiple gateways, without needing to have really annoying .gitignore files.
Docker Architecture Templates: We use repository templates extensively for starting up new projects. We have much more advanced versions of this internally, I want to make these public, but haven't gotten a chance to yet.
Traefik Proxy Container: We actually leverage an internal traefik container that pre-loads in some certs so that our devs can use SSL without needing to get custom certs for *.localtest.me, however this is a public one we did a while back.
Figma for Design: We use Figma for all of our UI/UX Design
Tailwind CSS: We use Tailwind for most of our CSS at this point, at first it felt like a bit of a stretch because it's complicated. However once you get into it, being able to do things like md:hidden and just have things automagically get hidden on larger screens is insanely useful. (This also makes CSS easier when porting from Figma). We also manage an internal container that acts as a tailwind compiler, so that we can only compile what we are using, instead of the full tailwind stylesheet. Unfortunately this ones not public, because it includes some special sauce for custom themes we leverage pretty heavily.
Ignition Linter: A linter that can be used in a GitHub action that was developed by a good buddy of mine. Good for starting to enforce clean code practices inside of Ignition itself.
Gateway Utilities Project: We manage a project for a bunch of standard utilities, scripts, views for specific functions. We have some more advanced versions internally I'd like to update to be public, but for now this one is available.
Perspective Automation Tools: This is a git repo managed by the IA QA team, we use it for automated tests leveraging selenium for Perspective pages. We used to maintain our own, but then they released theirs and its better!

A few ideas we have not made yet, but want to:

  • A Figma plugin that can export Figma frames to Perspective Views
  • Updates to Flint (the VS Code extension) to add a bunch more features
  • K8s template projects for Ignition

Edit:

Paul beat me to it on my own thing! I was just in the middle of typing this out. lol

Edit #2: Added some more stuff that I didnt think about. Also realizing I should probably actually get on it about making more of our public stuff updated... lol

24 Likes

I use Inkscape to build my SVGs.

OBS for making demo videos.

jcpicker for color matching

3 Likes

I use PngOptimizer for shrinking images to be lighter weight.
https://psydk.org/pngoptimizer

An older free version of ColorPic for color matching.

ShareX for Screenshots (has color picker and other tools too, but mainly use it for screenshots)

Baretail for live log watching/highlighting on Windows.
https://www.baremetalsoft.com/baretail/index.php

Notepad++ for various text editing or as a temporary "clipboard" to hold multiple things.

MQTT Explorer (Beta 0.4.0 Beta 4 supports Sparkplug) and MQTT.fx v1.7.1 (last free version that supported Sparkplug)

https://mqtt.iot01.com/apps/mqttfx/1.7.1/

2 Likes

checkout https://www.passwordstore.org/

I've been using Greenshot for screenshots, I'm interested to compare against ShareX.

I have also used ninite.com as a sort of curated source for discovery of free software options and as a means to install them without the added cruft some free software tries to impose.

More recently, I have started using winget for easy command line download, install, and updates of MS Windows software I am already familiar with.

I used to use Greenshot until I found ShareX LOL One of the cool features you can do is set up work flows like when you take a screenshot, save it to a folder, upload it to some cloud, get the link for the cloud and copy that URL to your clipboard.

You might want to check out Chocolately. Has lots of software packages and you can install the Chocolatey GUI if you want a pretty interface and easier searching for packages.

I also use LiberKey instead of PortableApps, but have used both before:

3 Likes

... and for us Linux guys stuck in a Windows world, this thread can only be complete by mentioning WSL.

5 Likes

Did you not see cross platform in the list of reasons to use KeePassXC? A password manager that my family cannot use in Windows is not going to be acceptable, sad as that may be. And I like that it is a single encrypted file.

no I missed that. it's a fair point. I'm an ex-keypass lover, and it's super impressive to have a family keypass.

Since this topic is broadening, one of my favorites is PowerToys including the PowerToyes Run launcher, FancyZones, PowerRename, and more. Releases · microsoft/PowerToys · GitHub

1 Like

The intent was for discovery of "quality of life" improvements related to Ignition development. I've used Power Toys "Fancy Zones" for when I have designers for six Ignition gateways open at the same time and I'm copying things between them, so it counts!

In unrelated knowledge sharing...

  • For those those who did not know it is easy to copy and paste views, udts, tags , etc. between open designer sessions so long as each gateway is running the same version of Ignition. If differing versions then export from one and import to the others.

  • Also, there no visual clue for this (no right-click menu) but you can also CTRL+C copy a selected alarm configuration from one tag and paste CTRL+V it into another tag. Individual alarms or multiple alarms at once.

4 Likes