As I'm currently in the middle of porting some changes from Tragic Lantern, here's my detailed code review, based on
this diff (ML 4b3129d vs TL 7a5ccc6). I hope it answers the questions about safety and about the differences between TL and ML.
Cool stuff - this will get merged sooner or later
- various features (dual ISO, raw overlays, ResLock) ported
- stubs/consts updated
- advanced HDR video updated for new menus
- installer fix for new cameras
- FPS timer tweaks
- bracketing prefix (this is my code, I just didn't fully test it)
- some little bugs caught (e.g. EOS M menu not working while recording, or debug messages forgotten in the Protect/Rate shortcut)
- EOS M updated to 2.0.2
- 50D FPS warning
Major concerns:
- In many places,
Canon error checking code is disabled (examples:
beep.c or
bitrate-6d.c, especially the second one).
This is a no-no for me, and it's like running with a bike downhill at full speed without brakes. Just try understanding that code if you don't believe me.
- ROM backup (which g3gg0 created so we can unbrick the cameras if something really bad happens) is commented out:
+#undef CONFIG_AUTOBACKUP_ROM //WTF, Batman?
Okay, I know we never actually used this, but who knows?
- The stability tests from ML (which I wrote, and ran them hundreds of times), were disabled without reason:
+#undef CONFIG_STRESS_TEST // Not Needed
- Movie mode remap (which
I know it's dangerous, because I've soft-bricked my 60D with it) it's enabled here.
- GUI timers are completely disabled (FEATURE_TIMER_HACK). I'm OK with slowing down the refresh rate, but completely disabling them isn't safe IMO.
- Some debug tools that I consider dangerous and were written for developers only (DIGIC poke, prop browser, dm/tp intercept) are enabled in TL builds (so users without proper knowledge have access to these tools, and they shouldn't IMO).
- Picture quality hacks (SRAW, MRAW) are included. I've bricked my 5D2 with wrong picture quality settings (ERR70 even without ML). I've
unbricked it successfully.
- Error handling in bitrate code is done by
rebooting the camera in the middle of recording!Minor concerns- raw_rec also records in photo mode (
it shouldn't)
- boot methods changed (any reason?) [OT: remember the early days of 6D when ML was running without even allocating memory for it?]
- no checks before patching Canon code
- code changes are very hard to follow (very short commit messages, often the commit alters totally unrelated stuff, changes that do nothing but add commented code)
- ML warnings are disabled (hint:
some people are under the impression that Tragic Lantern is actually a stable release):
+#define FEATURE_NOHELP //No one can help you now
Neutral- some more things optimized with -O3 (can anyone show the difference, maybe with a video?)
- new peaking (I feel it's too slow, and the bug reports I've received from 5D3 alpha were enough for me to disable it until the code will be optimized)
- dma_memcpy
- uniwb (my old code, nothing wrong with it, it was useful when we didn't have raw histogram, but now it's no longer needed)
- REC_ON_RESUME and MOVIE_AUTOSTOP_RECORDING: these should be done with scripting (yeah, I know, somebody should revive the scripting engine first)
Not reviewed (some of these things are cool, but I just didn't take a closer look):
- video hacks
- feature additions to raw_rec
- mlv_rec (it's on the todo list, but it's very complex)
- audio
- QEMU changes
- a lot of stuff in debug.c that is impossible to understand
Conclusion: personally I'm afraid to run Tragic Lantern on any of my cameras. Sure, I don't remember anyone bricking his camera with TL code, but I've learned about some dangerous things the hard way, by bricking my own cameras (and then learning how unbricking them). Of course, you should not trust me blindly, you should review the code on your own (even the code from the main repo).
Sorry if I sound like bashing or underestimating the contributions from 1%. I've just tried to do an objective review of Tragic Lantern, especially regarding code safety, and I've tried to back every argument with a link or a code snippet. These are the main reasons TL code didn't get merged into main repo; I've pointed them out many times, but the issues were not solved, so a little reminder shouldn't hurt.
Now, I have to admit I don't have a better solution. The main repo for 6D (and other cameras, e.g. EOS M) was not touched for months, so it's completely untested. I can't help with that, because I don't own these cameras, and I already have too many of them). I just want people follow
some really basic development guidelines, and
submit their changes to the main repository, where they will be subject to code review from me, g3gg0, nanomad and many others - both devs and nondevs). Now, the entire 6D/EOSM/7D development is done in a fork where the core ML developers have absolutely no influence, and most people are not aware of that.