Two tabs for one file in Build

There’s two of OSCMessage.h here.
That… can’t be right.

Hmm… Does that tab stick around when you refresh the page?

I’m on Mac OS X Chrome Version 33.0.1750.117

This has actually been going on for a while now with this sketch, I just forgot to report it until now.

Thanks for the heads up, I’ll log a bug for it. :slight_smile:

This leads me to ask an important question... up until the recent .ino change in the web IDE, I thought we might be trying to spread the love of CPP to the world and call the program an "application" or "app" or even "program".

Are we officially sticking with "sketch" as the proper nomenclature?

I honestly don't have any strong feelings one way or another, but it would be nice to know if there was a "vision" for this, so we can try to unify the way we talk about it.

cc: @zach

Personally I like the “application” / “app” / “program” / “firmware” nomenclature. I think using the “.ino” extension helps clarify what’s being pre-processed and what isn’t, but I’d be really interested to hear what people’s preferences are.

+1 for firmware from me: while we try to have some sort of compatibility with Arduino, the Spark is not based on AVR, which are commonly associated with Arduino, the .ino extension and the sketch word.

Great question. Naming this stuff is really tricky, because the vocab choices each have their pros and cons.

I visited Adafruit today, and Limor pushed on me hard that we should stop calling the Core “Arduino-compatible”, and that anything that doesn’t run a ATmega328p shouldn’t be called Arduino-compatible; even their Trinket isn’t “Arduino-compatible”, running an ATTiny.

