TextureMind Framework – Work in progress

Version 1 (29/10/2017)

  • Custom set of classes to handle objects and containers (vector, list, map, multimap)
  • Serialization with 4 formats (xml, json, raw and formatted binary) optimized for speed
  • Threads, mutexes, semaphores, atomics
  • Integration with TinyC library to build and execute Just-In time code
  • Custom memory allocation methods to trace leaks and optimize fragmentation
  • Full set of methods to handle streams into files and block of memory

Background

The CJS Framework that I was developing in my spare time now has been changed into TextureMind (TM) Framework. That happened for different kind of reasons. When I created the CJS framework, my first aim was to target multiple languages, using a valid and interchangable way to serialize a full set of classes. That could be useful if you want to program an application in C++ that is meant to run only on pc-desktop (e.g. a server or a map editor) that produces data for applications programmed in C#, Java or Javascript, that are meant to run on mobile devices or web browsers (e.g. clients or videogames). The ambitious purpose was to produce a new brand framework with a full set of functionalities and classes to make it the new standard for computer programming, in general. Well, even if it could be a good idea, it is too ambitious for a single person and, for job reasons, I don't have the time for doing it anymore. I changed what I've done since now to TextureMind Framework, that won't be an open-source project or released but used just by me to produce softwares where interchangability and performance are a problem for the maintainance of the projects. For instance, a simple program like GemFinder could have benefited if I had used this kind of framework to develop it. Even if ported to mobile devices with C#, I could easly port the internal format to save settings and images with the already implemented set of classes for multiple languages. Moreover, during my experience I have understood how heavy the already existing frameworks are in terms of amount of code and external dependencies, so I want to create something lighter that could equally satisfy my expectations and eventually evolve into a set of solutions to facilitate the productions of projects for Computer Vision, 3D engines and videogames.

If you are wondering why I don't start an opensource project, I totally lost my interests. I already know that there are similar solutions (like Google protobuf) and I don't want to complicate my original idea just for the sake of competition. You may start a project with 'A' in your mind and probably you will end up with 'B', that is a good compromise between what you had in your mind and the feasibility of the project. Then, after years of contributions from the opensource community, you may find out that your project has slowly changed to become 'C', or if you want, something so different that you can't even talk about "evolution". In effect, there is another term that I prefer to use instead: "entropy". I know perfectly that you, as the creator of the project, can accept or refuse the contributions of other people, but after years of peer reviews and computer programming, I know for sure that your project will clash to the duty of satisfying any kind of need, from the most complex to the most stupid, to such a point that it will become exactly what you have hated from the beginning and paradoxically what pushed you to create an alternative project: a huge mountain of external dependencies, nightmare branches and oddities of any kind. And this is even the best scenario. The worst is when your project (despite its original beauty) is not considered by anybody and you must continue by yourself to not let it die, with the burden of competition. You may hear discussions like "oh, you are still using that crap continued by just one person? Don't you know that there are already most stable and supported projects, like ... or ... or ...?", and maybe they mention the same kind of crap that you always hated and that everybody loved (oh god, if I hate when it happens). And what about when opensource projects continue to exist only because they are supported by big corporations? You have to maintain the project for years, you have to decide how to satisfy all kind of need, trying at the same time to not break any copyright and to fit all the requirements from now to the end of the days. I'm sorry, but I find it quite depressing. I asked to myself if I want to deal with this kind of situation just to satisfy my idea of computer programming, and the answer was "NO". My idea of computer programming, for individual projects, will be satisfied just programming for myself, and that's the way it should be for everybody. Maybe in the future my project will become something incredible that I will release it, in some way, but for now I want to leave the competition to those who have the time for doing it, but in my spare time, I want to simply enjoy the plasure of computer programming without any kind of restriction. This is the reason why I abandoned the old ambitious project to start the new one. In the future I will release some demos to show the features of this framework, I want to produce something really beautiful to see.