question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Discussion: Simplify the core.

See original GitHub issue

Since I open sourced MagicMirror², I have received many awesome pull requests adding a lot of nice features to the Magic Mirror core. I am very grateful for that! Unfortunately, this comes with a downside: the application gets a lot more complicated.

The reason I open sourced MagicMirror² was because it is a perfect starter project for newcomers. Getting their feet wet in javascript and software development in general (see manifesto). With the current complexity, this project is slowly moving away from this.

I also noted that the amount of bash code is increasing, while the main intention of version 2 was to try to do everything in 1 program language: javascript. (Opposed to v1, which was a combination of languages like PHP, Javascript en in some cases Python).

Looking at other OS projects, there are some beautiful examples on how the project can be focused at what it does best. One example I like to mention is OctoPrint/OctoPi. Software to control your 3D printer. While @foosel does a great job to maintain the core application (OctoPrint), the packaged Rasberry Pi image (OctoPi) is maintained in a different repo by a different user (@GuySoft).

If we use that same approach there are a lot of things we can take out the core repo, and let other users start their own repo’s to accomplish the same features while separating concerns.

In my opinion, the following parts could initially be taken out of the core repo, and taken over by other repo’s:

  • Installer script
  • Update script
  • Start Script
  • PM2 integration
  • Docker Package

Of course, we won’t take out these features as long as no other solutions are in place. As an install and update replacement, we need to write a good manual.

The added benefit of this approach is that the release schedule of the above features is no longer tied to the quarterly release schedule of MagicMirror².

With the new approach I think it’s good to set a few guidelines to which the future versions should adhere:

  • Javascript, HTML, CSS only.
  • No compile scripts (ie. webpack, sass, less)
  • Focus (only) on Raspberry support.
  • Install/Run/Update using default commands: npm install, git pull, etc. Which will help people to learn and understand these commands.

Since this project would have never been such a success without the help of the community, I want to discuss this approach before taking any action. So I’m looking forward to your input.

Please let me know what you think with an open mind.

Thanks! Michael.

EDIT: Provisional TO DO List

Based on the discussion below, I made a provisional to do list which could be the base for the simplification of this repository. The to do list is not set in stone, and could change based on the feedback in this issue.

  • Remove installer scripts (make sure an external repository is available as a replacement).
  • Remove update scripts.
  • Remove start script.
  • Separate Client & Serveronly commands as regular npm commands: npm run start & npm run server.
  • Cleanup folders (remove /installers & /splashscreen and remove all root .sh files). Where necessary, replace shell code with javascript code.
  • Implement handler for incompatible modules.
  • Create separate documentation site and repo.
  • Improve documentation on how to install and update. This should reflect the procedure without an installer/updater, but it should also mention the available third party installers/updaters.
  • Make an overview of the hard- and software requirements.
  • Make an overview of the supported (tested) hardware and operating systems.

Feel free to share your ideas and feedback!

Issue Analytics

  • State:closed
  • Created 4 years ago
  • Reactions:13
  • Comments:85 (26 by maintainers)

github_iconTop GitHub Comments

7reactions
MichMichcommented, Mar 14, 2020

@cowboysdude I’m not sure if or how I should respond to your comment. Calling people rude isn’t helping anyone. Especially when talking about open source software. Keep in mind that any work I have done for the past 6 years on the MagicMirror² project was completely voluntarily. I have no obligations to you or anyone else. The fact that you donated to the project doesn’t change that.

That being said: I think it’s important to explain that I’m absolutely not against the idea of “automatic installers”, “ready made raspberry images” or anything else that makes life easier for beginners. It’s just that I can’t manage all these components myself. Pulling them out as external repositories allows the maintainers to maintain those components without my intervention. @sdetweil’s hard work on the installer is a perfect example.

In the past years the project has grown a lot. This came with a huge downside: poor maintainability. If I let the project continue the way it was, it would eventually crash and burn. More important: I would completely lose the drive and interest to continue the project. By splitting up the project, this all can be prevented and will eventually improve the quality of the core. Of course this means we have to get trough some rough patches. And there certainly will be some moments of discussion and incomprehension. But keep in mind It’s only to keep the project running.

I’d also like to point out the forum is not intended to ask me for help. It’s a place where users can help each other and share their knowledge. Answering all questions I get would be more than a day job. I already have a day job. It pays my mortgage and has paid for the first 5 years of the MagicMirror² project. My time is limited. So I rather spent it on improving and releasing updates of the framework than answering individual questions.

As said before: donations don’t give me the obligation to help individuals out. That’s not the idea behind an open source project like MagicMirror². Donations are used to pay for the costs of running the project. I don’t want to give anyone the impression I’m doing this for the money. If that’s what anyone thinks, they couldn’t have been further from the truth. Therefor I’d like to make an exception and return your donation. Please send me an email (michael at xonaymedia.nl) to confirm your PayPal adres and I’ll transfer the money.

In the future. I recommend you think before you call someone rude. Everyone is fighting their own battles. Calling names won’t make things magically better. Especially not at times like these.

Kind regards, Michael.

6reactions
MichMichcommented, Jan 3, 2020

@khassel I understand what you are saying, en indeed the pull count is impressive. But docker isn’t something beginners start with. For me personally I value the simplicity of a simple js project more than the sheer amount of users that simply install and run the script. If that was the case, I would just distribute a ready to use raspberry pi image.

If you take a look at the list of contributors, a lot of them made their fist ever GitHub contribution in the MagicMirror² project. This is what sets the project apart. This is what drives me.

If we slink MagicMirror² down to a simple js project that can either be start as a simple electron app or as a server only process, wouldn’t it be easy for someone else to make and distribute a nice docker wrapper?

In that case we can focus on the quality of the core, while others focus on the ease of use via a docker image.

This would also allow multiple approaches: docker, installer apps, ready to use images, etc.

Read more comments on GitHub >

github_iconTop Results From Across the Web

5 Ways to Simplify Complex Ideas (and Communicate More ...
Ever feel your idea is too complex, unwieldy, or multi-faceted? Check out these 5 tips to simplify ideas so you can communicate them...
Read more >
Seven Strategies for Simplifying Your Organization
Prioritize, prioritize, prioritize. One of the keys to simplification is to figure out what's really important (and what's not), and continually ...
Read more >
How to simplify your processes so that people will ... - Howspace
Make the insights and conclusions from group discussions transparent so that participants can understand how and why things are moving forward.
Read more >
Mastering Complexity Through Simplification: Four Steps to ...
Mastering Complexity Through Simplification: Four Steps to Creating Competitive Advantage · Smart Start. The first step is the identification of ...
Read more >
The Core Curriculum | Columbia Undergraduate Admissions
Ultimately, the Core will help you develop intellectual tools and habits of mind you'll use long after you leave college, enabling you to...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found