Porting Ash to C# – Initial steps

! Warning: this post hasn't been updated in over three years and so may contain out of date information.

At October’s Try { Harder } conference this year, Richard Lord – author of the entity framework, Ash – gave a great talk on entity frameworks. His talk confirmed something I’d been thinking recently, namely that the use of entity frameworks does not need to be limited to games. I’d recently worked on a domain-specific file crawler and processing application that adopted a timed loop to check for new files, progress in processing those files and updating the user on progress. Even this application would have benefited from using an entity system framework to control the interaction of its various parts. So after a quick chat with Richard to check the practicalities of my ideas, I decided to port Ash to C#.

Now I’m one of those people that likes to work in private on ideas, polish them and then publish when done, or nearly done. Many have told me I shouldn’t do this and should publish early to get feedback early. I don’t like doing that though, even though I accept those voices speak words of wisdom. So I started down my usual path of porting it across, tinkering, etc and would likely have carried on like that for a few more weeks. But at the weekend Jos Yule contacted Richard, then me, to say he too was working on a port and perhaps we should share our efforts. As a result of that, I spent a couple of evenings getting the code to at least compile and some unit tests to work and then today I’ve pushed it to github.

I have to confess I’m not completely comfortable with doing this and feel like I’m “washing my dirty underwear in public”. The code is messy, incomplete and untested after all, and I feel publishing such code looks bad. Too many people tell me I’m wrong over this view though, so maybe by publishing, I’ll start to cure my habit of coding in secret.