Potential alternative offline IDEs

A discussion about the pros and cons of various IDEs.

Migrated from:


wel now thats interesting, wonder if this could work inside atom ide


Well there have been attempts on compiling everything into a single ide for most users, atoms crossplatform and we can modify it, Platformio could work, having something like this as a build in emulator could be cool
Pokitto is missing a easy to use editor for beginners that Arduino has (Arduboy,gamebuino)
I’m using mbed and tbh is not great

After some snooping around on mbed, I’ve honestly found it much better than the Arduino IDE. Beginners get a lot of unnecessary headaches in the Arduboy forum because of their IDE (installing libraries, header files being ignored, etc.)

I’ll look into making an atom or vscode plugin… there’s a lot of debugging to do first, though.

The Arduino IDE has mbed beat on two things though:

  • You can still use it when your internet is down
  • C++11 support

Personally I think the Arduino IDE is good in every respect but its text editor, Arduino’s decision to use .ino files and the whole -fpermissive thing.

If you use an external editor it works fine as a compiler, uploader, serial monitor and hex generator.
(And it’s still easier to use than cmake.)

mbed doesn’t have C++11? Ouch. I hadn’t noticed yet, since I’ve been mostly debugging Hello World. :stuck_out_tongue:

Whaaaa?!!! You, of all people, our resident C++ master, are OK with Arduino? .Ino sketches are broken C++ with their omission of declarations and improper use of headers.

Edit: poll Am I overusing animated gifs?
A. yes
B. yes

Also: do I have to make an evil badge for punishment? I will if I have to!

EDIT: I am keeping this in reserve. Just in case!


I’m including the .ino craziness in that but - it’s one of the bad bits.

You’re right about the broken.
For some reason the .ino preprocessing thinks this is illegal:

template< typename T >
T absT(const T & value)
  return value < 0 ? -value : value;

But somehow this is fine:

template< typename T > T absT(const T & value)
  return value < 0 ? -value : value;

(This template definition of abs sometimes produces smaller code than the macro equivalent.)
(Templates 1 - Macros 0. Take that macros!)

Ultimately the .ino weirdness rarely affects me since I always just have one .ino
and most of the time my .ino just forwards to a class.
If you’re spending more than 5 minutes of your time in an .ino file, you’re doing it wrong.

To be honest the worst part of the IDE (in my opinion) is that it implictly passes -fpermissive.
If I had £1 for every time I’ve seen -fpermissive allow code that makes my toes curl in horror, I could fund Pokitto production for the next century.

The worst bit is that gcc’s documentation doesn’t go into detail about what -fpermissive does.
So far I’ve figured out that it allows the user to ignore const violations and allows functions that don’t have their return type specified.
Every once in a blue moon I discover a new criminal offense to add to its rap sheet.

All that said, the reason I don’t hate its guts is because its UI is quite simple to navigate and has some decent features.

  • Big obvious compile and upload buttons
  • A reminder of which board and port are active
  • A system that makes adding new libraries really easy
  • An easy to use serial monitor (though that’s not hard, I wrote my own one)

Also I’m slightly averse to online IDEs because my internet isn’t terribly stable.
Command line compilers are alright as long as the documentation is friendly.

If compliments are punishment, I’ll gladly take more :D

(One day I will have my own “C++ Master” badge. I just need people to start asking more C++ questions first. Or maybe finish that document…)


See? It works!

1 Like

to reiterate the only thing i like about arduino ide is that its for the most part install and your done
if we can use atom (or vscode) with pre installed platformio and scripts/wizard to create a pokitto helloworld that works and maybe even have the upload button from my electron app uploader (needed for mac wich currently has no offline compiler at all)

i understand everyone has there favourite ide but right now i think beginners are confused as to where to go and what to use

1 Like

You wouldn’t need a script/wizard to get programs running if the environment was configured to look for the PokittoLib in a particular place so it could be included as #include <Pokitto.h> or similar.

(Also I’d vote for VSCode partly because I already have it installed, partly because Intellisense is quite a mature technology.)

i wonder if we could strip down platformio since we need like 10% from that, its a rather large download

i dont know if we can prepackage vscode and distribute it, wen with atom you totaly can
also the platform io plugin build button has an odd placement in vscode compared to atom wich has a nice large button, but if we can fix that Intellisense is realy awsome

sorry we getting of-topic this conversation should probably go to the platformio post

You don’t need to prepackage VSCode.
Part of the point of VSCode is to make all the functionality work via extensions.
So at most it would be an extension, at best you’d just have to do a bit of setup.

(I’ll have a think about where is best to move this.)

we have to make our own extension then, with platformio as a dependancy?

It might not even been that difficult, it might just be VSCode + PlatformIO, a few tweaks to the library and the right settings file for PlatformIO.

Arduino was designed for makers who want to get their simple “bells and whistles” devices up and running without a huge learning curve on how to program. If you take it in that context, it a very good environment.

Yes, I have spoken with David Cuartielles about this.

The issue I have with that, is that it helps you the first 2 weeks and is a pain for eternity after that + we have a constant stream of people introduced through Arduino who have been fundamentally confused in the first steps about the core concepts of C+ programming.

1 Like

I’d be more inclined to agree if it weren’t for -fpermissive.
Some of the things it allows can create runtime bugs that are hard for beginners to track down.

Not needing to worry about includes or predeclaring functions - fair enough.
Violating const and letting a for loop variable creep beyond its scope are generally recipes for disaster, and ones that would require being a fair way up that learning curve to solve.

At least if the compiler says “no, this is wrong” and points to the problem then they’d have a decent chance of figuring it out on their own and learning not to make the same mistake again.

This is what I do not understand. Even with a lot of the code Pokitto users write, I can spot the people who started on Arduino because they do not understand variable and/or function scope.

To me it seems and unnecessary feature, because in the end explaining defintion/declaration is not such a big deal but causes a lot of confusion when taught later on.

1 Like