Content Personalization and Targeting Module
Yuki Awano
Short description: This module allows users to personalize their content easily. Users define audience types with DSL and users can use audience types in the template to personalize their content. Users can define audience type by location, in-bound keyword, in-site activity(keyword search, history), os, browser, device, etc. As far as I know, this module would become the first module that provides content personalization and targeting feature for a major CMS.
1. Name
Yuki Awano
2. Country
Japan
3. Email
y.a.unix@gmail.com
4. Skype or other IM
yaunix (skype)
5. (Optional) SilverStripe forum name and/or SilverStripe dev-list username.
Yuki Awano (SilverStripe Core Development)
6. What have you contributed to open source in the past?
I have not contributed to open source in the past.
This is the first time for me.
However I have participated Hackathons, Startup Weekend and other events.
In Android Dev Camp 2012, I wrote the sever part of this application.
7. What have you done with SilverStripe CMS and our framework before?
Truly speaking, I'm new to SilverStripe.
I have installed SilverStripe 2.4.7 and 3.0.0 beta 1 on my local environment, and walked through them.
When I used 3.0.0 beta 1 in Japanese environment, I found a bug that tinyMce is not displayed in Chrome and Firefox.
I inspected the problem, and I found the cause.
And I posted the details of the problem to the bug tracker. (http://open.silverstripe.org/ticket/7035#comment:4 , My name on the bug tracker is yaunix.)
8. How would you explain your knowledge of PHP, MySQL, HTML, CSS, and JavaScript?
I have created an application with CakePHP.
However it was a commercial and private application, and they are in Japanese.
So I'll explain my knowledge of PHP, MySQL, HTML, CSS, and Javascript, by the PHP Coding Test.
9. Are there points during the GSOC 2012 timeline that prevent you from being involved on a weekly basis? GSOC requires substantial time commitment, particularly between May 23 and August 22.
I have an exam of graduate school on early August. The examination of this year is not public currently. However it is around August 6th. Because I go to the graduate school of the same university, the exam is not so hard. I think preparation of the exam will take 7 to 10 days.
(Since I've already taken all courses that I need for the graduation, I do not have term-end examination.)
10. Do you have links to blogs, work, websites, or other resources that let us learn about you?
I have a blog, however it is in Japanese. (http://www.yaunix.com/)
So I'll provide a my profile on linkedin.
11. What project from our ideas page do you want to apply for? If you have your own idea, we’d love to hear it - explain here, with a link to any further resources, screenshots, etc, if you wish.
I want to apply for Content Personalisation and Targeting module.
I think this module is really exciting project.
Because, as far as I know, there is no major cms that provides content targeting and personalization feature.
I think content personalization is really useful for both users and creators.
I have discussed about this module at https://groups.google.com/forum/?hl=ja&fromgroups#!topic/silverstripe-dev/dIEJ7aYzWOo.
After the discussion, I decided to focus on the basis of content personalization module in GSoC 2012.
I am planning to implement this module as the below. (Of course, this is just my plan. I will change the implementation with discussion.)
Users define audience type with its DSL(Domain specific language) in preference page.
e.g.
QueriedByPants
+ InBoundSearchQueryKeyword : pants
NewYorker
+ Location: New York
Users can access the audience type from template.
<% if AudienceType == 'NewYorker' %>
..content for those who accesss from new york..
<% else_if AudienceType == 'QueriedByPants' %>
..content for those who came with keyword 'pants.'..
<% else %>
..content for a new comer..
<% end_if %>
I am planning to store all logs of access in a specified period.
When a user accesses to this site, a query is executed and this module will decide the audience type of a visitor.
By implementing in this way, users can change definitions of audience types as they want depending on their promotion plans or their business.
I know this implementation has a performance problem.
Caching audience type and using no-sql databases would be solutions for this problem.
However, they are not a basis of content personalization.
So this performance problem would be a future work.
For evaluating this module in the early time, in GSoC 2012, I will focus on the core of content personalization feature. The rules which defines audience types are implemented as loosely-coupled to the core. This module should be easily extendable and flexible. I am planning to finish the implementation of the DSL and core of content personalization before the mid term evaluation.
12. Are you okay for us to do an interview with you before, during, and after GSOC, so we can write about what you’re doing and thank you on our silverstripe.org blog?
Of course, okay.
13. Please complete the PHP Coding Test at http://www.silverstripe.org/php-coding-test/
(This requires you to write some PHP code, and send it to us.)
I've done the PHP Coding Test, and you can access to the site from the below URLs.
Souce code : http://phpcodetest.cms.am/zip/source.zip
phpmyadmin : http://ex2.s127.coreserver.jp/log/phpmyadmin/
(Username/password of phpmyadmin : ex2 / iCZN)
(Username/password of the database : ex2_pcodetest / pcodetest)
If there is anything unclear, please don't hesitate to let me know.
Best regards,
Yuki
