Friday, April 22, 2011

Time to kill DILE?

First of all, please take a look at this post:
ILSpy Debugger Preview

I think ILSpy is one of the most promising free alternatives of Reflector. I'm already using and like it. However, as the post above shows it also supports debugging... which makes DILE quite useless, to be honest. Of course, it's not as feature rich as DILE yet but I'm quite sure the #develop team will soon match DILE's capabilities since they just have to integrate the existing debugger engine of #develop into ILSpy and they are done. And they have even managed to tie their debugger and decompiler together which means that ILSpy is able to debug the decompiled C# code, not just the IL code. Which is a really amazing feature. No doubt, soon it'll be a lot more useful tool than DILE.

Which makes me wonder whether it's worth continuing DILE. I started this project more than 6 years ago and it always surprised me that during all these years nobody created any similar product (or at least I don't know of any). For a while it seemed like Microsoft's mdbg might be a similar tool but lately it seems to be neglected.

Anyway, I've spent lots of nights on developing DILE. Lately I could spend less time on it though as before. I have a full-time job, a wife and a 2.5 years old son which should explain this. For the last 2 years I stayed awake until 4 am almost every Friday and Saturday just to do my usual stuff (reading blogs etc.) and work on DILE. I'm also writing this post at 3 am... So, I have really sacrificed a lot for the DILE project. Please don't misunderstand me though, I don't regret it at all. I would say it was well worth it as I learnt a lot along the way and it even helped me to find better jobs (it looks good in my CV :-)).

So this is the current situation. I think I have a couple of choices:
1. Keep working on DILE and make it an alternative of ILSpy
I think it's safe to say that right now DILE is a better debugger than ILSpy. However, there is whole team behind ILSpy and I definitely can't compete with them alone. Oh, and I'm sorry but actually I do want to work on DILE alone. Simply because I want to know all its parts to learn a little bit about everything. So, once ILSpy has all the usual debugger features I simply can't see why anyone would choose DILE. Maybe I could start to work on the assembler part like I have been planning for a long time and that would make DILE a unique tool once again but I'm sure it wouldn't be such a big trouble for the #develop team to do the same. So, I'm really not sure whether it's worth it.

2. Rewrite DILE and ignore ILSpy
Seriously, I think the code of DILE is just awful. I'm ashamed of it. I've been dreaming of rewriting it for ages but never really dared to do it because it would take probably a year or more to do so especially at my current pace. But now that ILSpy appeared, I don't have much to lose. I could rewrite DILE from scratch, create a proper disassembler API, clean-up all the debugging code, maybe create a nice plug-in system and so on. It would be fun. At the end I still wouldn't be able to compete ILSpy but at least I would have some fun.

3. Just give it up
Maybe I should do this. And spend my nights in the bed, not in front of the computer.

I really don't know which option I should choose...

Anyway, even before I read about the debugger feature of ILSpy I was planning to write a little tutorial for DILE and I will really do that in the next couple of weeks. Meanwhile I'll try to decide what to do with DILE.

Soon it's time to go to sleep. It's almost 4 am...

Labels: ,


Anonymous Anonymous said...

4. Join them. Contribute your effort to ILSpy.

Saturday, April 23, 2011 at 7:05:00 PM GMT+2  
Blogger Zsozso said...

David, is that you? :-)

No doubt, it's an option as well. However, I don't think I could add too much value to ILSpy in a few hours per week. Not to mention that joining them would defeat one of the most important reasons why I started DILE: learning about all aspects of disassemblers, debuggers and compilers.

Anyway, thanks for the suggestion. I'll consider this option as well. :-)

Saturday, April 23, 2011 at 7:38:00 PM GMT+2  
Anonymous Jason Haley said...

I wouldn't use the phrase "Give up" but if I were you I would probably move on to something different. You've learned the lessons you wanted with DILE and helped a lot of people ... now what else do you want to do? If nothing comes to mind - that means you need to take some time away from it to clear your head and get the creative juices going again instead of the incremental improvement drive of an existin project ... or that is my opinion anyways.

Sunday, April 24, 2011 at 4:09:00 AM GMT+2  
Blogger Zsozso said...

You're right, Jason, maybe I should move on. Although I still love playing around with such "low level" stuff. Maybe I should work on a new programming language or something. :-)

Anyway, I'll think about it. But I do want to have my pet project otherwise I'll waste the little spare time that I have on playing MMORPGs...

P.S.: And thanks a lot for all the links to my blog over the years. I'm sure you had a great part in making DILE popular. :-)

Sunday, April 24, 2011 at 4:10:00 PM GMT+2  
Blogger David Srbecky said...

No, but I was thinking it as well :-) A few hours per week is more than enough to make good contribution. I think that working in a team can be much more productive way of learning than trying to figure it out on your own. I have certainly learned more from our disscussion with Daniel then I would be able on my own. I do not have enough time to implement everything on my own (for example, the decompilation of 'yield return') - however, I still know a quite a lot about it just because I have dicussed it with Daniel and I have seen the source code. Much better then not knowing anything about it because I did not have the time for it. I have to admit that in some other cases, I simply would not figure it out myself, so Daniel explaining it to me is actually the only way to learn it. So all in all, you can learn more in a team :-) However, I know that it is a nice feeling to have something that you have created just on your own. But at the end of the day, I came to the conculustion that it is better to work together than to each on our own.

