Go има много приятен concurrency модел и мисля, че може да стане още по-приятен за употреба, ако можем да виждаме графично каква комуникация се случва. Затова и следната идея:
Command line tool, който минава през проекта, вижда кои функции са "анотирани", че искаме да ги изследваме, и създава копие на проекта, което като пуснем, започва да праща в реално време (към някакъв front-end) какви съобщения се пращат по канали между тия горутини.
- За целта стигнах до извода, че изглежда ще трябва да променям кода около четене/пращане от канали в отбелязаните за изследване функции.
- Също така мисля, че ще трябва да използвам и генериране на код, заради липсата на generics в Go.
- Front-end-а мисля да бъде някакъв JavaScript (или евентуално нещо, което се компилира до него, като CoffeScript или по-скоро ClojureScript). Но няма да се фокусирам много върху тази част - все пак курса е по Go :)
- Мисля тази визуализация да може да работи в 2 режима: единият е нормалния режим, който показва съобщенията както се случват реално, а другият режим налага bottle-neck на съобщенията, така че да има само по едно единствено пращане в конкретен момент. (За тази част имам леки притеснения, че е възможно това да счупи проекта в някакви ситуации, макар и да не успях да измисля такава. Има ли случай, в който се налага едновременното пращане на 2 събощения, за да не стане dead-lock?)
- Трябва да може да се променя като параметър времето, за което се показва едно изпратено съобщение.
- А би било хубаво и ако може да се усеща, когато канала е буфериран и да показва цялото queue от стойности.