The project is marked as abandoned because:
- The name CJS Framework was already used in the context of other frameworks, I don't like it anymore and it doesn't mirror the current purpose of the framework
- I don't have time and resources to achieve the ambitious requirements that I decided in the past (supporting interchangable classes between four languages and make it a standard is too expensive. I cannot open an open source project because it is not convenient for my current job, too much implications)
- The framework evolved into different directions. I changed the name to TM Framework (TextureMind Framework) that is a useful collection of classes to develop my own programs in C++ or C# when the projects will be so complicated to require it. Being a framework slave in never a good thing for the developers, I saw developers becoming incapable of doing the simplest things in C starting from scratch, when they were anchored on Qt, Boost, Unity, Unreal Engine 4 or their own frameworks. I saw also good programmers becoming incapable of doing good plain programming (not even a pacman game) without projecting frameworks that would require years to be finished, so I don't want to feed this trend.
1 Basic Principles of the implementation
The basic principle is to support features on languages avoiding the reinvention of the wheel if it's not necessary. For example, on c++ there will be a basic framework that will handle strings and objects, meanwhile on c# that part is skipped because it is already implemented on the native language. The most important thing is to have a set of classes that will facilitate the exchange of data. This data could be formatted into xml/json to be readable or modifiable by human beings, or binary like google protofub to be interchangable or raw to be light and optimized in terms of bandwidth at the expense of interchangeability. For example, immagine to serialize million of opengl calls from a client to a server, you cannot do it in xml, json and neither in protobuf also if it's a binary format, the best way for doing it is in raw format. But also if you have to handle a simple raw format, a framework is still necessary to handle 'obscure' stuff like the endiannes, multithreading, synchronization issues or the queue. If you decide to reprogram everything everytime you need it, you risk to injure your mental wellness with never ending session of debugging.
For these and other reasons, I decided to program a crossplatform multitarget language framework from scratch. It's not an easy task to do, but it's useful for my personal interest and maybe a great starting point for the birth of a new language. Anyway you must not think about it like the umpteenth framework on the market but much more like a programming phylosophy: make it easy, make it portable, make it readable anywhere. After 20 years of programming experience, i didn't find anything satisfactory from this point of view. I'm not trying to make the difference, to make viewers or to take attention, i'm finding the best way to code a project without GB of already existing frameworks with tons of redundant code. I really hope to succeed this time.
1.2 The minimal framework for c++
At first glance I was convinced that Poco Foundation libraries were the right choise to guarantee a minimal framework for the c++ base of the cjs framework. Studying the poco foundation project and taking a look at its internal architecture, i found it too broad (the full compilation of the library may take a gigabyte!). Moreover, the idea to have an heavy dependency to include into the framework does not thrill me a lot. The other alternatives were boost, qt, apache, but they were too heavy to be a part of a minimal and lightweight part of the framework. The final decision was the hardest one: code everything from scratch, without external dependencies. Also if this decision could be painful at a first time, in my opinion it is the best to avoid gigabytes of external dependencies and huge executable files, if the project is programmed in c++. Thanks to this important decision, the c++ part of the cjs framework will be lightweight, easy to build and transport. Anyway, if you are looking for advanced features, you can include poco foundation, qt or boost though.
The c++ framework is based on standard template library, so part of the classes (like strings, vectors, lists, maps) will be implemented starting from it. I decided to not use C++0x, C++11 or C++13 because it could restrict the range of portability of the framework, the readability of the code, the uselessness of the context and finally because I really don't like it. So old classic C++ and that's it, you don't need anything else.
Copyright @ 2015 - All right reserved