2. Introduction

I decided to write this handbook to help all mtMintKit users get the most out of the library. Like all software, mtMintKit is a tool, and in order to use it efficiently you will need to study what it does, and how it works. If you wish to understand some of the design decisions I have taken, you may be interested to read about why I created mtMintKit.

2.1 Project Genesis and Design Goals

On the 15th March 2008 I started mtMintKit. My goal was to create a minimal C language GUI widget toolkit for SDL which would contain the most commonly used widgets and functions. Complex or specialised widgets would be developed inside the client application or shared between programs via a separate C library.

The purpose of this design is to keep the toolkit and any custom widget libraries modular. The value of this approach compared to a monolithic toolkit is that features are bolted onto the final application program as required rather than being imposed when they aren't needed. This makes the final application smaller and easier to maintain.

2.2 The Mint Experience

The visual design of Mint is minimal and unassuming, so I have deliberately avoided implementing things like themes and theme engine support. If an application requires these features then it is the responsibility of the the application developer to create them in the form of custom widgets.

A Mint program will always look and behave identically whatever system or system preferences are being used. This contrasts with native system toolkits which change the look and feel of a program according to rules such as themes. Mint is an attempt to go back to basics and allow the developer to decide what the program should look and behave like rather than the system toolkit designer.

2.3 What Mint Isn't

Mint is not meant to be a system toolkit, it is an application toolkit. The purpose of a system toolkit (such as GTK+, which is a system toolkit for GNOME) is to provide solutions to as many GUI problems as possible across the spectrum of all applications. Mint only provides the most commonly used widgets, and assumes that the application developer will add his own customized elements. This table illustrates the size difference between these types of toolkits:

Toolkit Size of compiled library, headers, and documentation
mtMintKit 0.8 270K
GTK+1.2 (including glib) 4,960K
GTK+2.8 (including glib2, atk, pango) 44,270K

Mint isn't a corporate effort (it is a one man project). It doesn't attempt to follow the latest fashions or trends (it is focussed on being a tool to solve fundamental problems), its not a toy to play with, and its not designed to pander to transient fads.

2.4 License Philosophy

An important decision I have taken with mtMintKit is to release it as free software using the GNU General Public License. This gives all mtMintKit users various freedoms which are beneficial to both them and myself. If you are not aware of these freedoms and the work of the GNU project, I would strongly encourage you to read about them here: http://www.gnu.org/.

I deliberately did not use the LGPL or any other 'loose' license as it would not protect the project from being exploited by those who do not respect free software or its practitioners.

SourceForge.net Logo