Friday, May 21, 2010
GSoC 2010 Melange Testing Project: the last week of Community Bonding - starting to code
GSoC 2010 Data Seeder - Project design
- The configuration for the seeding operation will be customizable by the user using a web interface which will conclude with the creation of a JSON configuration sheet. This configuration fill will be usable both locally and on-site and can later be edited using the same web interface.
- The configuration sheet is meant to be very easily customizable and extendable. Different scenarios for different needs can be saved in predefined configuration files and then executed at any times. Examples include saved states in different phases of a GSoC program (proposal phase, midterm survey etc.).
- There will be an option to export data to Python fixture files, either directly by the use of a script along with a JSON configuration file, or by saving the state of a running instance.
Week 3: Getting Ready to Code
- Some changes to the user_page.py data model. The multi-valued properties job.py and education.py data models were scrapped to be replaced by a simple biography text field where users can write whatever they would like to share with the community.
- Detailed workflows for Calendars and Maps feature (addition/request new events). Here are the usecase diagrams.
- Both events and user_page data models have a tags property which is basically a comma-separated string with tags related to the user or event(e.g. C#, Java, Django). Users can also be given to the option to subscribe for feeds to be notified of events with certain tags.
- I have also done a detailed timeline, with a list of deliverables for every week up until the mid-term to keep be oriented and directed with aims for every week.
- Coding, coding all the way!
- Follow timeline closely to reach the weeks' goals.
- Resolve any bugs/issues, if assigned.
Thursday, May 20, 2010
New Document Editor: HTML diffs
Talking about HTML diffs, we should consider two cases:
- HTML as text. A bunch of tags, attributes, values and content.
- HTML as a rendered document (e.g. image)
- Tags (through browser's default CSS or applied CSS).
- Attributes class and id (through applied CSS)
- Applied CSS (server-side, in-document or in-line).
- Style modification with DOM.
- Tags are changed, but CSS is the same:
<h1>Hello, world!</h1>
is changed to<h2>Hello, world!</h2>
but the CSS ish1, h2 {font-size: 12px; font-style: normal;} - Some pieces of HTML are rendered the same:
<div class="alert">Hello, world!</div>
and<div class="alert">
<p>Hello, world!</p>
</div> - Class or id is changed but CSS is the same:
<div class="original"></div>
is changed to<div class="changed"></div>
Saturday, May 15, 2010
Week 2: Working on Project Design
Update on my bug-fixing progress:
I managed to submit my very first patch for issue 890. I also started looking into issue 884, but as it requires some re-design of existing templates, discussion is ongoing as to how this issue can be resolved.
Update on my Project:
As my project is to appear as a new module in the soc.modules section, I am tentatively naming it as social.
I have started on the design work for the ‘Tabbed User Pages’ which is one of the two main features I have proposed.
Data Models:
I have come up with additional data models to contain information on users which will be displayed on their user pages. The proposed additional models are as follows. These are not finalized as discussion is still ongoing as to the inclusion and exclusion of some of them.
soc.modules.social.models.user_page.py
soc.modules.social.models.education.py
soc.modules.social.models.project_details.py
The user_page.py model will serve as the master model which will contain all the attributes of the user model which will appear on the user profile page. The details of education and past and current GHoP/GSoC projects can have multiple values for a given user and hence are extracted out to separate data models by themselves.
Thus far, I have envisioned the User Pages to have a tabbed view with three tabs, the ‘Profile’, ‘Project’ and ‘My Stuff’ tabs. The ‘Profile’ and ‘Project’ tabs are self-explanatory, the ‘My Stuff’ tab will be used for users to show their personal blog feeds using the RSS widget for now. Should more widgets be developed (i.e. Twitter widget J), they can be added in this tab.
Users will be able to edit the data in their user pages using a single form to edit the data shown in all the tabs, using the 'Edit User Page' link. This link will only be visible if the user is viewing their own user page.
Here is a simple use-case diagram to elaborate on the workflow.
Views:
soc.modules.social.views.models.user_page.py
Since the user_page feature serves more or less the same purpose for all the different user roles in Melange, a single view will be created.
Templates:
soc.templates.modules.social.user_page.view_user_page.html
Since the user pages will be tabbed, the entire page will not reload when users switch between tabs. With the help of JavaScript, this can be achieved with a single template with different html div and id tags defining the data to be displayed in different tabs :).
soc.templates.modules.social.user_page.edit_user_page.html
A different template with the html form will be created for the 'Edit User Page' function which will be used to update the user_page.py data model.
Logic:
soc.modules.social.logic.models.user_page.py
To handle the edit/update of the user data a logic is created which will be used to update the user_page.py data model.
In the coming week:
- Check for updates on resolving Issue 884
- Finalize the Design for Feature 1 & Feature 2: Maps + Calendars
- Finalize Project Timeline and list code deliverables for mid-term as well as weekly deliverables
- Decide on the specific APIs and libraries to be used for the project.
Friday, May 14, 2010
GSoC 2010 Melange Testing Project: Week 1 - learning the code base




Tuesday, May 11, 2010
GSoC 2010 Data Seeder - Project start off




