== Roadmap == === Week # 0 === A few days until the actual coding period began, and I was still getting to know the developers. The MacPorts codebase is fairly large, and it will take a while until I will figure out all the ins and outs. I have created my development branch and made my first commits. Rainer, together with Clemens and Jeremy, met me on the IRC channel and we all set the course for the first week of the coding period. We all decided that I should begin by improving the existing regression tests, converting them to use the TCLTest framework, while keeping them as modular as possible, making it easy to add new test cases. I have received my assignment and it's up to work from now on. === Week # 1 === After the first week, it seems that I am on the right track. Rainer is pleased with the testing framework that we have chosen to use and he feels that this project is heading to the right way. The checksum test consists of three sub-tests, one for each checksum (md5, sha1, rmd160). The calculated values are gathered from the output of the 'port test' command, using the debugging mode ('-d') and compared to the expected ones, using the tcltest framework. I have tried to make the code as modular as possible, but Rainer has suggested some further improvements, that I will implement the following week. With the help of Clemens and Jeremy, I have been described the functionality of the remaining regression tests and this has helped me enhance my understanding of how MacPorts works. In the next week, I will focus on the dependencies tests and will try to pick up the pace and commit more often so they can be up to date with my evolution. === Week # 2 === During the second week of development, I have continued to improve upon existing regression tests: dependencies, envvariables, case-sensitive and site-tags tests. I have modified the tests to use a common proc library and started working on a method that will allow all the test to be ran at the same time. After reviewing my code, the guys have stated some changes that they would like to see and which will be implemented later in the third week. We all have agreed that I should continue to work on the existing tests the following week, although this involves changing our roadmap a bit. === Week # 3 === This week was all about tweaking all the work that I have done so far. All paths had become absolute, the trace test has been completed and cleanup has been done. I had also added a script that would run all available regression tests and display the results in an easy to read way, besides a Makefile that would run them automatically once all MacPorts tests are run. The next week, I will head my attention on unit tests. There is a lot of work to be done with modules as port1.0, registry2.0, machistal1.0 and although there are many parts of code that I don't really understand at this moment, Rainer, Clemens and Jeremy are always there to help me, besides the people of the community who are always active on IRC. === Week # 4 === A week into unit testing, and it seems work will never end. There are a lot of procs that need to be tested and the code is very hard to read and understand. I have managed to make a few tests, but only with the help of my mentors (our weekly meeting really helps a lot). For the next week, I want to increase the pace and put as much time as I can into development. === Week # 5 === Things are getting better and better, as I need less and less help from my mentors. I have managed to cover 3 of the modules of port1.0 (portactivate, portclean and portutil), but I have developed enough confidence to step up the pace and increase my developing speed. The tcltest framework really seems a great fit for our needs, fact confirmed by Rainer. Still a lot of work needs to be done, and as wee discussed on our last meeting, we may need to reorder some things in our roadmap for this summer, but not after we talk to the rest of the community and listen to the other developers' opinions. The need for good documentation is really felt, once I dig deeper into the functionality of MacPorts, so I will make sure the test I develop come with good instructions on how to use the framework, add new tests to it or change it. I have already started with short comments in the code and some README files that will help me write the final documentation. The midterm evaluations is near, so I'd better get back to work.