Thank you for pointing out the obvious
I’m must say I really don’t understand complains such as “it was working a year ago and now when I open it, it doesn’t compile with the new version, everything has changed!” – Are you not using version control?!
There is not a single tool/library/project that will stay exactly the same for a year time while going though major version upgraded. Software evolves, it gets better, bugs are fixed, and sometimes it means breaking backward compatibility or changing the API.
But Mbed really follows semver and it’s absolutely normal to have firmware working on 5.x.x that will not work or compile on 6.x.x.
5.x.x to 6.x.x is major version upgrade and stuff breaking are to be expected.
Mbed also uses modern tools and everything is on Github, so as stated by @cjhdev, you can pin the versions that work for you, your workflow, your OS, your project. All the changes are in the history so you can always go back in time to the version that used to work, even for mbed-tools and the pip packages if needed!
Taking a step back I’m a bit fed up with this flow of negativity regarding Mbed… “it doesn’t work for my platform!”, “it used to work”, “why did you change the name of the function?”, “why are you pushing chrono and other amazing C++ library that help you write better code instead of letting me write the cr**y code I’m used to write?”.
As I said before, if you haven’t opened your project for a year and you try to upgrade to the latest version, don’t be surprised it doesn’t work. Try doing the same with a new version of iOS: same problems. But it’s okay, it’s called maintaining your software.
That being said, projects that have been dormant for a year and only opened through an online IDE sound more like hobby projects, or experimentations, than production firmware thousands of products are depending upon. And that’s okay, but in this case why waste everyone’s time complaining. Ask questions, ask for help (the community is getting bigger and bigger and there are amazing people ready to help out!), but please, be positive
If your project is professional and you expect a high quality of service, you can pay for it. Mbed is free and open source. They don’t owe you anything. It’s even in the Apache 2.0 License:
Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
To steal the words of Mike McQuaid, main maintainer of Homebrew, from his amazing article “Open Source Maintainers Owe You Nothing”
Let’s turn this legalese into plainer English (note that I Am Not A Lawyer):
- The way the software is today is all that the maintainers ever agree to provide you (bugs and all)
- The maintainers provide no assurances that the software will ever work for any user or use case (even documented ones)
- The maintainers are never liable for any problems caused by any use of the software (including damages that require you to pay for repairs)
- You must agree with the above to have any right to use the software
Don’t like the project? Stop using it. Don’t like the upgrade? Keep using the previous tag. Don’t like the way things evolve? Make a fork and start developing your own ideas. Think that your idea is worth sharing and adding to Mbed? Make a PR and contribute!
The best thing is that, even with this licence, it doesn’t stop the Mbed dev team to do everything they can to fix bugs, make the tools better and develop new features. If you’re curious, go read some of the discussions on issues and PRs on Github. You’ll understand what they are really doing, the complexity behind your wait is being deprecated
issue and why they chose a different path that mean that you’ll need to change a few lines of code to get up and running again.
I’ve learned so much reading those discussions, not just about Mbed but about C/C++, coding practices, algorithms, etc., as well.
Of course, not everything is perfect, but if you really think some things should change, stop complaining and give us a hand!