Topic: Maratis Experamental Branch suggestions
I noticed in the experimental branch we have
tinycthread
tinyutf8
tinyxml
windirent
And that Maratis compiles with the Boost fix for Bullet.
My suggestion is to use the Poco C++ library's. Its under the Boost license meets all of the requirements above. Bullet will use Poco as a replacement to Boost threads.
This is what I use with my more advanced projects that use Ogre. And as Maratis progresses we are going to want 99% of what is listed below.
Basic Edition
No external dependencies — start developing immediately
Complete Edition
Requires OpenSSL, MySQL Client and ODBC
Note: there is also these build options ...
--poquito
Omit a few features for smaller codesize when linking
statically for embedded targets.
--unbundled
Use system-provided zlib, pcre, expat and sqlite instead of
bundled ones.
--static
Build static libraries. Overrides default mode, which
depends upon target. Can be specified together
with --shared to build both.
--shared
Build shared libraries. Overrides default mode, which
depends upon target. Can be specified together
with --static to build both.
Supports Platforms and Compilers
AIX Darwin64-gcc Linux-stlport
Android Darwin-clang MinGW
Angstrom Darwin-clang-libc++ MinGW-CrossEnv
ARM-Linux Darwin-gcc NIOS2-Linux
BeagleBoard DigiEL OSF1
CEGCCARM ELDK PPC-Linux
CygLinux FreeBSD QNX
CYGWIN GCCEMBEDLINUX SH-Linux
Darwin HP-UX SSV-LINUX
Darwin32 iPhone SunOS
Darwin32-clang iPhone-clang SunOS-GCC
Darwin32-clang-libc++ iPhone-clang-libc++ SunOS-stdcxx-x86_64
Darwin32-gcc iPhoneSimulator SunOS-SunForte
Darwin64 iPhoneSimulator-clang SunOS-SunStudio
Darwin64-clang iPhoneSimulator-clang-libc++ SunOS-SunStudio11
Darwin64-clang-libc++ Linux
Core Features
1. Any and DynamicAny classes for dynamic typing
2. cache framework
3. date and time
4. events (signal/slot mechanism) and notifications framework
5. regular expressions (based on PCRE)
6. shared libraries and class loading
7. smart pointers and memory management (buffer, pool)
8. string formatting and string utilities
9. tuples
Compression
1. stream classes for zlib-based compression/decompression
2. ZIP file creation and extraction
Cryptography
1. cryptographic hashes
2. X509 certificate handling
3. symmetric and RSA ciphers
4. streams for encryption and decryption
5. based on OpenSSL
Database
1. unified access to different SQL databases (SQLite, MySQL, ODBC)
2. automatic data type mappings
3. collections support (std::vector, std::set, std::map, etc.)
4. record sets and tuples
5. session pooling
Filesystem
1. platform-independent path construction and manipulation
2. directory listing
3. globbing
4. directory change notifications
Logging
1. extensible logging framework with pluggable log channels and message formatters
2. console logging, log files, syslog, remote syslog, Windows event log service file attributes
Multithreading
1. thread and thread synchronization classes
2. thread pool
3. work queues
4. active objects and activities
5. task management
6. timers
Network
1. stream, datagram, multicast, server and raw sockets
2. TCP Server framework (multithreaded)
3. reactor server framework
4. HTTP(S) client and server framework
5. HTTP Basic and Digest authentication
6. C++ server page compiler for embedding C++ code into HTML pages
7. FTP client
8. SMTP and POP3 client for sending and receiving email
9. URI and UUID handling
10. HTML forms processing
11. MIME multipart messages
12. SSL/TLS support based on OpenSSL
13. WebSocket (RFC 6455) client and server
Processes and IPC
1. launching and stopping processes
2. process synchronization
3. shared memory
Streams
1. Base64 and HexBinary encoding/decoding
2. compression (zlib)
3. line ending conversion
4. memory streams
5. text encoding conversions
6. URI stream opener
Text Encodings
1. UTF-8 and Unicode handling
2. text encodings and conversions
3. character classifications
Utility Classes
1. frameworks for command-line and server applications
2. command-line options handling
3. configuration file parsing
4. unix daemons and windows services
XML
1. fast XML parsing based on Expat
2. SAX2 (Simple API for XML, version 2) parser
3. DOM (Document Object Model, Level 1-3) parser
4. XML writer
My Toolkit consist of ...
1. Premake4 (Build System)
2. Fossil DVCS (Self Contained Version Control System) It comes with a web interface, supports distributed bug tracking, distributed wiki, and a distributed blog mechanism all in a single integrated package. And was designed and developed by the creator of Sqlite. Search the web and you will see it is as good if not better than Git or Mercurial. Very easy to learn and use.
3. xDelta (Delta Patches) <-- No more repackaging the entire Maratis project, just upload the binary deltas and the enduser just patches there current maratis binary. Works on library's also. This is how most linux distros ship there updates. My last update was 250 patches and the download size was 12mb.
I mention these things because Maratis's single largest problem, is its build system and dependence. Building the thirdparty packages the way it does now is a massive head ach and instead of managing the build system for just Maratis code we have to do it for the third-part packages also.
I am one of the best C++ Qt developers I have managed to create Ogre3D, Irrlicht, SFML2, Horde3D, Panda3D widgets because its as simple as Build, Install (Ogre3D .... Panda3D), Include the Headers Location if in a non standard location set Linker Flags in my project and build..
Anytime I try this with Maratis it blows up in my face. The only way I can even hack on Maratis is to edit what code is already in the archive and then re-run scons.
I dont know of a single oss project that even uses scons anymore. Anything would be better, CMake, Premake, plane old Makefiles!.
Help me solve these problems and I will become a fulltime active developer I promise.
I can provide everything you have seen me do so far (Art and Content/Tutorials)
1. A new Qt based Editor (Gui would even be scriptable with Lua)
2. Particle Effects Editor (If I can get Spark2 in Maratis then a new Particle Effects Engine)
3. Lua Scripting would use Luajit instead of plane Lua and we could directly link to any C library
4. Online Asset Browser
5. Shader Editor.
6. C++ and Lua code editor based on QScintilla, Code Folding, Syntax Highlighting, Code Completion, ...
7. Complete Amazon Web Service and Google support in the editor and in MSDK
8. AES 256 Encrypted Sqlite Databases.
9. Rendering Video to Textures
10. Motion tracking (The camera moves with your head)
This is just of the top of my head.
As Jerry Mcquire(Movie) would put it .... Help Me .... Help You
Last edited by zester (2013-10-06 08:29:43)