Is it for Me?
This page is designed to help you determine if the Lumensalis CircuitPython Framework (LCPF) is the right fit for your needs. Whether you’re a hobbyist, educator, or professional developer, understanding the target audience and use cases for the LCPF can help you make an informed decision.
First and foremost, keep in mind the Primary Goal of the LCPF : helping non-programmers incorporate interesting and complex interactive effects into their projects.
What’s your project?
The LCPF is primarily designed for projects that involve interactive light, audio, and motion effects. These include things like tabletop gaming terrain, cosplay, stage props, and other DIY projects where you want to add dynamic behaviors without needing to write complex code.
What’s your budget?
The LCPF itself is free to use for your own personal projects. However, the cost for the hardware and components (Controllers, Shields, and Devices) you use can add up quickly, and in some (especially simpler) cases you could save a little using “traditional” programming with cheaper, less powerful hardware. It’s probably less than the price of a pizza, and you could end up spending quite a bit longer figuring out how to do it directly in CircuitPython. (and, if you’re starting as a non-programmer, it could be ludicrously more work to learn enough C/C++ and Arduino tricks to get it going). But if you want to add very similar effects to a few dozen pieces of terrain, or a stage full of matching blinky costumes, saving a pizza’s worth per item might be worth the extra effort.
What’s your skill level?
If you’ve never written code or done any programming before, the LCPF is meant for you. You will need to learn a bit to get the most out of the LCPF, but it is far less complex than learning to program in the traditional sense.
If you have some programming experience, the LCPF can still be a good fit. HOWEVER, it will likely seem a bit counter-intuitive at times. More to come on the specifcs, but for now please check out the Developer's README (but only if you’ve already done some programming) for more details.
What hardware are you using?
The Controller, Shields, and Devices for your project need to be on the Supported Hardware list. The LCPF has to specifically add a bit of magic behind the curtain to fully support them -just because it’s already supported by CircuitPython (which the LCPF is built on) doesn’t make it “work” with the LCPF (although it does make it much easier to add support - if there’s something outside the list you’d like to use, feel free to ask).
Has anyone else done something similar with the LCPF?
If you can find other projects using the LCPF that doing something similar to what you want to do, chances are you’ll be able to do what you want fairly easily. Better yet, if it’s covered by some of the existing LCPF examples, you can get a great head start by just copying the parts you want. You might need to learn a bit if you want to customize things from there, but as long as you can find examples of the LCPF already doing everything you want (even if it means Frankensteining bits and pieces from several projects), then the LCPF should have everything you need.
What’s the catch?
The LCPF sounds amazing - almost too good to be true. Where’s the fine print?
Yeah, it’s not perfect. Some of “magic behind the scenes” used in support of the LCPF’s Primary Goal requires accepting some tradeoffs in other areas. You can find more details on the The Ugly… page, but here are the highlights.
You can’t use it for just anything
The License for the LCPF only allows you to use it for your own personal projects, and they have to be safe. It specifically prohibits using the LCPF for
- safety critical or otherwise “dangerous” applications - see the Safety page for more details
- commercial use or anything that generates revenue (without a separate commercial license)
And it can’t do everything
Part of the “beginner friendly” approach is based on providing a Vocabulary which lets you describe what what you want to happen in your project, and Examples which show you how to use them. While the Vocabulary is growing, it is also finite and there’s no simple way (even for programmers outside of the LCPF developer team) to add new “verbs” to the Vocabulary. If you can’t find an example that does something similar to what you want, there’s a chance you won’t be able to do it at all with the LCPF until new “verbs” are added.
You can’t give your projects to anyone else
If you build a project using the LCPF, you can show your project to others in private and in public, but you can’t give the the project to anyone else. Hopefully this restriction will go away in the future, but lifting it without opening loopholes for commercial exploitation is a complicated issue. In the meantime, if you want to share your project with others, feel free to ask for permission.
It is NOT meant to help you “learn to program”
and might even make learning to program in the future harder
It can be slow
- LCPF projects can take a while to “load” when you first power them on. The more of the LCPF features you use, the longer it takes. Startup can range from several (usually at least 6 or 7) seconds to almost a minute, depending on the controller and features used (enabling full Wifi / WebUI support can take tens of seconds by itself).
Your project may occasionally stutter or “freeze” for a moment
Most LCPF projects will occasionally stutter or “freeze” for short (less than a second) periods of time. In some projects you might never really notice. But busy projects - for example those with lots of animated lighting effects and especially audio effects active while using the WebUI, you’ll probably notice the freezes and they might get annoying. LCPF works hard to mimimize these, but it’s effectively impossible to eliminate them entirely.
Limited hardware choices
There’s not an easy way to effectively use any Controller, Shield, or Device in an LCPF project until specific support has been added for it. So if it’s not on the Supported Hardware list, it’s not going to “just work” with the LCPF, and you might not be able to use it at all.
The LCPF is still a new project
While it’s already able to do alot, and it’s under active development, there’s no gaurantee that this will continue. It is unlikely to be discontinued as long as there’s active interest and it is successfully achieving it’s Primary Goal, but the amount of time that can be devoted to it may vary, and there’s no gaurantee that I’ll be able to keep up with demand for new features, hardware support, etc.
It might change in ways that “break” your Project Definition
This is not something that will ever be done lightly. But especially for “new” parts of the LCPF Vocabulary, things may evolve based on user feedback, especially when ideas which were meant to make things easier don’t actually end up doing so in practice.
The LCPF is NOT an Open Source project
Although the source is available  and it’s intended to be “free as in beer” for people to use on their personal projects, the LCPF is not under an open source license. You’re not even allowed to give a project you’ve built with the LCPF to someone else without permission, even when there’s no “profit” involved. You can find more details on the License page