Steven Troughton-Smith writes the following about his work on Stack v2.0...
Well, the day has finally arrived; Stack v2.0 has been completed and is almost ready for release.
Stack is one of my oldest, and undoubtedly most successful, iPhone endeavours and is one I'm particularly proud of. I bought an iPod touch the day they were launched back in '07, and as soon as I could I began developing software for it. Looking at the design back then, the Button Bar (or Dock) on the iPod touch looked similar to that in Mac OS X 'Leopard' , and near instantly the idea popped into my head: why not recreate 'Stacks' on iPhone OS?
I played around with it in my head, as I knew it would be pretty simple to pull off visually as all 'Stacks' did was translate an icon in y and rotate it - dead simple to do with CoreAnimation. Pretty soon I had a demo version up and running and it looked great!
Complexity soon set in. I had to create a separate application to manage the settings of Stack (singular, as there currently is only one Stack onscreen at a time ;-) ), and Stack itself originally modified the Button Bar icon list and placed a blank icon behind where the Stack should be. On top of that, Stack had to run on launch as an application displaying above SpringBoard.
Former users might recall that adding items to Stack was a messy, convoluted process involving XML editing and restarting the Stack application. Similarly, the original had reported issues of being unable to install, and I never developed it past iPhone OS 1.1.2, leaving many users stuck.
Then came the iPhone SDK, and iPhone OS 2.0, and it was exalted. But, for Stack, it meant DOOM. iPhone OS 2.0 prevents any application from running above SpringBoard and drawing a UI to the screen, and any such attempts equalled a nasty crash.
For a long time I thought Stack was dead, undoable for 2.0. For a long time, I was wrong =).
Dynamic Library Injection was its saviour. Basically, it means that the Stack code could be *injected* into Springboard, and actually run as part of SpringBoard. Thanks go to Nate True without whom I wouldn't have figured this all out. But wait, there's more! Since I was now part of SpringBoard, I had full access to add everything I had dreamed about adding to Stack v1 but never found a way to. With a bit of ingenuity, I was able to detect the dragging of SpringBoard icons and dynamically add items to Stack with but drag & drop. I was also able to pick up on WinterBoard themes, the #1 requested feature before v2. To seal the deal, I added the ability to drag-remove any item in Stack, replete with the familiar Mac 'poof' animation; a puff of smoke.
Where before Stack was a complex, power-user tool to set up and manage, it is now a user-friendly, drop-dead simple tool. I couldn't be happier with the results, and I'm proud to announce that it will be freely available next week from Ste Packaging in Cydia. A big thanks to all whom have e-mailed me over the past months, and I hope you all enjoy Stack v2!