I've recently thought about rewriting libearth in another language. I am considering C#. Why not Python? Why C#?
-
Python is not that good at making native-looking GUIs, in particular, mobile apps. We have to make huge glue codes to bind Python to Objective-C/Java. It takes more effort than making libearth from scratch.
-
While Python is not good at making native-looking UIs, there are Xamarin products for C#. Although they are not open sourced.
-
Well, actually there are no much alternatives other than C#. C# has been considered as the best language for making GUI apps for a decade.
- No need to much mention about Windows and Windows Phone apps.
- Gtk# for native Gtk apps. Even some GNOME first-party apps are written using it e.g. Tomboy, Banshee.
- Xamarin.Forms for iOS and Android apps.
- Xamarin Platform for Mac apps.
And there is another reason why I am considering rewriting it. Because it seems to have some architectural defects.
-
It takes so long time to load posts and a lot of memory space for loaded data.
-
Posts are hard to be randomly accessed. It has to load whole feed posts to reach the oldest post.
-
Hard to filter posts marked as read/starred.
So how can the design be adjusted?
-
Feed posts have to be partitioned. By year and month? By week? Decision has to be made.
-
Separate indices and internal working data from XML files as a synchronization protocol. In case of 1Password 4 which shares the similar subgoal with us, it uses SQLite for internal data, and files are only stored for synchronization between devices.