Monday, January 21, 2013

2.3.1 Stable

I'm announcing the release of version 2.3.1 of Mundus. This is mostly a bug-fix release, with little improvements and code cleanups.

The full changelog:
  • Fixed a bug with the Settings dialog where a button was incorrectly disabled. 
  • Don't clear the filter when refreshing the modules. (Fixes #1092180) 
  • Fix the algorithm to check if an application is running. 
  • Added several translation templates, updated some old strings. 
  • Clean up the Backup module. 
  • Fix a translation bug in the backups form. Do not show the metadata file in the backup file list.
I'm seeking help to get Mundus translated. For those wanting to help me, all you need is a Launchpad account. Once done, head to the Mundus translations page and get started!
Me, and every Mundus user appreciate your help!

* If your language is not listed let me know so I can add it to the list!

Sunday, December 9, 2012

Going simple with 2.3.0

Most of the time, developers focus at adding features and fixing bugs (Ironic, Huh!). But sometimes, those features don't add up to the final product. While browsing the blogosphere of those talking about Mundus, I noticed some comments about users who could not get it work. They either found it hard to start, or what should have been done automatically, had to be made manually by them.

Although it seemed really simple to me, most of you out there downloading Mundus only want one thing. Most probably, you don't care about keeping your module index up to date, or reading what changed from one module's version to another.

This release focuses on fixing exactly that, I removed the Index Manager completely. Loading the index, and keeping it updated is done automatically under the hood. At the exception of the progress window shown when performing the update, you will not even notice that the modules are updated each time you start the application.
I also removed some setting that where simply pointless, and did not add up to the usage flow.

Another not so important change is a reduced startup time. While profiling Mundus, I noticed that the algorithm was not optimal, module files where being read form the disk several times, and some operations could be completely skipped. As a result, disk usage while reloading the modules (either at startup or online by refreshing the app) was reduced to 1/3 of the original, which also translates to the process being nearly 1.5x faster. There is still a bottleneck, however, when checking if each application is installed by looking for any of the executable files. But this can't be avoided nor optimized.

The last noticeable change is the inclusion of a filter text box in the main window. This way, if the application list is too long, or you just want to quickly find an app, just type the name and the list will be filtered out. If you know regexp, you can use much more powerful patterns to filter apps by their name.

