The community bonding period of the GSoC 2014 has thus come to an end. The period involved getting to know the project and mentors better and coming up with a basic design of the project to begin the coding.

In the bonding period, I built a prototype of the project, with a few functionalities like list, create of mailing lists and domain. I felt the prototyping was a good idea to convey and discuss ideas about the project. I tried expressing my views and thoughts in a series of mails, yet I was not so satisfied. That's when I decided to build a prototype that would provide a solid explanation of my thoughts.
I also wrote a blog post elaborating my code.

Steve replied in a week informing a few design flaws and improvement suggestions at many parts. The most important one might be to remove the unnecessary name argument that comes with all commands. It can be done by establishing that the 3rd argument represents the name of the scopeinstance. I added a step further, by imposing a rule that list name is to be mentioned only in the format list@domain.org, so that all the list related commands are saved of an argument, domain.

Steve further pointed out the mistakes in use of variable names that makes less sense while reading diff's, like short codes or names.

He also made a major design suggestion that the commands would be better used if they make sense in English. Hence I swapped the position of positional arguments to mmclient <action> <scope> <arguments>. By doing this, the commands will almost be same as the ones that are to be used with the command shell.

Steve (and Barry) suggested not to follow the write-code-and-refactor method in the project but to use a systematic approach, discussing each step in detail before implementation, which I agreed to, as I am refactoring too much code already. Barry further discussed the possibility of using a one level sub command format for the commands, which I felt, is not effective. He made other suggestions like using switches rather than valued arguments at some commands, the discussion on which is currently in progress.