Arduino LMIC library naming: Classic LMIC and MCCI LMIC [HowTo]

The two most used Arduino LMIC libraries are:

Classic LMIC
Formal library name: LMIC-Arduino
Repository: https://github.com/matthijskooijman/arduino-lmic

and

MCCI LMIC
Formal library name: MCCI LoRaWAN LMIC library
Repository: https://github.com/mcci-catena/arduino-lmic

Classic LMIC was the first LMIC implementation for the Arduino framework. This library has long served as the defacto LMIC library for the Arduino framework but is no longer maintained.
MCCI LMIC is a fork of and successor to Classic LMIC and is currently actively maintained.

Both use the same repository name ‘arduino-lmic’. The formal name of Classic LMIC originally was Arduino-LMIC which was later changed to LMIC-Arduino but the repository name stayed unchanged. Later MCCI LMIC was forked from Classic LMIC. The repository name was not changed and so both Classic LMIC and MCCI LMIC both use ‘arduino-lmic’ for their repository name which can be confusing.

In posts people often need to refer to these libraries but do so in different ways (e.g. Arduino LMIC, arduino-limic, matthijskooijman LMIC, matthijs’ Arduino LMIC, MCCI’s LMIC implementation, etc.) which does not make things easier.
And when users are only mentioning Arduino LMIC or arduino-lmic that does not make clear if they are using Classic LMIC or MCCI LMIC because those names are ambiguous.

To keep things simple (for brevity, unambiguity and uniformity) I suggest to from now:


Use the names Classic LMIC and MCCI LMIC when mentioning or referring to these libraries.


(Where needed repository URL’s can be added or linked but don’t use the URL’s instead of the names mentioned above.)

For more information about these libraries see: Overview of LoRaWAN Libraries [HowTo]


IBM’s original LMiC implementation does not support the Arduino framework. It served as basis for development of Matthijs’ Classic LMIC. Similar to above I suggest to use the short name IBM LMIC when referring to IBM’s original LMiC implementation.

3 Likes

Given that this has been formerly deprecated by its maintainer “classic” seems an inadvisable choice of name.

It would be far better to refer to these by the maintainers

And when people ask questions about problems, it would be best if they linked to the actual branch & state they used, too.

I understand the use of Classic, but if it’s MCCI, why not just make it Matt?

And then we have to teach this to the people who are asking questions. But at least the rest of us will have some idea.

Matt LMIC
Matt what? The one not being glossy?
Matt who? Matt Bianco?
Would be inconsistent to use a (first name) abbreviation here (when compared to MCCI).

I think ‘Matt’ adds more to the confusion than making things clear and simple.

Some considerations:

Library name based

“MCCI LoRaWAN LMIC library” ===> MCCI LMIC

“LMIC-Arduino” (Classic LMIC) ===> NoGo because ambiguous

URL based

mcci-catena\arduino-lmic ===> MCCI-Catena LMIC

matthijskooiman\arduino-lmic ===> MatthijsKooiman LMIC

Too long.

Author’s first name based

MCCI LMIC ===> Terry LMIC

Classic LMIC ===> Matthijs LMIC

Confusing in case of MCCI LMIC.
Also sounds a bit weird, like LMIC is their last name.

Company name based

MCCI ===> MCCI LMIC

Matthijs Kooiman (LMIC Classic) ===> NoGo because not a company name

Mixed naming types

MCCI ===> MCCI LMIC

Matthijs Kooiman ===> Matthijs LMIC
Matthijs Kooiman ===> Kooiman LMIC

Kooiman LMIC would be confusing.
Matthijs LMIC, again LMIC looks like a last name

Linguistically correct would be Matthijs’ LMIC (and MCCI’s LMIC).
But the goal was brevity and simplicity.

My suggestions

  • MCCI LMIC
  • Classic LMIC
    The word Classic serves two purposes here:
    1. It refers to style and shows respect to the work Matthijs has done for Arduino LMIC.
    2. Classic also means old (as in the old deprecated library).

I think that these are both clear, simple and short and therefore easy to use.

I have used the formal library names before, but almost nobody else does.
In fact most people don’t even know that LMIC-Arduino is the formal name of Classic LMIC.
But using a mix of (ambiguous) names, custom variations thereof and URL’s is confusing and often unclear. Hence my naming suggestion.

How about

Deprecated LMIC

and

MostlyWorks LMIC

???

Overall, I’m cool!

1 Like

See my explanation for Classic above. It’s not clear why that would be inadvisable.