Anyway, we had debate between .ino and .cpp for the initial application; we started with .cpp because it’s a C++ file but we switched to .ino to point out that it goes through the Arduino-esque pre-processor (adds the #include, adds function prototypes). We debated this one a lot because we didn’t love either option.

As for sketch vs. firmware vs. app, we’re a little inconsistent on the language here because we don’t know the right answer. I definitely don’t like sketch; it sounds very amateur to me, and the Spark Core is designed to be professional-grade while still easy to use. I’ve avoided firmware in the past because I thought it might be scary, but perhaps it’s not; I’ve been leaning more towards firmware and perhaps that should be the official answer.

Would definitely appreciate feedback and thoughts here.

1 Like

Is Adafruit going to start stocking the Spark Cores?

As a beginner who just got into playing with Arduino Micro's a few months ago it made me feel pretty good that the work that went into my sketches built to run on the Arduino Micro should also run on the Spark Core that was advertised as Arduino compatible.

I'm not sure if I would have bought the Spark Core if it was not Arduino Compatible because as a beginner it took me a decent amount of time to get the Sketches I had created working the way I wanted them to work. The last thing I wanted to do was to buy the Spark Core if it meant that I would have to start creating a new sketch from scratch again.

As long as people know that some Arduino Sketches will work and alot of them will require some modification then I think your being honest with people. There is a forum for help if needed which is invaluable to just about anybody playing around with coding.

I certainly would not drop Arduino Compatible from your marketing but I would be real clear on what that means to your average Joe who is just getting started with Arduino and then comes across the shinny new Spark Core and just wants to try it out with his existing sketches.

You see I keep calling the code "Sketches" . That's simply because the Arduino training has me comfortable with it.

I think Firmware sounds a little dangerous since its make me think I could Brick something.

Sketch & Code are both good. I create code and run it. I create a sketch and run it. It just sounds so much safer from a beginners point of view.

If your debating to call the main application .ino or .cpp.

I would recommend .ino over .cpp simply because we already have a .cpp & .h files in our sketch if we need to load libraries.

Since there is only 1 .ino file it makes it easy to understand which file is your main sketch.

Arduino is BIG and its where tons of people get started. I would try to covert as many of those people over to Spark Cores as possible. I think the best way to do this is to understand the environment and language that they are coming from and talk to them through your marketing in a language that they are used to and understand. Try to keep things as uncomplicated as possible.

Just my 2 cents. I've learned tons over the last 3 months starting from scratch. Its all very complicated stuff in the beginning and it takes quite a bit of playing and study for the complicated to become not so complicated. The last thing a newbie needs is a new set of terminology to learn when all they want to do is add the WiFi features the Spark Core offers to their current Arduino Sketch they are running on their Arduino boards.

Just the opinion of somebody really new to all this stuff. :new:

1 Like

Awexome! I knew that was coming... they've been harping on that a couple times now on Ask an Engineer. Shoulda waited two days and let them get you in the uncomfortable seat on AAE :wink: Did Phil ask you any trivia questions? xD Free CC3000 breakout! lol.

Surely there's some flexibility here or the Arduino Mega, Leonardo and Micro are not Arduino-Compatible. Not all libraries DO support all of those right off the bat either... so maybe there's some truth in that. I would say you are Arduino-Compatible if you strive to be, not because every pre-existing library runs the same on your development platform.

As much as I hate to say it.. it's like MegaBloks are Lego Compatible (cringing here).... but it's true. They snap on and sh*t. They just really REALLY suck bad in every other way. All of the colors are wrong, and they don't make every piece that Lego does. They do have some unique and interesting pieces though that Lego doesn't have.. But they are trying to be compatible with Lego, so they are. That said, let's make it a goal not to suck bad like MegaBloks, mmm kay? :wink:

.ino vs .cpp Honestly I really hate .ino because one, I have like 15-20 or more libraries on github now and they are all .cpp, and two it really isn't the arduino IDE... this is the Sparkulator baby! I think people that are big into Arduino won't care much what the file extension is... hell it should probably be .SPK, but as soon as they see the void setup() and the void loop() they'll know just what to do. For anyone that's not versed in arduino, but knows c++, .cpp is going to feel right. Again, they won't have too much problem either because they will add their includes and prototypes and it will compile anyway. Better to code it that way for anyone that wants to use your files locally as well.

Obviously there are a lot of arduino users out there... so I can see the desire to go with .ino to make it familiar. I wonder how many of them are going to see .ino and really think "oh yeah, I don't have to type no stinking prototypes... yay!"

Sketch is cool... it's like that word that one girl on Mean Girls was pushing hard... that's so Fetch! It's unique, and people associate it with Arduino. But yes, it's amateur... and it doesn't help convince your coworkers that you are working with real hardware. I still have a hard time convincing people that Arduino is not some play toy. They just want it to be all drab and part numbered for it to do real work. And sketch is really Arduino's word. You'll never make people think of Spark Core with that one... it's theirs. That's why I keep trying to think of cool words like Sparkulator.

Firmware is a tough one. I know it's the right word for microcontroller code, but sooo many people call it software all the same. It's only firm because you put it into some "hard" ware... but then again, how is a "hard" drive any different. It's not like software it morphing like jello while it's on your hard drive. That said, firmware to me doesn't describe something YOU made. "Hey my firmware is the sh*t!" ... no that's lame, but "Your application is da bomb!" "Your sketch is a masterpiece" true no doubt and "Your firmware is collecting dust over there" ... "Come on guys, brush up on your Spark Fu and drop this mad app on those fools!" Firmware to me doesn't describe a thing. It's just code with no life.


I would not use .ino and use .cpp:
-you cannot develop on Spark Core with Arduino IDE
-you would have to add .ino support for Eclipse and other IDEs together with Eclipse ARM plugins
-Notepad++ does not know .ino and will not syntax highlight it, therefore I use .cpp

Spark IDE is not a good production tool as it’s missing a history or backups. Therefore I use Notepad++ with GIT and then CTRL+C and CTRL+V into the browser (javascript ide on steroids). Many times I lost some code when debugging and trying out different communication protocols.

I would disable any processing and would let the developer to insert few lines of code. Last time all of my code stopped to work, because you changed something and now we have to include application.h. Those silly things should not happen. If you need to stay with your own extension because of preprocessing, I’d like to have an export button to .cpp.

For me Arduino-compatible can mean two things:
-compatible with Arduino IDE
-compatible with Arduino pins (and therefore shields)

There is also Arduino MINI, which uses ARM.

HI @zach

I like the discussion so far on "Arduino-compatible" and I have tremendous respect for Limor and what she has built. There is a cold business reality that I think you also need to address. When I look at Sparkfun's "Arduino Pro-Mini" they say:

Note: A portion of this sale is given back to Arduino LLC to help fund continued development of new tools and new IDE features.

So I think you guys need to decide if that is the business model you are in.

Now Nate and crew over at Sparkfun are great guys and give so much back to the ecosystem, but they don't say if it is $1/year or $5/part and realistically it is likely somewhere in between. Sparkfun is clearly in the hardware business; software is a hardware enabler for them.

Spark on the other hand seems to be in hardware/software/cloud business, which is great! If you think your primary business is, say, the cloud business and that will include many hardware platforms, you should consider the good will generated by plowing some cash back into Arduino LLC and using the "Arduino" name in some way. If instead you think your primary business is the hardware part, then going independent is likely the right move, as Limor said. And finally, if you want to be in the software business, you should get your head examined!

As Dave asked in this thread:

This same app/program/sketch/whatever does not recompile included files.
The .ino file recompiles if I change code there.
But I completely removed the content from a .h file and a corresponding .cpp file that are included in the .ino and when I pushed Verify it still compiles with no errors or warnings.

Okay, so I tested this, and I can’t reproduce it. Did you do this test on a project that had the ‘multiple-tab’ issue? I’m guessing the “other copy of the tab” still had the .h/.cpp contents, yeah?


The way I see it, Arduino “compatibility” and being compatible with Arduino users may be the issue here. The Spark is NOT truly arduino compatible though it uses familiar mechanism in its hardware and software presentation. I believe the Spark should be considered “familiar to Arduino users” in that it is not a huge leap for the typical arduino user to learn the Spark. The fact that users can get on the web IDE for simple projects or the spark CLI or a local toolchain tells me this product can appeal to a broad audience. At the end of the day, the Spark is, well, a Spark! It is not an arduino, it is not a PIC or AVR or whatever, its a SPARK! AND, it is designed to be easy for arduino users to learn it!

As for code, firmware, ino or cpp? I write CODE, which becomes firmware once merged with the core-firmware and flashed on the Spark. I prefer .cpp since we are developing in c++ and that’s my 2 cents worth. :monkey_face:

1 Like

@Dave Actually no, the contents of the two tabs is identical!