From 0f967bb57323255547a848b675df0d4d48d798f9 Mon Sep 17 00:00:00 2001 From: Artem Date: Wed, 25 Jul 2018 17:41:56 +0300 Subject: [PATCH] Rewrite goals I've gathered some information about the possible goals behind the MM rewrite. Documenting the goals (the vision) is often important for the project success, it affects future design decisions and helps team communication by establishing shared values. --- iguana/exchanges/mm2.md | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 iguana/exchanges/mm2.md diff --git a/iguana/exchanges/mm2.md b/iguana/exchanges/mm2.md new file mode 100644 index 000000000..bb144a8ee --- /dev/null +++ b/iguana/exchanges/mm2.md @@ -0,0 +1,29 @@ +# MarketMaker2 + +This document will help us track the information related to the MarketMaker Rust rewrite. + +## Rewrite goals + +Rewrites and ports +[are costly](http://nibblestew.blogspot.com/2017/04/why-dont-you-just-rewrite-it-in-x.html). +We tend to think that porting is simple, and on some level this intuition is true +because we can skip some high-level design decisions and focus on translating the existing logic, +but it still takes a lot of time +and though we don't need to make some of the new design decisions, +we might spend no less effort to reverse-engineer and understand the old ones. + +So why the rewrite then? + +Carol, in her talk about rewrites, offers some possible reasons: + +"*If* you have some code in C or another language, and need to change it, or it’s slow, or it crashes a +lot, or no one understands it anymore, THEN maybe a rewrite in Rust would be a good fit. +I would also posit that more people are *able* to write production Rust than production C, so if your +team *is* willing to learn Rust, it might actually expand the number of maintainers." +- https://github.com/carols10cents/rust-out-your-c-talk, https://www.youtube.com/watch?v=SKGVItFlK3w + +And we have some of those: + +* We *need to change* MarketMaker: A more approachable and reliable API. Ability to embed the MarketMaker in the GUI applications. Ways to more easily deploy it at home by running it from small computers like on a spare mobile phone or on a Raspberry Pi 3. + +* The MarketMaker *crashes a lot*, to quote hyperDEX: "The biggest issue with the MM right now, is bobs crash or does not have the orders in users orderbook, or when users try to do a order it doesnt work or goes unmatched or other random stuff".