That would be the following then:
Terry Moore LMIC
Matthijs Kooiman LMIC

Most people won’t recognize the first as MCCI LMIC and Matthijs Kooiman LMIC is just too long.

Yes. Where needed repository (branch) URL’s can be added or linked but don’t use the URL’s instead of the names mentioned above. I’m almost sure that most users here will use the default branch.
(If not default they are probably smart enough to specify their branch.)

[quote=“bluejedi, post:6, topic:40592”]
See my explanation for Classic above. It’s not clear why that would be inadvisable.[/quote]

Because people shouldn’t be using it in new projects, as it’s an unmaintained dead end with known, unfixed issues that never will be fixed.

That would be the following then:
Terry Moore LMIC
Matthijs Kooiman LMIC

Most people won’t recognize the first as MCCI LMIC

That’s not just disingenuous but not even accurate - as it’s actually MCCI which maintains it, put their corporate name on it, and owns the github repo where it lives. Terry is the lead (but not only) MCCI person in that effort.

That’s simply a question of a suitable short form - but one that is clearly that and not “what’s classic?” or “If it’s classic why shouldn’t I be using it?”

I’m almost sure that most users here will use the default branch.
(If not default they are probably smart enough to specify their branch.)

My actual concern is with the state of that branch, eg if they checked it out the first time they looked at this stuff last year… ideally people would give the git hash.

I prefer constructive and practical examples/solutions.

That’s not a solution.

You’re welcome for suggesting any good solutions.

I don’t agree with that. Using the library"s version number (which is a standard property) should be sufficient for identifying the library. The version number is exactly meant for that and can also be checked in software (i.e. firmware).
(And in case version numbers are not properly mainted, then latter is what needs to be fixed)

Well, MCCI LMiC is pretty obviously that project’s own chosen name.

There’s already one nomination for a short name for the other which identifies it specifically by being a shortening of the respository name, or one could simply ask the person in question what they’d prefer.

Be my guest.

@bluejedi asked me to chip in, so here I am :slight_smile:

I’m not so sure “Classic” really has the right association for my version, because it is not really maintained anymore. How about “Original”? That conveys some time-related info (the original version was the first, other versions followed) and just seems clearer to me (but I’m not sure).

The formal name of Classic LMIC originally was Arduino-LMIC which was later changed to LMIC-Arduino

Note that I reverted the name change in library.properties, because the Arduino library manager didn’t handle the rename well. But also note that the original (en thus also current) name is “IBM LMIC framework”, not “Arduino-LMIC” as mentioned above (unless that refers to another name)?

I think the naming idea is generally good, but we will still be required to elicit which version someone is using and, as evidenced in recent threads, they are usually so confused they’ll happily swap libraries without even realising, let alone telling us, I think this is just a bit academic.

Otherwise, as I’m on day 25 of an Arduino + Radio thread, and ended up revalidating my use of the your 1.5.0-release3 for ABP & OTAA uplink & downlink over the last 12 hours, I’ll go with:

Tina LMIC

Simply the best.

1 Like

I’m currently on the go, so this is only a brief response:

Original LMIC would be confusing actually because the Original LMIC is IBM’s original LMiC.

Original Arduino LMIC would be correct but that’s just too long.

Tina LMIC?
What have you been smoking? :smile:

You’ve been on the current Arduino + LMIC thread. If we ever find out what the problem is for our Paris friend, it will be something really simple & silly.

But just to be sure, rechecked my breadboard version against two gateways rather late in to the night.

It works just fine and from my perspective, if you add in that it is the original Arduino LMIC library, so must be simply the best:

Yeah, that is indeed a downside.

Honestly guys, @bluejedi’s idea was a good one, but as I’ve answered most of the Q’s over the last few months for Arduino LMIC, this is a non-conversation as it’s only going to be a few of us that know the unofficial TTN forum official name.

2 Likes

So let’s use my suggested names then.

As shown, quite some thoughts went behind it.

That’s actually ‘just’ a case of user education.

(Remember ‘SCGW’?)

Huh? Tell me more.

Sorry to rub it in, but this weekend I’ve contributed to two threads.

The first was a query about why HTTP Integration wasn’t passing on uplinks. Turned out the chap didn’t own a device.

The second uses the ABP Hello World example with an expectation that will appear on the serial console. They’ve got they temp/humidity sensor working but I suspect the next couple of days will be coaching them towards putting the data in to the mydata byte array.

I’ve a 2004 Rioja Alta Gran Reserva in the house that I opened last night - should be ready for me to forget both of the above for a few hours.