Rewriting everything from ground up

It’s probably my fifth time to write a network application framework from scratch. They were all event-driven. The first and the second one (Netty 1) were based on blocking I/O. The others (Netty 2, MINA and Netty 3) are based on non-blocking I/O.
Five rewrites… I sometimes think it’s time to step away from network application framework and do something on top of that. I always wanted to write a nice build tool or more enterprisy stuff. However, the fact is that I am still working on a network application framework!
On the other hand, I realized that I have been feeling something exciting and freshing for each rewrite. There are many ways to solve the same problem, and it is sometimes better solved when approached from a different angle. It’s probably because I got to understand more aspects of network application development now than before. Yes, there seems to be huge room for improvements in network application design of this world… yet!
There’s also fear lying under the exciting feeling. “Will this fifth rewrite will be a great step forward from the fourth one?”, I ask myself every morning. It’s a diffifult question, but such a question makes me do my best and consider every possible issue I know of.
So? A little bit of pressure and a lot of fun. 🙂