The full changelog:
  • Removed the index manager. Modules are now automatically updated at startup.
  • Optimized startup time by reducing module loading and disk usage.
  • Fixed crash when pgrep has the -c argument disabled. (Fixes #1087189)
  • Allow the user to filter modules by a regexp pattern.
  • Automatic backups are now by default turned on.
  • Updated Spanish translation.

In accordance with the grace period, the module index for version 2.2 will be kept online until Dicember 24.


Monday, December 3, 2012

2.2.0 is out!

Here we go again! News for this version are quite interesting.

First of all, in the previous release, new users had to download ~100 files sequentially. Now, they are downloaded up to 20 in parallel. This means that when rebuilding the module index, you will just have to wait a second or two, not around 30!

Additionally, each module is verified using a hash. So, if a module is corrupted because of a bug in the download code, a hard drive error, or a download error, Mundus will skip it when loading and provide a warning to the user. This sets the ground work to cryptographically validate the index and create a chain of trust. This way, it won't be possible to tamper with the index without the user being warned.

Other news include the new translation to the Spanish language, usage in offline mode, and a lot of other bug fixes.

Ohh! I forgot. You can now browse the index online here! And, as promised, you can also view stats about each module (You can find the Stats link at the bottom of each module page in the link above). That webpage is updated instantly when an updated is pushed, and stats are updated every 24 hours.

More information about this features is available in the documentation (or will be, shortly).

The full changelog:
  • Index modules can now be downloaded in parallel. Rebuilds take seconds!
  • Updated the index structure.
  • Implement a module validation feature. If a module is corrupted, it won't be loaded.
  • Updated a lot of lazy strings.
  • Finished the Spanish translation.
  • Fix usage of the index in offline mode.
  • Fix the "Restore to defaults" button in the Settings form.
  • Big update to the documentation.

Enjoy! And please let me know your comments.

P.S: The PPA packages have a missing dependency, they will work, but icons won't show up correctly. Due to a Lauchpad backlog, new builds will take a few hours to be published. If you are too impatient, just install the gambas3-gb-form-sock package! I'm really sorry about that.

Wednesday, November 21, 2012

2.1.0 is out!

The biggest release so far is out. The most important change: modules are now fetched from an internet server and stored locally. This means that I can push updates and new modules without releasing new versions!

Additionally, I stress-tested this version on a local Virtual Machine, which allowed me to find a lot of bugs, and fix them properly.

Within the course of the next few weeks, I will begin pushing new modules and new (better) revisions of existing ones!

The full Changelog:
  • Modules are now fetched from an online server and stored locally.
  • Fixed executable detection on modules with multiple executables.
  • Fixed a bug preventing the progress form from finishing if canceling was disabled.
  • Mundus is now thread-safe.
  • Lots of bug fixes regarding backups and modules with spaces.

Have fun!

Saturday, November 3, 2012

2.0.0 Takeoff

With 5 months since the last release, this version brings little changes to the user, but an extensive list of improvements under the hood.

Most importantly, the code is much more readable, it uses better programming techniques, and, as a side effect, Mundus is much more stable then ever before.

The biggest change is a complete rewrite of the modules API. With this change, every bit of the code that needed to retrieve some information was greatly simplified. Modules are now stored as structured JSON files, so editing, or loading them at runtime is trivial.

The module editor was moved outside of Mundus into a separate app called mundus-creator. It is now easier to use with a much better interface.

No new modules where introduced in this release, but I promise the next version will bring a very big surprise!

Simplified changelog:
  • Completely rewritten the modules API 
  • Modules are now represented as JSON files 
  • Lot of code refactoring and improvements 
  • Support reporting of cleans metrics 
  • Outdated icons are now detected and automatically updated

Monday, May 7, 2012

Mundus 1.4.0 is here!

Mundus 1.4.0 has arrived! This release mainly focuses at fixing annoying bugs and reducing the executable size. Two big changes where introduced.

First, the app icons where moved online. This means that they don't need to be included on the executable, and that updates can be delivered without an upgrade. Second, a metrics class was introduced, so I can know how users are using Mundus, and what should I improve. The information it uploads is completely anonymous, and can't be used in any way to identify an user. It is optional, and turned off by default. In this release it is only executed at start-up once, so i can test it's functionality.

As "not so important features", a start-up form, only shown when after an upgrade,  now replaces all the warnings that where previously shown when Mundus was Executed. It also allows the user to set some basic settings to start using Mundus. First, it allows the user to clear the cache or rebuild it (i.e. fetch all icons at once) and to enable or disable Software Metrics. Also, Mundus can now detect if an app is running, and stop the cleaning process to avoid damage or unsafe behavior

The full changelog:
  • Added 5 modules 
  • Don't clean if the app is running 
  • Fetch app icons from the internet instead of including them in the executable 
  • Allow the user to delete external modules 
  • Added a metrics module to collect some anonymous data (more info on the docs
  • A start-up form replaced some warning messages and allows the user to change important settings when running new versions (shown only when a new version is run) 
  • Fixed a bug causing backups with wrong file names 
  • Implemented the save as function on the backups form.

Tuesday, May 1, 2012

How app icons moved online

Since the very first release of Mundus, almost every module included an icon that was shown to the user on the main interface, and on the supported applications form. Over time, more and more modules where added, reaching a total of 98 supported apps on the last commit, and 92 images that needed to be distributed. Although the size of each image is insignificant (~10 KB), the total size of them reached 1.2 MB, and they needed to be included on every build. As a result of this change, the size of the Mundus binary was reduced from ~1.7 MB to ~540 KB, almost 1/3 of the original size.

As of today, these images will be hosted  online, and fetched only when needed. A local cache will contain the downloaded images, and on every new version that is executed, or at per-user request, the cache will be cleared.