You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@metamodel.apache.org by Michel Kern <ec...@gmail.com> on 2017/08/26 16:58:38 UTC

[C# Port Subproject] 0.2.0 released and answers to feedback

Hello Dev team

I've just released v 0.2.0 of a 'port to Csharp' prototype, here it is:
https://github.com/Echopraxium/apache_metamodel_dotnet_core_bud

Now the codebase is big enough (i.e. the 'engine' is ready) which allows 
to run the unit
tests (via 'MetaModel-cli-test' console app) but still a lot of 
validation / debug
pending (e.g. in JsonDataContextTest.testDocumentsOnEveryLineFile() only 
the first
Assert succeeds).  Previously I sais that I applied a "brute force" and 
"bottom up" approach. Now I
would say that it's more the approach seems more like porting a legacy 
codebase.

I agree with Kasper that a rewrite with CSharp strengths and weaknesses 
makes more
sense than a "1 to 1 Force Fit". Beyond that each language brings its 
own set of "design biases"
with the entropy/negentropy side effect of its idioms. Then my feeling 
is that this prototype may
hightlight the parts where such 'bias' occured.

I just hope that this prototype may raise enough motivation to start a 
"dotnet" child project
within Apache MetaModel.

Best Regards
Michel Kern (echopraxium)


On 09-08-17 18:36, Kasper Sørensen wrote:
> Hi Michel,
>
> Really appreciate all the hard work you're putting into this! And the
> metrics look very good, but ...
>
> I think what I really need to see as "proof of viability" for this project
> is that the guts of MetaModel is converted. Here I'm thinking about the
> essential "engine" classes such as QueryPostprocessDataContext and
> MetaModelHelper. Without those, we just have an empty shell around an
> engine that's not implemented. So probably my advise would be to worry less
> about a complete conversion. I think C# has a ton of language features and
> libraries that we'd want to take advantage of when there is a more viable
> project. So converting MM 1-to-1 doesn't even seem like a really good idea.
> Rather we should convert the engine parts and then build up something
> native to C# around it. Does that make sense? Once we have that, there's
> something "working" that anyone can contribute to too. At that point I
> think it would be the time to have a discussion and vote on making it a
> subproject. I hope this does not discourage you at all. As said, I really
> think you're putting some good effort into this - I just want to bring your
> focus to the engine side instead of all the rudimentary features that might
> not be needed in the same way in .NET.
>
> Best regards,
> Kasper
>
>
>
> 2017-08-09 8:43 GMT-07:00 Michel Kern <ec...@gmail.com>:
>
>> Hello Core Team
>>
>> I've just published update 0.0.1 of the C# port prototype on Github (
>> https://github.com/Echopraxium/apache_metamodel_dotnet_core_bud)
>>
>> It would be very nice if the core team could allocate some time to review
>> the code and give a feedback regarding the viability of this prototype as a
>> candidate subproject of Apache MetaModel. Please find below some metrics
>> which give an idea of the target codebase vs original codebase.
>>
>> * Metrics :
>> - 120 java source files ported in C#
>>    - 29% of the 'core' package of Apache MetaModel (416 java source files)
>>    - 16% of the full code base (748 java source files, including
>> implementation of connectors like 'Jdbc', 'Json', etc...)
>> - 43 'helper' classes (to emulate java classes without a .Net equivalence,
>> these classes are prefixed by 'N', e.g. (e.g. Java's 'Number' class
>> converted to 'NNumber')).
>>
>> Best Regards
>> Michel Kern (echopraxium)
>>
>>
>>