Hi Dominik, thanks a lot.
Let's go step by step.
1) Regarding .NET framework compatibility: I have given up on the System.Linq sugar all over, hence making it compile with .NET2. I have also introduced a simplistic JsonSerializer which will be used by default in place of the one provided with the .NET35 framework (JsonBuiltinSerializer). The compilation decisions are driven by the conditional FRAMEWORK_3_5_OR_ABOVE as in log4net trunk. Would that suffice to deliver backwards compatibility? Committed in revision 3: http://sourceforge.net/p/log4net-json/code/3/
I have yet to adjust for compact framework and client profile.
2) Formatting: Please review the code if it's worthy and point out any deficits. I'm using the default VS indentation style which makes tabs into 4 spaces. Does that need to change? What's the take on UTF8 BOM?
3) Coding style: I've diverted from the standard property get/set encapsulating m_field where I found it fit and used default get/set without a field. Is it a policy or just an old habit to have a field for each property?
4) Comments: I've followed the commenting style as best as I could.
5) License: I've followed the licensing style as best as I could. It's the Apache license v2.
6) Thread safety: I could use some advice here.
7) Modularity and feature flexibility: I think it's delivered (since it's Layouts, PatternConverters and ObjectRenderrers) and beyond as the classes provide for future extensions and dependency injection.
8) Speediness: I hope, need to do some benchmarking...
9) Reliability and testing: I plan to introduce unit tests for the code's main features, but it's working well for my use cases.
10) Patch: That will be simple as I'm not touching the original code. I'm actually compiling against a released log4net 1.2.13 dll. It should be a matter of dropping the files in place and including them in the project.
Many thanks for your help and guidance.
Kind regards, Rob