Conference Management Log
Monday October 31st
Because everyone is working on the trunk, committing changes takes long: everytime an update was received, the program was tested by running ./startup.sh and you were ready to commit, someone else already made a commit, so you could start all over.
Today we had a lot of problems, because our application did not work anymore. This was mainly because of changes made by the Application Infrastructure: the GWML syntax had changed and the documentation of it was out-dated. This was the first time I really missed the communication: we had planned to use the last couple of days toperfectionize our application, but most of the time we had to solve the problems. This was also the first time we made a request, which was accepted (because our application would not work without it) and later on the day, it was fixed: we needed a form in GWML. There never had been a problem using forms, until the changes to GWML were made. Today I really used IRC and it did help a lot: I was not able to create a link, so I checked the 'main page', but the methods used were not supported anymore. But the application infrastructe people were very helpful.
Tuesday November 1st
Again a day of fixing bugs and trying to make everyting work again, so we can give a demonstration during the presentations.
Tuesday October 25th
We did a final merge with the trunk today. This was a lot more troublesome than the last time, since we had some problems:
- The current trunk wouldn't build in Eclipse because of a problem with Nix
- Our unit tests were moved in the trunk to another directory, so SVN couldn't merge them and we got old tests that didn't compile instead
- Some of the classes that we depend on were moved, so there were about six of our classes that had to be modified
- All this took a very long time because of (1)...
I (Lennart) am glad that we finally can say our branch prison goodbye, and now can safely enjoy other people's refactorings and new features without having to fear merging problems like the above. Branching can be good for certain purposes, but adding a Conference application that changes very little to the existing code base (and thus cannot break other people's code) is not one of them.
< Space reserved for actual work we did today. Anyone? >
Monday October 24th
Today we held one of the longest meetings yet, as we are very much aware the deadline is getting closer and closer. After that we of course had our customer meeting, where showed our progress and discussed our plans.
Again we assigned new pairs, and started working on various small issues (including updating ACL/states, extending unit tests and bug fixing, and extending the user interface). We also continued last week's work; assigning reviewers to papers and assigning ratings.
After tomorrow the user interface is supposed to work completely, but we didn't manage to merge with the trunk again today, because it broke right before we wanted to merge (and seems a dangerous thing to do because it KEEPS breaking all the time now most groups are merging with the trunk).
Review Rating Progress
I (Ruben) finally managed to parse an xml document, after two hours we still don't know why the server got stuck every time I tried to parse the xml document, somehow it was waiting for something. I suspect myself a bit, because after I cleaned my code (I made no 'real' changes) and compiled again it seemed to work. But it should be able by tomorrow (a few little things to do) to add arbitrary grades to papers, there is a problem however: the xslt stylesheet won't know how to sort arbitrary grades (for example: L, M, Z, A, L is good, A is bad). Someone who wants to use a weird system will have to add some 'code' somewhere... We're planning to support the system Eelco Visser wanted (something to do with letters) and numbers. You still can add weird grading stuff, but the sorting won't work to well.
Review discussion progress
After discussing with the blog group, we don't think we can incorporate their blog into our conference. We wanted to use the blog as the discussion page for the reviewers. Now it is an editable page. A blog is supposed to be created in a folder named 'blog' (trunk/blog), and we want it to be in our conference, without the annoying blog part. But if time allows it, we will try, because the blog looks good. And it reuses software, and reuse is good, right?
< Ruben: fill this in when I remember what I wanted to say here >
Review of the day
We've been doing a lot of bottom-up programming 'till now (supported by unit tests, of course), and today a lot of things are coming together and visible in the user interface. The two big tasks for today - assigning reviewers and adding ratings - were completed, as were a lot of "TODO"'s. We also had a chance to do some refactoring and improve the existing unit tests, so overall today was very productive.
Friday October 21th
The test class for the Paper.java class is also refactored and almost all tests work again.
Tuesday October 18th
Because of the merge yesterday, a new conference branch is made. Up to now we mostly
worked in fixed pairs, but we decided we need to change pairs more often. Today all the members were present, and sub-groups were determined: Wesley and Kasper will work on the applets, Jeroen and Ruben will work on the comment-part of the system (blog) and Lennart and Steven will work on the user management and the paper class.
This morning Steven made a large set of unit tests for the existing Paper.java
, and Lennart prepared a bunch of TODO comments in the Paper
classes that we worked out later that day. In the afternoon we refactored the Paper
class, and we didn't have time to fix all the associated unit tests.
Monday October 17th
We started the morning of with the meeting with Eelco
. In this meeting we held a short demo showing the current functionality implemented for the Conference Module. We also discussed the development focus of the project and agreed to work on mainly implementing all of the needed functionality, for the rest of the day. One of the issues that arose today was the lack of communication between the different development teams.
Prior to this day a list has been assembled with things to do for completion of the project. All of the tasks on the list where prioritized. Because of the absence of some of the team members we decided to split up the teams for today. The remaining team members where each working on a separate functionality for today. We hope to have the complete team present at the project meeting tomorrow so we can make a clear estimation of things to be done and to devide the tasks among the team members for completing the project in time.
At the end of the day a merge with the trunk took place, so we are up to date with the last changes of the other branches, who have merged with the trunk.
The 'new' team consists of Lennart and Steven. The user management was finished today, as far as possible. No real time tests could be run.
Tuesday October 11th
Because of the absence of a large part of the group, due to illness and exams, not much was done this day.
Monday October 10th
Like at the start of every monday we held a meeting amongst the team members. Bottomline of this meeting was to discuss the current status of the project and to establish a planning for the rest of the day. At 10:00 AM we had a meeting with Eelco Visser
. The intention of this meeting is to discuss the current status of the project and to highlight the planning for the rest of the day. This week the emphasize was on the architecture used for setting up the Conference module for the Generalized Wiki project.
During the meeting the team discussed the collaboration with other teams. The bottomline for our team was to consider if our current architecture needed to be set-up totally by our team or to delegate part of the tasks to other teams. Another important issue of the meeting was the process of setting up the 'unit tests' for our own source code. This will also be one of the activities that we will be focussing on for the rest of the day. Eelco Visser
emphasized the use of a minimal amount of Java source code to set-up the Conference module.
At 11:00 AM we all participated in a 2-hour experiment of a student doing his thesis project within the Software Engineering working area. Purpose of this experiment was to show the value of unit-tests and to evaluate a model for documenting the integrity/testing of source code.
After completing the different demands for the several types of users present in the conference module we started today with the implementation of a 'ACLManager" class which will be responsible for maintaining the rights belonging to the different pages of Conference Management. According to Martin Bravenboer, who was also present at the meeting in the morning, the current user management implementation in the Generalized Wiki project would be sufficient to fullfill our needs and that the module wouldn't be subject to much changes.
At the end of the day we set-up the basic structure of the ACLManager with the neccesary methods to maintain user rights of all pages belonging to the Conference Management module. As a guideline for setting the various user rights we used the state diagram, which was improved last weekend.
Today was a productive day. The end-goal of the project becomes clearer each week by developing a better understanding of the Generalized Wiki architecture and the requirements needed to set-up a solid Conference Management module.
servlets are correctly interfacing with the backend code. This required a lot of additions to the backend code.
We have been busy with a good HTML-generator. We have also been busy with some cleaning up of the code and some improvements.
Tuesday October 4th
Today we wrote some unit tests. We performed tests before (and had a simple test class), but did not do automated unit testing yet. Now that we have these first unit tests, in the future it should be easier to write such tests.
Monday October 3rd
In the morning there was a meeting with Eelco Visser
. During that meeting we told Eelco what we have done the last week. We also decided that our current 'prototype' would not be a throw-away kind of prototype, but would simply evaluate into the endproduct. After the meeting Jeroen and Steven asked some questions about user management.
After this there was another short meeting, this time just with the group. We decided that we needed some features from other groups: the bibtex group could help us, by making a bibtex for the author, papers, reviews, etc. At the end of the day we wanted to have a program that can make a conference and a program that can add a paper, but we didn't get around to testing it all.
We also talked about Collective Code Ownership a bit (one of the Extreme Programming
principles). After that we worked a lot on each other's classes. Ruben rewrote the output code that Kasper & Lennart wrote, and Kasper & Lennart rewrote how deadline dates were handled in the system.
After the meeting with Eelco Visser
we had some questions about the state diagram: not all rights were clear for each state. After the questions were asked we continued our programming work. Deadlines are added to a conference and the state will changed when deadlines are reached. A paper object is added with a lot of properties: a paper has a list, in which the names of all the users who may read the paper are available. When making the paper object, a abstract paper is made, but no real programming is done in this class yet.
Today was quite a productive day: every team was working in his own domain and a lot of discussions took place when two groups were working in the same domain. Everything is becoming more clear every day.
Today we discussed how to handle the paper file uploading. Our current code already handles the creation of directories and writing the author and article page, but file uploading was not supported yet. GW already has file attachment support, but it uses depricated API's, and all methods handling this are private and located in the AttachFile servlet. We spoke to the Application Infrastructure
group about this, who agreed will look into a more re-usable interface for uploading files. We did a bit of reorganization of our code, and today some new classes were born. Most importantly the ConferenceManagerFactory
class that now contains the factory methods, and the gw.conference.Constants
class that contains all our constants.
The seperation of different aspects into different classes that we organized last time seems to work out just fine. The User Management group is now working on the ACLManager
and the ConferenceState
classes; the other group is looking into generating templates instead of the hardcoded content generation that we currently do in FileContentGenerator
Since we need some pages to be generated, and we don't have a good solution where to place the default forms in the wiki, we made a html generator to quickly write good pages.
Tuesday September 27th
Jeroen was absent due to a dentist appointment. The code of the user authentication is becoming more clear and it is very usable for our assignment. Every state of the paper will have different (groups of) people who can read, review or discuss the paper. We think the best way to make sure the right people can do the right things is by updating all the rights when a different stage has started. The different stages can be found in the state diagram, which is on the theory in practice
part of this wiki. When working on the state diagram, Damir came to meet me, because I asked the application interface group to tell him I wanted to speak to him: he will do the user authentication in the application interface group. We had a short conversation and decided we could both continue our work and when necessary we could come together again. For questions or requests e-mail is the answer.
It was a productive day: I finally think I understand the user authentication code enough and the state diagram was a good thing to make, so the entire group can see how things should go. The diagram is not finished yet: a group conversation will be necessary, because there are still some questions. It was also a good thing that contact was made between the application interface group.
We refactored the code today to separate functionality into different classes, most importantly FileContentGenerator
, and later ConferenceState
. We also worked on code related to paper submission.
Monday September 26th
We managed to receive information from a form in an new servlet, and with the work of the Information storage group a new folder and page were created when adding a new paper. The servlet can receive an arbitrary number of form fields, so that you can add extra fields if neccesary.
We also fixed a couple of errors in the html output, and tried to understand the code from last year. A lot of html is hardcoded.
The search function appears to work incorrect, or not at all. You can search for pages, but there are no live pages (pages with at least one link to them), you cannot create a new search index, and the only thing that works: you can list all pages (listed as dead pages) in your wiki.
We finally managed to get all of our stuff working, nix eclipse etc.
We temporarly split up: Steven is working on the Wiki of the conference managament group
: we want to hold a group log of every day we work on the project and we want to review that day. We decided to let each subgroup hold an own log and the entire conference management group holds an own log. On the conference management wiki is a page added: theory in practice, where all the software engineering related methods will be, with a short description when we used it. Also a short requirement definition is made. Due to the absence of the user-person in the application and infrastructure group, we started an own investigation, without first contacting the user-person.
Due to the absence of the user-person and the short requirement definition made, an user management file was not created: more detailed than the project requirements is not necessary yet. A project requirement document will come in handy when talking to the project initiator and the examination of the user-code will come in handy when we will program the user-access part of the conference management.
We are slowly starting to understand the existing codebase. We worked on getting information into the storage back-end, in particular the author pages. We integrated the functionality for generating such author pages (with subdirectories) into the servlet prototype. We created a ConferenceManager
class to hold the methods that are called by the servlets to do the actual work.
We noticed that there are several places in the existing code where a full path, consisting of multiple components, is created if it does not already exist (similar to "mkdir -p"). We added an ensurePathExists()
method to the storage interface, and created implementations. Unfortunately, this is only fixed in our branch.
Kasper is unable to commit (probably too stupid).
The entire conference management
After starting the day we had a short meeting and discussed what each group will do today. Some questions were answered and everyone started to work. At the end of the day, we wnat the following things to be done:
- a working prototype
- an user management file with all the different users and their restrictions
- a process to safe the input data from the prototype in subversion
- a nice conference management wiki site
We were visited by the ApplicationInfrastructure
, they asked if we were going to make our own version of gwml or just gwml. A quote from their log:
"ConferenceManagement The conference management group promised to support a transition to GWML. Lee and Wouter in the Application Interface group are currently further developing this MIME-type, though it is currently supported by the engine. Their request is Lee and Wouter keep them informed on changes in the GWML MIME-type so they can guarentee vallid GWML is sent."
Seems to be right.
- 27 Sep 2005
Thursday September 22th
Short review of the day
Tuesday September 20th
The entire conference management
We spent some time getting Eclipse 3.1 to work. Subclipse integration is still broken, so we are using svn on the commandline. We got a trivial 'Hello World' servlet (only generating output) working.
Short review of the day
The technical diffuculties are almost all solved, so we can really start working.
Monday September 19th
The entire conference management
After college the team had the first meeting. In that meeting everyone had the chance to introduce himself. After the introductions the problem
was discussed. Halfway this discussion Eelco Visser joined us and explained what he expected from our group. He advised us to make a simple working prototype as soon as possible and only then to discuss the requirements in more detail. After the meeting everyone tried to get the build system to work, which, unfortunatly, took the whole afternoon. In that afternoon we divided the team into subteams:
At the end of the afternoon everybody, except Jeroen, was able to build and run GW locally.
Short review of the day
The meeting was pleasant, as well as the clarification from Eelco Visser. It was a pity that we were not able to get much work done the rest of the day due to technical difficulties: all SWE students must be members of the group edu-swe to be able to install Nix.