Have been spending a lot of quality time with Dojo this weekend, and it's making me think about abstractions again. The pattern seems to repeat itself again and again; you dive into a deep pool of someone else's abstractions, you spend days working out all the little undocumented assumptions and missing pieces, eventually you get back to the surface and think "hey, not so bad", so you dive back down and try to build something just a little past what's been done before, something trivially different, but which should be an obvious extension of what's there.
It takes a bit longer than you'd thought it would. You keep having to swim just a bit lower in the murky waters. You know it's possible. You can see, loosely, where you have to go... but you really should get back to the surface and get back to work on the problems of today. Deep in the murky depths you begin to realize that the abstractions either just aren't going to let you do this, or that to do it you'd have to spend far more time extending the abstractions than you would re-implementing them.
You've sunk far more time into exploring the waters than you should, and now you have to decide what to do. Do you pull the plug and drain the pool? Do you poke just a bit more to see if maybe there's some hidden corner where the tasks you need to do are waiting with a scuba tank? Or do you just abandon the attempt, hack this little bit and get on to the next task?