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/09 15:43:41 UTC

[C# Port Subproject]

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)



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

Posted by Michel Kern <ec...@gmail.com>.
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)
>>
>>
>>


Re: [C# Port Subproject]

Posted by Kasper Sørensen <i....@gmail.com>.
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)
>
>
>