This will as a surprise to many of you. We were working on Mignori 2.0.0 for a little over year, and then suddenly we had to go into a hiatus. We were unfortunately silent for a while and we didn’t deliver any updates, either here in the blog, or in the app that was being used by our testers.
So I want to tell you about a story of bad development practices and poor decisions made by me, and what I will to prevent this from happening again.
This is a technical paragraph, so feel free to scroll down to the “So What Now?” title if you don’t want to read this.
Development of Mignori 2.0.0 started on Swift 2. That’s the first poor decision I made; to choose a language that wasn’t going to be stable until it hit version 3 and decided to go with it, thinking that Apple would give me good migration tools. I was very wrong, and Apple’s migration tools from Swift 2 to Swift 3 did not work as neatly as expected. Migrating the codebase from Swift 2 to Swift 3 was necessary as Xcode dropped support for Swift 2 very soon after Swift 3 was released.
That was just the first strike. The second strike was me not making up my mind to choose a storage system. Did I want Apple’s tools, or something else? I actually changed the storage system twice in the app, and neither of them (for those in-the-know, Core Data and Realm), really suited my needs. Originally, Mignori was to have iCloud Sync using Core Data, but Apple deprecated those APIs for iOS 10 (I do not like using deprecated code when it can be avoided). Realm did not support sync at that time. Core Data is much more powerful than Realm and I can add some interesting features with it, which I can’t with Realm. Not making up my mind on what storage system to use had a significant impact on the development of the app. It wasn’t easy to write a “plug and play” architecture that simply allowed me me to swap in and out the storage systems as I wanted, because Core Data has a very powerful feature (NSFetchedResultsController) which Realm does not. Not having an equivalent to this API pretty much left me stuck and didn’t allow me to switch back to Realm later on (Mignori started with Realm, then it went to Core Data, then Core Data received some changes for iOS 10, and I decided to go back Realm… But this time it was impossible).
And the final strike was that I added way too many dependencies and third party frameworks to the app to the point it was an unmaintainable monster later on. Those dependencies ruined me up because not all of them were updated in a reasonable time for Swift 3. Many that did included breaking changes that were very hard to fix and adapt to.
I must have tried a total of 6 times to save the Mignori 2.0.0 project from death, and failed them all. These technical challenges made it impossible. But thankfully it was not all for naught, because at least I had learned a helluva of lessons.
So What Now?
From this point onwards, we will consider Mignori 2.0.0 a finished product. A product that was only accessible to a handful of people, and an app that was incomplete, but lets consider it a complete app anyway to make way for the future, Mignori 3.0, and this future is a much brighter one. A future where I won’t depend so much on third party libraries, where the language will be stable, and where we have a good storage system in place. I will use all the lessons learned to ensure I do not make these same mistakes again.
The development of Mignori 3.0 will start after WWDC 2017. WWDC will be held on the week of June 5 to June 9. The keynote, which I care about in order to start development, will start on June 5. That same day, or very shortly after it, I will start my plans for Mignori 3.0. I will watch the relevant videos to learn if iOS will now have everything I need for the new app or if I need to use third party tools. I am waiting for WWDC because depending on what technologies I have available then, I will be able to decide if Mignori will be iOS 11 only, what storage system to use, and a sleuth of other decisions that I need to make.
Upcoming and Current Testers
First, I want to thank you all for your support and your patience. Ever since Mignori 2.0.0 started development, we have received over a hundred requests to join our Alpha program and a few more who were also interested in the Beta program. Many of these requests were sent to us on our hiatus, so we haven’t processed them all yet. I will be in charge of processing all your requests this week and the next.
Unfortunately, I cannot add all of you to the Alpha program. There is a limitation on Apple’s side that only allows me to deploy ad-hoc builds (builds that don’t have to be approved by Apple in order to be used by other people) to just so many people at once. So this is what we will do: People who were already part of the alpha program will keep their status as alpha testers. An e-mail will be sent shortly asking you to confirm your participation in the alpha. If you aren’t interested, please let us know so we can give your spot to someone else. If we don’t receive a reply from you in 7 days, we will assume you are no longer interested in the alpha program, and we will give your spot to someone else.
For people who were not part of the alpha program but had requested access in the past few months, we will randomly choose 15 people to be part of the alpha program. These people will receive an e-mail and once again we will ask them to confirm their participation. If you were chosen and we don’t hear back from you in 7 days, we will give your spot to someone else.
As for Beta testers, we have more freedom here because we can add up to 1000 testers. We cannot do this however, as TestFlight builds are App-Store ready builds that have all the functionality unlocked for free, so having too many people there means it eats up from our revenue. Really sorry about that! We still need to make money out of this app, so we won’t add too many Beta testers. We plan on having around 100 of them or so, we are still defining this.
Like the previous version, alpha testers will have beta tester privileges automatically when the app hits TestFlight. the rest of the TestFlight testers will be chosen randomly from the people who requested access to the Beta Build only, and if we have more slots left, we will invite anyone from the community on a first-come-first-server basis.
New Development Strategies
I didn’t mention this before, but this is actually my fourth screw-up: The previous app was very feature complete for the first release, so testing it was hard, and I spent too much time getting a lot of details right (you could even change what 3D Touch shortcuts you wanted in Settings). Despite it having a lot of core functionality completed, it never hit the App Store. This is bad, because many people could have enjoyed the app as it was, but they didn’t have access to it.
So the way I manage development of this app will be slightly different, and this is everything I will do… Instead of aiming to release a feature rich, extremely complete and customizable app on the App Store from the get-go, we will release a very barebones app at first. This barebones app will be able to search in Boorus, and that’s it. Subsequent builds will have more features. Eventually the app will have everything Mignori 2.0.0 had, and more. This will allow me to not only deploy apps to Beta testers sooner, but also each build will see the App Store sooner and it will be accessible to anyone.
And That’s It!
One big apology is not going to cut it for my screw ups. I hope you stick with me for the development of Mignori 3.0. E-mails will be sent shortly after this is published.