Welcome!

MSS Code Factory is hosted for downloads by SourceForge.net.

The GitHub.com source repositories are all located at https://github.com/msobkow.

I find the combination a handy way of getting source and builds out the door.

The 2.9 and 2.10 projects are now all under an Apache V2 license. Most of the code I rely on for my projects is under an Apache license; the same has been true of most work I did for employers or customers over the years. Therefore I have decided to abandon my GPL ideals and release the code under a practical license that encourages greater reuse.

The 2.9 documentation that gets delivered with the main project is complete.

The Latest Builds and Releases

Latest internal code: MSS Code Factory 2.8.14152 Refresh to catch latest scripts
Latest production code: MSS Code Factory CFAll 2.9.14156 All of the C++14 WLS projects now build and link
Latest development code: MSS Code Factory CFAll 2.10.14154 WSL build scripts created and tested

2018-02-08 MSS Code Factory Programmer's Notes

I may no longer have a Linux system, but Windows Services for Linux with Ubuntu 17.04 is coming along nicely. I've successfully built 2.8 under the code stack, suppressing the deprecated code warnings as I've no interest in carrying the 2.8 code base any further than it has to go.

I've been busy seeing what I can do with the combination of Windows 10 and WSL Ubuntu development environments. (I'll just refer to the Ubuntu environment as "WSL" for the future.)

I installed the JDK 9's for both environments -- Oracle JDK 9 for Windows and openjdk-9-jdk-headless for WSL.

Git and ant were installed for both environments. Ant for WSL recommends a whole bunch of extra stuff to go with it, and I installed pretty much all of the recommendations.

There were some extra Windows tools to install to support GPG signing and SSL encryption. Both environments have been configured, though I can't get GPG encryption and SSL encryption to share keys; they use different armored formats.

You'll do a lot of googling for things like "Windows SSL git config" and "Windows Kleopatra Git config", but I'm not going to document the details -- there is plenty of fine documentation out there that I just followed to get things up and running.

I pruned the JavaFX code from 2.8 and 2.9 so they can both be built with openjdk-9-jdk-headless. That means no more CFBam editor. That will only exist for the 2.10 code base.

The build environments used for the projects are as follows:

I have a collection of environment scripts in the home-template directory of the download server. There are initialization files for the WSL and Windows home directories there. Don't forget to replace the "dot-" part of the file names with ".".

I also have a copy of the jars I depend on for Java builds in the apache.org directory of the download server. Most of these are the versions from Ubuntu 17.04 and the relevant apache.org websites, refreshed only this past fall.

I expect MSSCFHOME to be set to "d:\msscodefactory" under Windows. In theory you could point it somewhere else, but I kind of assume you're on D:. I should probably add an MSSCFDRIVE environment variable that specifies the drive letter and then an MSSCFDIR that is MSSCFDIR without the drive letter. MSSCFHOME would then be set to match. If I then specify "%MSSCFDRIVE%:" in my scripts instead of "d:", I should be able to make the installation location-agnostic, though I do assume exactly one installation per machine.

Correspondingly, MSSCFHOME needs to be set to the /mnt/drive/msscodefactory location matching the Windows directory in your .profile. You'll find the pattern strings "Your Name" and "your@email.address" littering the template files. Edit them accordingly. You'll also need to edit the SSL and GPG key ids according to your keys.

I need to document the system environment variables and PATH elements I expect you to set for the Windows 10 environment. I rely on those in my scripts.

2018-02-xx Status of 2.10 C++14 Projects

On 2017-05-31, I checked the MSS Code Factory 2.9 changes that I would need to begin my C++14 manufacturing efforts. Since then I've created nearly 16,000,000 lines of clean compiling C++14 code. It doesn't run yet, and I've yet to begin my debugging efforts, but at least it all compiles and linkes now. Even CFUniverse -- the monolithic collection of all of the 2.10 projects except for CFDbTest.

During the nine months since (call it 270 days -- 9 * 30), I've produced 25,964 C++14 source files and 25,920,142 lines of C++14 code, all of which clean compiles and links into a RAM loader for the 2.10 projects. That works out to 96,000 lines of code per day, if I had actually worked on it more than a few days a month until this month. So say 100 work days. That is 259,201 lines of code per day actually worked.

My goal is to have a global server image on a system, such that one huge multi-threaded Apache server on a an amd64 Linux box provides the services to any of the integrated project's Java clients. I needed to change to C++14 to escape the limitations of Java's 32-bit bytecode addressing for that CFUniverse 2.10 server.

In keeping with that goal, I only ship a zip file for CFUniverse, which includes all of the 2.10 project binaries (even CFDbTest 2.10, though that isn't really part of CFUniverse itself.) I've had to scrap my Debian packaging efforts and go with source builds due to WSL not supporting fakeroot.

Currently there are 4 layers of C++14 code produced by the system. The foundation Obj layer, the XML SAX parser, the RAM memory database support, and a RAM loader so I can start running the CFDbTest 2.10 test data through the system to debug the behaviour of the RAM database. The builds must be performed in that order for each 2.10 C++14 project: Obj, Xml, Ram, and RamLoader. Xml imports Obj. Ram imports Obj and Xml. RamLoader imports Obj, Xml, and Ram and links them into an executable.

The file and line counts below do not include the mysql code that you'll find in the project source archives, as it isn't anywhere near ready to compile yet. These counts only include the code that I've compiled and linked.

net-sourceforge-MSSCodeFactory-CFSecurity-2-10 CPlus files 902 lines 373436
net-sourceforge-MSSCodeFactory-CFInternet-2-10 CPlus files 880 lines 414728
net-sourceforge-MSSCodeFactory-CFCrm-2-10 CPlus files 1113 lines 482581
net-sourceforge-MSSCodeFactory-CFDbTest-2-10 CPlus files 4045 lines 2974366
net-sourceforge-MSSCodeFactory-CFAccounting-2-10 CPlus files 1574 lines 996553
net-sourceforge-MSSCodeFactory-CFAsterisk-2-10 CPlus files 1220 lines 545337
net-sourceforge-MSSCodeFactory-CFEng-2-10 CPlus files 2202 lines 2063433
net-sourceforge-MSSCodeFactory-MarkII-2-10 CPlus files 2052 lines 1936441
net-sourceforge-MSSCodeFactory-CFFreeSwitch-2-10 CPlus files 1684 lines 891037
net-sourceforge-MSSCodeFactory-CFBam-2-10 CPlus files 5338 lines 5620691
net-sourceforge-MSSCodeFactory-CFUniverse-2-10 CPlus files 4954 lines 9621539
TOTAL files 25964 lines 25920142

On an AMD Ryzen 5 1500X 16GB Windows 10 system running WSL Ubuntu 64-bit, the following compile times went into the final build. Note that these are real times, not user or system times. They only include the make time, not the autotools or install times.

Project Obj Xml Ram Loader
CFSecurity 40m26s 2m39s 4m11s 0m05s
CFInternet 42m49s 4m28s 6m16s 0m07s
CFCrm 39m58s 3m59s 5m42s 0m06s
CFDbTest 192m48s 17m15s 48m45s 0m12s
CFAccounting 87m08s 7m25s 13m34s 0m10s
CFAsterisk 41m36s 5m25s 7m44s 0m07s
CFEng 127m29s 11m40s 35m37s 0m09s
MarkII 137m39s 14m53s 43m49s 0m12s
CFFreeswitch 63m00s 6m40s 9m48s 0m09s
CFBam 336m56s 27m44s 86m12s 0m17s
CFUniverse 1292m06s 105m55s