Monday, August 16, 2010
Social Features Project: Week 12
My final version is upload on my app engine instance here. It consists of User Pages, Calendars and a Map View. The Calendars feature is functional and works as per the workflow I had originally planned. The past week had some last minute bugs which popped up only when I ran my code on AppEngine as they were not detected while I was testing on local host. The bug was that I was storing a universal session authtoken for the entire application instead of one for each user. This did not show on my own machine as I always used it under my own google account! Hence, I had to spend time to rectify this and ensure that each User model stores the session token and later the services uses the set token when the user decides to use the calendars feature.
This issue has been fixed now. However, I believe it will take a bit more work to integrate it and will have to spend time with my mentor in revising the finer details before actual code integration with the main code base. I look forward to doing this in the week after next.
My latest code is uploaded to my bit bucket account here.
Some problems still awaiting to be solved are nasty server error being cause by issues in the Google Calendars API, which I thought I resolved however, they still seem to pop up randomly. The issue has been taken up by others using the API here, although there does not seem to be a good fix for this yet.
Another thing that needs to be settled is the scalability of the Maps View. As GSoC has about a 1000 students, 1000 mentors and then org_admins etc. Right now, as I am having to manually populate the data, the map view has hardly 40-50 pointers on it. Hence how will the JS handle a large number of objects is to be seen as yet.
Finally, it has been a great experience with loads of learning and coding. It has been great working with the Melange team, and specially my mentor Madhu. :)
I am looking forward to staying with Melange and contributing to the project as best as I can in the future too.
GSoC 2010 Data Seeder: Wrapping up for end of GSoC
Other improvements include some visual styling, although I personally find my work very ugly, I'm hoping someone with better visual appeal might help me with this part in the future.
As a final proof of concept, I will provide a number of configuration sheets that will demonstrate the full power of the module: being able to generate mass amounts of "real world" data very easily (although doing a first-time configuration might be a little time consuming).
I have also encountered some unexpected problems. It seems that GAE (or maybe the Mapper API, I'm not sure) limits the amount of data that a task can receive as a parameter. Configuration sheets can get pretty big (I won't be surprised to see some reach tens of KBs) so I needed to find a workaround. My solution involves storing the actual configuration sheet in a model, and then each task would read the configuration sheet from the datastore. While this solution speeds down the process by quite a bit, it might prove more scalable and also provide some historical value, should the configuration sheets remain in the datastore.
Enough about the technical stuff... It's been a real joy working with everyone around the Melange community and I'm sorry if I haven't been all that serious all the time during GSoC. Many thanks to my mentor Mario who has provided me with priceless information all the time and who has made all my work so far possible. Also, thanks to all the other developers (Lennard, Sverre, Madhusudan and Daniel), you are simply great and it's been a pleasure to work with you all. Cheers to all other GSoC students (Leo, Pavel and Savitha), I hope we'll see each other in the future as well. Having said that, it's time to continue working on the project, there's still a lot of things that can be improved.
Cheers!
GSoC 2010 Melange Testing Project: Week 12 (Final) of the Coding Period
When I tried to move the the gaetestbed and pymox modules to buildout dependencies, however, I found the easy_installed versions of both modules have problems (easy_install is used during Melange buildout). For gaetestbed, I found that the gaetestbed on PyPi is an old version which cannot check the html body of an email. So, I emailed the author to ask him to put the latest version onto PyPI. The author (JJ Geewax) was very kind to have helped me do it. For pymox, the easy_installed version available is a quite old version (0.5.0) which has a bug fixed in the later versions. Unfortunately, these newer versions are not available on PyPi, so not easy_install searchable. I reported the issue to the project issue tracker. One of its authors (Steve) was also very kind to helped me to put a newer version (0.5.3) to PyPi. After all these problems have been sorted out, there remains one issue that gaetestbed currently depends on webtest even though you do not need this part of function due to the design of gaetestbed, which the author agreed to resolve in the near future. After consulting Sverre, I finally moved the the gaetestbed and pymox modules to buildout dependenciesi and then commited and pushed the change to my online clone.
In the next week, I will add the experience of how to do mail and taskqueue related tests with gaetestbed to the testing wiki page, make a patch for removing the cron/job related modules and then send it to the list as well as add more test cases for existing Melange modules.
This is the last week of GSoC2010. It was a quite exciting and enjoyable summer. My project is very interesting, my mentor (Sverre), other developers (Lennard, Daniel, Madhusudan, Mario) and GSoC administrator (Carol) are very helpful, and my fellow students (Felix, Pavel and Savitha) are also very nice people to work with. Specially thank my wonderful mentor, Sverre, who is always ready to help me out when I got stuck and without whom I may not complete my project. During this period of time, I have also learned a lot about GAE and Melange, I have also come up with something useful and merged to the trunk, and uncovered several issues. Though the program has ended, it does not mean the end of my project or my involement in Melange. On the contrary, I will continue to work on the testing project after GSoC, i.e. add more test cases for more modules, improve the testing design and code, integrate Felix' data seeder, and so on, which have not been done because of the time limit of GSoC or dependency. I also hope to work for Melange beyond the testing project and hopefully become one core developer of Melange in the future. I also wish to come up some ideas to improve Melange so that I can serve as a mentor for Melange in the next GSoC and experience the excitement of these guys about the upcoming mentor summit :-).
Document Editor: Last week of GSoC coding
Monday, August 9, 2010
Document Editor: Week 11
Week 11: Social Features Project
This way, users do not have to specify what kind of search they want, they can just type any keyword such as 'Python' or 'Australia' to get the relevant filters.
The Google Maps API gave me a bit of problem as it took sometime and debugging to realize some method names have changed completely such as for adding/removing markers etc between V2 and V3, and I had to accordingly change my code.
The latest version with all three features is on my instance.
I have quite a bit of things left to do in the final week of GSoC:
- write tests
- write code to catch the exceptions(Application Error) being thrown by Calendars API and re-send requests.
- test the functionality and workflow of user pages, calendars and maps view for bugs and fix them.
GSoC 2010 Melange Testing Project: Week 11 of the Coding Period
- It will print out all sent messages to facilitate debug in case of failure.
- It accepts an optional argument n which is used to assert exactly n messages satisfying the criteria are sent out.
In the next week (the last week of GSoC2010), I will clean up code and commit and push all uncommited testing code, increase the overall coverage printed in console to over 60%, and make the coverage of most modules over 50%. In addition, I will also move the the gaetestbed and pymox modules to buildout dependency and add the experience of how to do mail and taskqueue related tests with gaetestbed to the testing wiki page.
Monday, August 2, 2010
GSoC 2010 Melange Testing Project: Week 10 of the Coding Period
In the next week, in addition to solve the above error and increase the testing coverage of Melange to over 60%, I will also try to find a good way to test the mailing and taskqueueing functions and make sure the correct mail has been sent out and the correct task has been scheduled.
Document Editor: Week 10
Saturday, July 31, 2010
Week 10: Social Features Project
I will be starting on the final Maps feature/view this weekend and hoping that this feature will not take long to code as it does not involve much creation/manipulation of data models, it mainly involves querying the data (user pages and events) and updating the map.
In the coming week:
- start work on Maps feature
- test the current code, esp. UI to check in case of any bugs
Friday, July 30, 2010
GSoC 2010 Data Seeder - Seeding using MapReduce framework
Tuesday, July 27, 2010
Week 9: Social Features Project
I am currently working on the CSS designs for CalVis UI, and hoping to integrate the design and UI into my GAE by today or tomorrow at the latest.
The rest of the current week, I plan to spend on testing the Calendars and User Pages feature and also starting work on the Google Maps view/feature for filtering users and events based on users/event location and tags.
I lost the last weekend as I had to make a trip to India for some family obligations, hence the slowness in progress.
In the next week:
- Complete CSS design for CalVis and integrate with current feature
- Write and test calendars feature
- Get started on Maps view/feature for users and events
Monday, July 26, 2010
Document Editor: Week 9
Sunday, July 25, 2010
GSoC 2010 Melange Testing Project: Week 9 of the Coding Period
In the next two weeks, I aim to increase the testing coverage of Melange to over 60% and increase the testing coverage of those modules below 50% (40% at least) to over 50%.
Friday, July 23, 2010
GSoC 2010 Data Seeder: Web Interface
Tuesday, July 20, 2010
Document Editor: Week 8
- Deploy HTML diff engine into Melange
- Create view that shows diff between two revisions
- Update "Manage revisions" view to support diffs
- Code clean
Sunday, July 18, 2010
GSoC 2010 Melange Testing Project: Week 8 of the Coding Period
Then I finished adding test cases to GSoC organization view, but I noticed unfortunately that it had not been run by nose tests. After some investigation, I found that the problem was because I had not added __init__.py in the GSoC test packages. Then, I further worked on other view tests. This week, however, I have not achieved my original target, i.e. increase the overall code coverage to over 60%. I will work hard to make it this week.
Friday, July 16, 2010
Week 8: Social Features Project
Earlier in the week, I implemented the workflow of Calendars feature with fuctionality such as:
- creation/edit of events by users for chosen Calendars.
- the addition of org_admins userid's to the Access Control Lists of their org's Google Calendar
- sending notifications to Calendar owners with event request message and consequent approval by org_admin was also implemented.
- uplading of approved events into the respective Google Calendar
After some discussions with my mentor, it was decided that it would be an acceptable trade-off to use the CalVis API to display Calendars. As there was no very definetive decision reached in the dev-list discussion, at the same time, there was also not a strong opposition to CalVis, my mentor and I decided to go with the CalVis. The UI of CalVis can be manipulated with CSS to a decent extent and hence, it can be designed to look better. Although it may never look as good as Google's :-(, it is a trade-off we get for having the cool Google Maps plus Youtube widget pop-up on Calvis. I am currently working on the CSS designs for the Calendars as well as the User Pages(i was supposed to have done this a while back!).
For the next week:
- prepare cool designs for the Calendars UI and User pages
- find out how and write cron jobs for keeping Melange-side and Google Calendar-side events in sync
- spend some time to refactor code to ensure it sticks to Melange styles and conventions
GSoC 2010 Data Seeder - Client-side HTML rendering
I have been facing some problems choosing a right JavaScript templating engine for rendering HTML. The solution that I was going to adopt was actually a jQuery plugin, but had some problems rendering some templates causing an infinite loop in the browser. Failing to find a proper solution for quite some time, I have decided to switch to pure. I was preferring tempest at first because it was using the Django templating format, but now I see the benefits that the pure separation between templates, directive and data offers (a directive is a structure that binds data to the templates).
The switch to pure is now complete and you can check it out at http://sttwister-melange.appspot.com/seeder/home
There's support for seeding models and defining providers for all properties. There's limited support for references at this time, only being able to bind a model to another random model.
Monday, July 12, 2010
Document Editor: Week 7
Sunday, July 11, 2010
GSoC 2010 Melange Testing Project: Week 7 of the Coding Period
Then I further worked on various views, e.g. sponsor, program, student, organization, etc and aim to increase the overall code coverage to over 60% next week.
Saturday, July 10, 2010
Week 7: Social Features Project
I am currently working on the program_host "activating" calendars for all organizations once the accepted organizations are announced.Org_admins will in turn choose to "activate" their respective calendars after which their user ids will be added to their org calendar with "owner" rights. I am hoping to have a working version of this feature by the end of the weekend.
In the next week:
- finish rest of Calendars feature (requests to add events)
- Testing and revising of User Pages
Monday, July 5, 2010
Document Editor: Week 6
Sunday, July 4, 2010
GSoC 2010 Melange Testing Project: Week 6 of the Coding Period
Then my hard drive was corrupt:(. Fortunately, I have the online clone on Google servers, so I have not lost much work. It just took me some time to reinstall the operating system and resetup the environments. Due to the problem, I have only finished most parts of the sponsor view tests and some parts of org and student tests. Next week, I will definitely work harder to catch up.
Saturday, July 3, 2010
GSoC 2010 Data Seeder - Model references in the UI
While working to add easy manipulation of references in the web UI, the current local JavaScript templating solution (John Resig's microtemplating) has proven to be a bit hard to maintain when getting to more advanced manipulation. So, I'm currently working on finding and integrating different templating solution. I'm investigating pure [0] and jQuery tempest plugin [1].
[0] http://beebole.com/pure/
Week 6: Social Features Project
I am hoping to upload a bare essentials version of "adding events" into my GAE by the end of the weekend.
The User Pages feature is done minus "image upload" which is in the process of being resolved with Madhu's help :). Also, for the "add another job" and "add another education", I created additional data models education.py and job.py for storing this for each user. I am expecting there will some more changes to make here and there based on everyone's feedback.
The latest has been uploaded to my GAE. The brief workflow which I also posted in an email to the list is as follows:
Student Roles:
- Log In
- Apply for a Student role by registering as a student.
- Upon completion of registeration, click the read "Create User Page" option on the sidebar.
- Fill in form.
- Click on 'View User Page to see how user page looks. or Browse User pages by clickin on "List User Pages" on the sidebar.
Mentor/OrgAdmin Roles:
- Log In
- Apply for a Mentor/OrgAdmin roles.
- Upon being accepted as mentor/orgadmin, click the "Create User Page" option on the sidebar.
- Fill in form.
- Click on 'View User Page to see how user page looks. or Browse User pages by clickin on "List User Pages" on the sidebar.
The Week Ahead:
- Develop Calendars+events feature upto near-completion
- Revise User Pages based on feedback from development team
- Improve the datamodel structures of jobs and education to create them as App Engine entity groups with the User Page as parent.
Monday, June 28, 2010
Social Feature Project: Coding Week 5
After that I integrated the Tags property for User Pages, so that users may search for other users based on user tags. After this, I made the remaining modifications based on comments given in the previous conference call. "Add Job" and "Add Education" required more effort as they had to be their own entities and would share a many:1 relationship with each User Page entity.
Last but not least, as the weekend approached I could not access any of the "appspot.com" web pages, especially my own instance. Hence, I was not able to upload and test my latest changes on the live instance. I tried to go through a proxy, but always got stuck after the "Google Account Login" as it would not redirect to Melange after login. However, this is fine now and I am able to access my instance successfully and will be uploading the latest to my instance soon and sending a mail to the dev list so that everyone can try creating their own user pages.
For this week, I will be working very hard to catch up with my schedule which says I should be working on Calendars feature already. I intend to wrap up User Page (minus images) by tonight so that I will get to start on Calendars from tomorrow(wednesday).
GSoC 2010 Melange Testing Project: Week 5 of the Coding Period
I have also added test cases for a couple of logic modules this week and am currently working on testing the views of sponsor, program and student. Sverre thought the test coverage is still low and suggests me to focus the modules with low coverage next week, e.g. do some tests on the models. So, I will move my focus on testing the models next week.
[0] http://code.google.com/p/soc/wiki/GettingStartedOnTesting
Document Editor: Week 5
Saturday, June 26, 2010
GSoC 2010 Data Seeder - Web Interface
One problem that's pretty obvious at first is the space management. For most useful models, there are a lot of properties which take up a lot of space, but only a few of them might actually be used. My solution for this would be to compact them into collapsible/foldable panels so that properties that are not useful and properties that have already been configured don't take up space. Expect this to change in the future.
The web interface currently produces a valid JSON configuration sheet, only including model and properties configuration (without references) and also has the ability to send it to the server backend, but that's it for now. If you want to take a look at the resulting JSON, there's a dump in the JavaScript debug console.
Stay tuned for more in the future!
Monday, June 21, 2010
GSoC 2010 Melange Testing Project: Week 4 of the Coding Period
One big thing for Melange next month is that each commit will be accompanied with tests. In order to contribute to the movement, I am preparing for a wiki page explaining the current testing environment (e.g. datastore), test runners (e.g. how to only run a single test case), available tools (e.g. pymox and Django test client), utilities (e.g. StuboutHelper), and so on.
Sunday, June 20, 2010
Document Editor: Week 4
To implement revision control for document I had to do the following stuff:
- Implement
Revision
,RevisionInfo
andRevisionContent
classes insoc.models.revision
module - Implement
Logic
class for revisions insoc.logic.models.revision
. It overridessoc.logic.models.base.Logic.updateOrCreateFromFields
and defines method to create new revision. - Change forms configuration in
soc.views.models.document.View
Friday, June 18, 2010
Week 4: Final touches to User Pages
I have created a dummy program,org,org_admin,mentor, a couple of students. I am still working on adding the "past projects" data for some of my dummy students and mentor roles so everyone can take a look soon.
I have enabled mentor sign up and student sign up currently. So everyone can sign up and meddle around with it. There are bound to be bugs turning up, please let me know if you find something weird happening. Also, suggestions and feedback is welcome.
I am facing a teeny weeny delay with the User tags and profile_picture uploads which will be integrated into my GAE over the weekend.
Over the weekend:
- wind up remaining functionality issues
- do some testing
- Start work on the Calendars
GSoC 2010 Data Seeder - Views
Sunday, June 13, 2010
GSoC 2010 Melange Testing Project: Week 3 of the Coding Period
After solving these problems, I started to do view tests for soc.views.models.user using Django test client. I have almost finished it. Yesterday, I pushed the code into my online clone. Today, I asked Sverre to have a quick look to see if it is alright and he was satisfied with it. Though I am still behind my original schedule, I am confident that I can catch up soon. This is because I have solved all major obstructions and have finished adding tests for one logic (base) and one view (user) so that I can follow similar patterns to add tests for other logic and views very quickly.
This week, I also came across the trace module of python when I tried to find another problem I met. It can be used either in command line with python -m option or in your program. This module save you time to code a call back function for sys.settrace by offering some common functions. One useful function is to trace the execution flow of your program. It traces every statement, so be aware the output could be quite large. For example, the output of tracing a single statement of Django test client in Melange testing environment is more than 100MB. Another disadvantage is that the output only shows the module name without package path which could confuse you when you have many modules with the same name or you have a big project and do not know the package of every module. Another useful function is to trace calls. The output of this one is quite small compared with the first function and also has full package path. This function, however, is not perfect either. The problem is that the calling functions are ordered by their module name rather than by their calling order which is arguably more useful. And you have no options to change the order. Besides, you can only use it in command line.
Document Editor: Week 3
soc.models.work.Work
, but found out that Work
is also the base class for Quiz
, Proposal
, Documentation
, Question
and Survey
. Daniel also proposed to implement revisions as three different models. That's why I decided to leave Work
for models that doesn't support revisions and implement separate revision-related models.Friday, June 11, 2010
Coding Week 3
To have a user page, all users must have role assigned to them such as student,mentor,org_admin or program_admin. Only then do they get the option to Create a User Page on their sidebar. On the current instance, all users can Register as Student and then go ahead to create the User Pages.
However, there are still some things left to wind up with regards to User Pages, before I move onto extensive testing of this feature and then move on Calendars, which I have to start this week according to my timeline!
Things left to wind up:
- listing all User Pages
- Pulling present/past project data for student/mentors/org_admins
- getting images api to upload profile picture(currently using blobstore to upload, but the picture doesn't seem to show up)
- polishing CSS and layout of User pages
- Finish up with User Pages feature and start on testing.
- Start coding work on Calendars
Sunday, June 6, 2010
GSoC 2010 Melange Testing Project: Week 2 of the Coding Period
As I mentioned in my project proposal, I want to use Django test client which acts as a dummy Web browser to test views of Melange because of its ease of use and good integration with Django (no surprise since it was developed by the Django team). So, I first tried to get Django test client working.
After many attempts, however, I still could not make it work. Then, I found that I could not even run Melange locally suddenly due to the error (google.appengine.api.yaml_errors.EmptyConfigurationFile). I first tired to solve the problem by checking the tracktrace and code. Unfortunately, however, I could not find the problem. I thought that I might have accidentally changed or removed some important files. So, I rebuilt my local Melange but it still did not work. I also tried to re-clone and rebuild another Melange, but it was still in a vain. At that time, I realized that I had to fall back on my last resort, asking my mentor Sverre :-) . Awesomely, Sverre found that the problem was due to the corrupted .appcfg_nag file and he then solved the problem by removing it.
After this problem was solved, I tried the test client again. However, it still did not work. So, I asked Sverre again and found that it is because I had used the trailing slash at the end of the url following Django's tradition while Melange uses a url pattern without the trailing slash. Finally, Django test client works!!! Hope I had asked Sverre earlier :-).
Because of these problems I encountered, I have not finished this week's work as planned. Fortunately, however, I have got Django test client working. In the next week, I will try to speed up my work, finish this week's work as soon as possible and then start next week's work load.
Saturday, June 5, 2010
GSoC 2010 Data Seeder - Data providers
Friday, June 4, 2010
Coding Week 2
I have written the View and templates for the User Page with most of the functions such as "view_page", "edit_userpage", "create_userpage", "view_calendar" etc.
The prototype of the User Pages, Calendars up on my GAE, plus I have created some forms using Melange's inbuilt forms framework for editing data in the User Pages using the base.py View methods such as create, edit, editPost, editGet, etc.
There are some issues with the creation/saving of the forms and entity data which still need to be resolved. Aiming to resolve it before the weekend is over.
Finally, I need to incorporate the ListView for User Page entities using the list functions in Melange's base.py View framework.
Next week:
- I should have completed User Page functionality, and should have my code reviewed by my mentor, before pushing the changes to my clone.
- I should update project wiki with a complete timeline, taking into account my current progress on the project.
- I should start working on the Calendars feature.
Sunday, May 30, 2010
New Document Editor. First week of coding.
- Add fields that store revision information to the existing models and convert the whole bunch of existing documents.
- Create model that stores information about revisions and link existing entities to it.
Saturday, May 29, 2010
GSoC 2010 Data Seeder - First week of coding
Friday, May 28, 2010
GSoC 2010 Melange Testing Project: Week 1 of the Coding Period
In this week, I also came across a nice book titled Programming Google App Engine from Dan Sanderson who has excellently explained the difference between GAE runtime environment and traditional web hosting or self-managed servers, the difference between GAE datastore and traditional relational databases, and pointed out the special consideration and strategies for building a scalable, responsive and optimized app upon GAE due to the difference. In addition, the book also covers basic things about GAE, e.g. how to set it up and how to build an app step by step as well as more advanced tools, e.g. the URL Fetch service, the Mail service and the XMPP service. So, it is highly recommonded for both beginners and intermediate users who want to make best use of GAE.
Week 4: Code-base and Coding
This of course, sets me behind time with regards to my timeline :-(
However, I have decided to put in extra time and work extra hard this weekend and next week to strive and catch up with my User Page feature so that by my next post, I will have progressed to having a better, working User Page feature :-).
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
Friday, May 7, 2010
GSoC 2010 : Week 1(Community Bonding)
My first week as a GSoC student for Melange has gone by :-). I had the first few meetings with my mentor (Madhusudan) and am right now feeling very excited about my project. Here is a short summary of the week and updates on my GSoC project:
I had a couple of meetings with my mentor where we discussed about my project design and other high-level details as well as some technical stuff. Here is a brief overview:
About my Project:
To develop and integrate a social features module into the current soc framework. The purpose of the module is to help users participating in the programs (such as GSoC) to get to interact and find out more about their fellow GSoC'ers and where they are from, what their project is about and anything else which they want to share with the rest of the community such as events they are organizing or would like to attend etc.
More Specifically:
As of now, there are two main features we have decided on at this stage:
- Google Maps + Calendar
This feature allows users to find on a global map users, events, meets etc. based on location (hopefully reducing the quantity of "i-am-from" emails on gsoc-students-mailing list), organization, type of project etc. The Calendars will be used to show mainly details of events and meetings occurring within a certain date range for a certain organization etc. - User Pages
Once you locate users on the global map mentioned above, then more information can be found about them through their user pages. Users can use this page to share their personal/professional profiles, details and updates on their projects, their blog feeds.
Venturing into the Melange code-base...
To get started on the task of getting to know the code, my mentor suggested I could take up an issue and fix it. So I asked the team for the most suitable one and took up one (issue 890). After a good amount of trudging around in the code (and some tips from my mentor :-) ), I am on the verge of fixing it! And it has definitely helped me to get familiar with the architecture and code.
In the coming week:
- Work on a more formal specification of the project design, features and work flow (to be added to wiki) and frameworks, APIs to be used.
- Fix another bug (issue 884)
- Start thinking about actual implementation details (idea of how the code might be structured etc.)
- More meetings with my mentor :)