Hello again blog! Forgot to write last week, so i'll try to make it longer this week instead!
This sprint I have been focusing on creating a Mindmap view for our forum. The way I see it this will be perhaps our gratest distinction from Loomio, so it's important it works well.
In the begining of the sprint I spent some time thinking about what the mindmap should look like, and how it should work, how to implement it and what its good for anyway?
I remembered a conversation with Johan, where he mentioned that sometimes, the biggest obstacle between two persons in a discussion may not be that they disagree on ideas, but rather on how to express the same idea.
This memory connected with my thoughts about the mindmap and brought forth a new idea, to which I think at least part of the logic behind the mindmap can be re-used. My idea was that while reading a discussion, users should have the option to start a sub-discussion on any answer to the original discussion. As such, disputes on mere formulations would have a own, isolated space to take place, and thus would not take up space in the original discussion, where discussion should be focused on different ideas, instead of different formulations of the same idea.
But, this idea is for the future, no time to make all these functions in one sprint only, I had to fokus on the mindmap itself!
Not such a easy task it would turn out. At first, I thought I'd just place normal blocks of text on the page, but then it would be nice to dra lines between the blocks to show relations between different topics.
Therefore, I turned to Canvas, the new-for-HTML5 drawing-tool. Made it through a few tutorials on the basics of canvas (As I have never worked with it before) and then found a bunch of libraries to help with all sorts of animations.
This is where things got tricky the first time. There are shed-loads of canvas libraries out there,and a lot of them are probably great. The problem I found is that most of them are focused on making in-browser games, and as such are a lot more complicated then needed for a "simple" mindmap. Took me a while, but then I finnaly found not one but two libraries doing nothing but mindmaps.
Now to learn one of these libraries. actually, what I ended up learning was somehting else entirely. I learned that, the availability, completeness and level of difficultyto understand the documentation of any library is at least, and probably more, important than the library's being fit for the task at hand.
You probably see where I'm going with this; being sick of reading half-finished explinations of functions I made a full turn, and decided to stick with the good-old html-css-js combination. I'll worry about drawing lines later, for now i just want to place the items on a map!
So I got to it, the upside here is, Angular seems to be able to do quite a lot for me, al I need to make is an algorithm to calculate where to place each item. Said and done! And now I just need to debug code dealing with 1 framework, instead of a framework and 1+ graphics-libraries.
Someone once told me that one shouldt be so quick to look for ready solutions in programing. Quite often, understanding how to use a library can be much harder than solving the problem from scratch!
I think that piece of wisdom sums up pretty neatly what I've learned in this sprint!