Saturday, March 31, 2012

Announcing Mundus 1.2.0 Stable

No new modules were introduced, but a lot of new and interesting features where added in this release.

As explained in the previous post, a module creator was added, but it was also improved. The user interface is much more friendly.The loading and saving of modules is more intuitive and less error prone. Also, if you want to see your module included on Mundus, a menu option will automatically upload it to pastebin and open a browser window with a new bug report ready to be submitted.

Another interesting feature is the support for external modules. This are JSON files with an array of information that are loaded at start-up. This gives Mundus an incredible flexibility and customization.
* Due to security reasons, only directories are allowed, no callbacks can be defined and/or executed

Finally, the user interface was greatly improved, and seems more intuitive for inexperienced users.

The full changelog:
  • Updated some modules
  • Added some messages to provide the user better information about the process being executed
  • Added a module creation wizard
  • Let the user upload the created module to pastebin and create a bug report to propose it's inclusion.
  • Added a documentation folder that builds at
  • Added support for external modules
  • Lots of fixes and code cleanup

Wednesday, March 28, 2012

I present you, the Module Creator

For the last few days, I've been working on a way to simplify the process of creating a new module. Previously, one needed to install the Gambas3 IDE, download Mundus's source code, copy the template into a new class and fill it with the module information. Too much for a normal user that wants to create a module for a small app.

This is how the "Mundus Module Creator" emerged. Once opened, the user just needs to type the basic information and that is it (although this module will have zero functionality).

Mundus Module Creator

Now, it's time to add the submodules.Just as before, there is no way to make this process easier. Open  the submodules configuration window, fill it in, and hit Save.

Submodules Edition

Okey, we have now configured the basic information and some submodules. Let's see the result:

Mundus Module Creator
Once you are done, hit Save and Mundus will take care of the rest.

Easy, isn't it? If you want to take a look at the step-by-step guide, head to

Note: This feature will be shortly available on the Mundus Beta PPA. If you want to test it, you may add this PPA to your system (if using Ubuntu), install mundus-bzr, if you are on ArchLinux, or checkout the code from the Bazaar repository

Saturday, March 24, 2012

1.1.3 Stable

This release fixes a lot of bugs present on the last version. It also disables and removes the /etc cleaning feature, as it required a lot of maintenance, and, more important, it could cause a lot of problems. As a replacement, the callbacks feature must be used. It may indirectly call the cleaner, but custom code for each module allows more control and checks.

The full changelog:
  • Etc cleaning dropped. Only callbacks are allowed.
  • Fixed a crash when executing a backup. 
  • Fixed a bug causing a restore to fail if the backup was made with a different locale.
  • Cleaned some bugs introduced with the new Modules system.
  • Update the cleaning algorithm.

Thursday, March 22, 2012

1.1.0 Stable

This release brings small changes to the user, but a lot of changes under-the-hood. The modules system was rewritten to use a parent-child set of classes. This brings a lot of stability and performance improvements.Also, a callbacks system was implemented, so a submodule is not only limited to a directory, but to a set of instructions, or a shell command. Finally, some new settings where implemented, this gives the user a wider control of the application.

Complete changelog:
* Rewritten modules system as static classes with a parent Module class.
* Improved loading time, much cleaner code and improved stability.
* Updated the makefile
* Allow modules to have callbacks
* Updated some modules
- Allow the user to fold a treeview when pressing the space key
- Add a submodule count next to it's name
- Let the user choose if they want to start Mundus with submodules expanded or collapsed
- Let the user enable or disable notifications
- Fixed a bug that made all modules show as "installed"
- Fixed a bug on the Cleaning algorithm
- Updated the dpkg module with apt support
- Allow the user to clear backups made with previous versions
- Allow the user lo load a report from a file

Monday, March 12, 2012

Introducing Callbacks

There are cases when an application can't be cleaned by just erasing a folder. Or when "cleaning" the application involves doing other things than just executing the cleaner.

An example scenario is cleaning an app that, instead of using file databases (like sqlite) that can be cleaned using the standard way, they use a mysql database, which involves cleaning THAT database and not every database on the server.

To fulfill this rare necessity, I have added what can be called Callbacks. They are defined just as sub-modules (directories, in other words), but point to a function on the same class.
Public Callbacks As Collection = ["Callback 1": "TestFunc1"]
And defining TestFunc1 as follows
Public Function TestFunc1() As Boolean
  Print "Callback Executed"
 Although no module is using it (yet), this adds a lot more possibilities when creating or updating existing ones.

Sunday, March 11, 2012

1.0.1 Bugfix release

A small bug slipped my hand that didn't allow backups made as non-root to be loaded, and crashed Mundus. No other changes where introduced.

Saturday, March 10, 2012

1.0.0 Stable

After months of work, the first stable release is ready. Compared to the last version, changes are small: 3 modules where added, and the Makefile was slightly updated. A Stable PPA was also created, to let "production" users use a tested version.

Please report any bugs you encounter. Thanks for using Mundus!!

Sunday, March 4, 2012

0.0.8 Released

Version 0.0.8 is now released. /etc cleaner is now considered at beta. The changes are;
  • Stabilized Mundus when running as root
  • Basic implementation of the notifications system
  • Added a maintenance tab on the settings form to let the user clean Mundus backups and reports
  • Improved the cleaner algorithm
  • Made some minor changes to the GUI
  • Added some settings to let the user customize Mundus a little bit more
  • Rewrote the reports algorithm, they are now saved using json structure
  • Backups are saved with a metadata file to save important data and avoid compatibility issues
  • Fixed some bugs when executing tar
  • Reduced the memory footprint when using Mundus. Clean some variables when not used
  • Added 5 new modules
  • Fixed the makefile. Now it's as easy as make, make install

Friday, March 2, 2012

Backups metadata, how to know which version made a backup

To avoid compatibility issues when opening a backup file created with a different version, I took the idea of Linux Package Managers of using metadata files and implemented it on Mundus. Now, backup files contain a .mundus_metadata file on it's root folder. The idea behind this is to, where possible, maintain backwards compatibility. And  in the case the backup is too old, or in this new version a feature that broke the API was introduced, don't let the user to extract it and warn him that to backup again. At the moment of this post, the feature only exist on the Bazaar repository, it will be introduced on the next release for testing.

Notice: If you are using Mundus from the Bazaar repository (trunk) or from the Mundus Daily Builds PPA, please note that a change may be introduced without a version change, thus leaving a backup made with a previous commit from the same version "unstable" but unrecognizable. Be careful!