dapphub / dapple

EVM contract system developer multitool
GNU General Public License v3.0
299 stars 59 forks source link

modular refactoring with typescript and pure functions #211

Open mhhf opened 8 years ago

mhhf commented 8 years ago

With each iteration dapple gets constantly more complex and harder to maintain. In a recent talk with @dbrock we had discussed the possibilities of a refactoring. Here a few thoughts: The main problem is the distribution and manipulation of state and the lacking of type safety. As a methodology we could split dapple up into multiple independent programs and start by converting one of them to typescript. It will be a lot of work to refactor dapple, but once its done, incrementing will be a lot easier as well as lowering the barriers of outside contribution. Not to mention the error safety which is caught by better testing and type safety

Thoughts? @nmushegian @ryepdx

nmushegian commented 8 years ago

I would love to do some dependency unwrangling as I have completely lost all context at this point. Having a real type for each schema we have sounds very nice

mhhf commented 8 years ago

Also lets have a closer look on this: https://github.com/Reactive-Extensions/RxJS

nmushegian commented 8 years ago

@dbrock suggested the idea that separate modules could be separate programs like how Git is structured. There are a few good reasons that might work well for dapple, but I bring it up because if we go with this approach this suggests a natural starting point for a typescript rewrite: commands which do simple filesystem reads and transformations (init, doctor) and their dependencies (dappfile/dapplerc type validators). This also forces us to think clearly about what exactly all the intermediate states of something like dapple run are (see discussion about "resuming" runs, and about required contexts for scripts)