Regarding the ILSpy debugger, we still have not decided whether we want to make ILSpy a fully featured debugger as well. So we are inclined to keeping it as simple as possible (stepping, breakpoints, tooltips). However, we do plan to integrate ILSpy into SharpDevelop including the debugger.

Regarding the assembler - I was actually thinking compiler. Let the user allow to modify the C# code during the debugging session and optionaly save the features to disk. I am looking into whether it is posible and how difficult it would be.

I can feel for you when it comes to the "sank time" spend on open-source projects. I have spend years on the debugger, but I have rewritten it several times so most the code is not part of the current debugger. Futhermore, I am contemplating rewritting it once again - to use Cecil for reading metadata rather then the MS API. I would be painful to just delete all the old code, but it might be a good idea in the long term.

However, as you have said - I do not regret the time spend. I have learned a lot about programming, .NET internals and the debugger. It looks quite well on the CV as well.

Whatever you decide to do in the future, good luck with it.

David Srbecky

Sunday, April 24, 2011 at 7:31:00 PM GMT+2  
Blogger Zsozso said...

Thanks for your comment, David (the real one :-)). First of all, can I ask you _not_ to integrate ILSpy in #develop? Or at least have a separate stand-alone version of it as well? I think one of the great features of DILE is that it's really just a 1 MB zip file that you can extract anywhere (even on a production server) and debug whatever you want. I'm sure many customers wouldn't be happy if people installed a full IDE just to do quick investigations. So, if possible then please keep ILSpy stand-alone and xcopy deployable.

Ok, now back to the original issue. Yep, I agree with you, in some cases you can learn a lot more in a team. It really depends on the team. However, I enjoyed working on DILE because I mostly made it for myself. It was my little messy utility. :-) I made it available for others as well but I've never really tried to advertise it or anything. I thought if it's a useful tool then people will hear about it anyway. And this also explains why I never asked money for it or accepted donations. Once people pay for something, they will - rightfully - have expectations (like support, quick bug fixes and so on). And I wanted to avoid that. I worked on it purely for fun.

Anyway, I'll think about what I could use my knowledge for. I'll keep working on DILE though until ILSpy is really a proper replacement for it. Hopefully I can decide meanwhile whether I will start a new project, join a team or do something fancy with DILE.

Monday, April 25, 2011 at 3:38:00 PM GMT+2  
Blogger David Srbecky said...

Oh, sure, absolutely. I meant that we plan to include all ILSpy features in SharpDevelop, but ILSpy will stay as stand-alone zip download. The reason for keeping the debugger simple is to keep the size down.

Sure, we also do it just for fun. Also we usually focus on various specific features so you can still "claim credit" for the things that you do. There is very few of us so we would surely appreciate if you wanted to add some feature to SharpDevelop or ILSpy. If not, I understand you motivation and wish you best of luck.

I am thinking what such a new project could be - what about memory profiler? :-)

Tuesday, April 26, 2011 at 12:54:00 AM GMT+2  
Blogger Zsozso said...

Good to hear that. Because I use DILE regularly, I really need such a small .NET debugger for my daily work.

I don't say that contributing to #develop is not an option but I'll see whether I can come up with another interesting project. Writing a profiler would be exciting again, but David Broman's blog would make it almost too easy. :-) Anyway, there are lots of profilers available, even VS has its own, so I'm not sure whether the world needs another one. I'm also thinking of doing something with Phoenix (from MS Research, hopefully it's not abandoned yet). I haven't had the time to try it out yet but it looks very interesting.

Anyway, in the meantime I'll keep working on DILE. I guess I still have a few more months until ILSpy has full debugger support.

Wednesday, April 27, 2011 at 1:12:00 AM GMT+2  
Anonymous Anonymous said...


I am just writing here because I only just found dile. I am trying to solve a problem with a .net application where I do not have the source. I know little of .net (and come from a unix background) but have been studying it and the tools tonight, and am about ready for bed now too! I found many reflectors and disassemblers for .net, but dile was the first debugger that actually did work with my application. I was very happy to see a real .net debugger although I will have to come back to it tomorrow night and read the 'how to use it' guide :)

After reading this blog I guess I had better check out ilspy, but if the debugger is in its infancy, then i'll stick with dile for now. Also, I am in Australia, but my partner is Hungarian so things created in that country get bonus points with me :P

I highly suggest not re-writing. It is such a huge job, you'll probably never finish it and much time will be wasted. If you continue, I suggest sticking with the current codebase and reworking it bit by bit to improve it while keeping it usable the whole time.

If you decide to let ilspy take over, please join them. You obviosuly have some great skills, and they seem like a friendly bunch from this blog. :) You will probably learn a lot and create more valuable code we can all use in the future.

Good luck, whatever your choice!

Tuesday, May 24, 2011 at 4:45:00 PM GMT+2  
Blogger Zsozso said...

What a small world. Actually I work for an Australian company. I even spent a few days in Perth last year. :)

I'll definitely keep DILE alive until ILSpy becomes mature and has all the features that DILE has. And meanwhile I'll try to decide what to do with my little spare time. If I can't come up with any new interesting project then I'll just join #develop, I think. I'm not really against working with them, I just enjoyed having my own little pet project where I could do whatever I wanted at my own pace.

But no matter which option I choose, I want to keep working on tools for developers. I'll never get rich from it but I enjoy doing it. :)

Thursday, May 26, 2011 at 3:17:00 PM GMT+2  
Blogger zproxy said...

never quit what you love doing ;)

Friday, September 16, 2011 at 4:52:00 PM GMT+2  

Post a Comment

<< Home