After a period of over a month during which no work was done in Utilities, I decided to make a final release so that I can put a definitive end to this project, more than three years after I began developing it. In fact, v1.4 (over one year old already) was meant to be the last release, but as has been explained before, bugs and a desire to go a bit further meant development continued past this version.
So here we are, with over 280 commits past v1.4 (git says 220 files changed, 24494 insertions, 4521 deletions, but part of that is due to the inclusion of picoc).
The text editor
One of the things that was part of the "desire to go further" was a proper multi-line text editor. This is something that doesn't yet exist on this platform, over four years after the first unofficial add-ins were built. I'm sad to announce that as long as me and Utilities are concerned, this will continue to be the case.
Over the last years, multiple efforts to bring an actual text editor to Utilities have been made by two or three people, but the results of such efforts never reached a point where I was comfortable including them with Utilities, in terms of stability and usability. Stability and safety were of special importance, at a time when Utilities already had some bad reputation, due to the instability of previous versions and after being the suspected cause of calculator bricks, something that was ultimately dismissed (but still worries me, obviously).
Causes for the failure of these multiple efforts include:
- the lack of technical knowledge to build such an editor;
- the technical constraints imposed by the OS that make building a text editor, that can actually edit big files such as Lua or PicoC scripts, very hard;
- the fear of trying more advanced techniques or experimenting with lesser known syscalls (there has to be one for multi-line editing somewhere) at a point when the community had already seen many calculators bricked for unknown reasons and (still true as of today) no way to fix these bricks;
- more recently, the lack of motivation of the people involved (myself included), at a time when most communities, even Casio-focused ones, do not give much importance to the Prizm. This is also related to the new examination rules that are becoming effective in some countries, and mandate the existence of an examination mode, which the Prizm lacks, meaning less and less of these are bought and used. In my case, there are also other personal aspects, such as moving on to university (first year done already) and no longer using the Prizm in class.
All this should make it clear why Utilities v2.0 will include many new features and nice changes, but one of the most needed ones won't be present.
Major release, major removal
Lots of things have changed since v1.4 (hence the major version number increase). Features have been added, many improvements have been made, but to the dismay of some users, I decided it's best to remove one thing from the new version: the CPU speed selector.
The reason for removing it is very simple: it was developed in a time when the accepted way to over/underclock a Prizm was to mess with the main CPU clock. But in November 2014 sentaro21 came with his Ptune2 tool and showed the community what proper SH7305 overclocking looks like. The CPU speed adjustment feature included with Utilities is doubtlessly inferior to Ptune2 and may needlessly cause stress to the different calculator parts, not to mention the higher speeds provided by it are outright incompatible with certain calculators. The only point going for Utilities' adjustment feature was the ease of use, but I believe that with a bit of training, the basic and most safe features of Ptune2 are as easy to use. And finally, some members, like TeamFX, will agree that CPU overclocking should only be available to people who know what they are doing and are willing to take more risks, and thus it doesn't make much sense to make the process as easy as counting to three.
This will be the only feature to be removed. I pondered the removal of the Add-In Manager, but after the recent changes I did to it, it's a bit more stable, and most importantly, the failure mode consists on the OS disabling all of the add-in functionality without actually disabling the SMEM or deleting any add-in. The add-ins simply disappear from the main menu and from eActivity strips, until a reboot is made. This is a behavior users may find curious and perhaps even useful, so I don't mind too much. Of course, the Add-In Manager will keep being a advanced tool, only available after enabling the appropriate option in the settings.
Mission impossible, goal not achieved
Don't get me wrong: I am quite happy with the work that was done - and to think that Utilities was initially meant to be just a clock and stopwatch... At some point, years ago, I realized that Utilities could fill a gap, the gap that Doors CS fills in TI calculators, and started work towards making it some sort of shell for the Prizm. Unfortunately, the OS architecture and our lack of understanding of certain parts of it, meant that such grandiose plans had to be withdrawn.
I also hoped that, much like Doors CS, Utilities could act as a base for more easily developing programs for the Prizm. It would be awesome if certain UI routines, such as the menus, text viewers and text inputs could be re-used by other programs without having to include them again in their code. Same goes for less visible things such as the file management helpers. Shared libraries (dyanmic linking) would be a way to make this possible, but sadly AHelper's calculator died as he was working on this.
I also wanted to make Utilities more extensible; if it had evolved into a shell as I had originally planned, things like the Calendar, File Manager and password generator would actually be separate apps using the Utilities framework, and people would be able to replace or remove these apps as they wished.
PicoC actually allows for some of this, albeit not with the freedom of native binaries, but at least not everything is lost.
Finally, other failed goal was to make Utilities integrate better with the OS, or should I say, make the OS integrate better with Utilities. Things like showing a clock in more places in the OS, or even extending the OS menus, never became reality. The infamous Prizmed framework (a pun on Android's Xposed) had the sad ending of bricking my calculator, only reminding me that we don't know what we don't know. Since then I have experimented much less, as even less dangerous things are a pain to debug because the emulator doesn't support going into standby, nor simultaneous key presses, nor 3-pin communication, etc.
It is of course possible that other people will come and make some of these things reality, but given the inactivity of all the Prizm communities, I don't think that's going to happen any time soon.
Not very popular
Perhaps due to its horribly generic name, Utilities is not known to many of the Prizm users that install 3rd-party add-ins. It also doesn't seem to be as useful as I thought it would be to many people.
Of course, I don't expect people to use the calendar, stopwatch, etc. as their primary tools of the kind. Heck, some people won't even do that with smartphones, let alone with a calculator. But I hoped that with so many different things, it would have something of interest to more people.
It's actually possible most people don't even realize it has a file manager, or that they find it too hard to use.
It may also be a case of people not liking monolithic all-in-one designs where the calendar sits next to the image viewer, in the same executable. I don't like them either, but it was the only way I found to reuse code and avoid dozens of different g3a headers floating around.
Perhaps freeing Utilities of its silly name would help, but I'm also afraid it will do even worse by disconnecting it from its current popularity. If anyone has suggestions for a better name, feel free to give them.
I'm not even sure v2.0 will be of service to anyone, but I'm releasing it anyway because I think it would be unfair to keep the over 280 commits of goodness just for me. Yes, it's open source, but it's also kinda hard to compile. So in the next days v2.0 will happen, half a dozen people will download it, and I'll move on to developing more useful stuff that's not tied to a decaying platform.
Please reply if you have any questions or suggestions. And congratulations for digesting this giant wall of text