GSOC 2007
10 years ago Posted in: Project 0

To be helpful to anyone interested in Summer of Code () projects or the project I did last year (uLink – Autocompletion of links), I would like to share the experience here. Along with I applied to another project, but I got selected for , perhaps due to the questions asked on my proposal and my prompt reply to  them.

Original Proposal

Synopsis: Although Drupal is self-sufficient for any corporate site development, having to search and find the internal references while preparing documents is a drawback in using it for a site full of articles and documents like Wikipedia. My project solves that by looking for key-terms in the text, and listing them categorized by the relevant key terms. This enables the user to maintain the line of thought undistracted.

Benefits to Community: I believe this will make Drupal more user-friendly, especially document-writer-friendly and reduces the time spent in searching for internal references and let the user worry about the content than the connections. The project can be tested for its success based on the fulfillment of the requirements described above, compatibility with most of the browsers and the adoption of the service by the Drupal community, which I never doubt.

Description: Users’ activity (key presses) will be listened through java script and when his activity level drops below a particular threshold value, the module will be called. This will also be called when s/he clicks the submit button. Other possible modes of triggering can also be added. The modules scan the text for keywords, and search for them using drupals searching api. However, that can be restricted to extensive searches and only when the user prefers to have a quick search. In other times, a light weight search (thanks Mark Janssen) can be done for titles (for nodes – as Gerhard Killesreiter says). Results will be displayed nicely categorized by the relevant keywords which, in return, will be sorted in the order they appear in the text. This enables the user to pick the terms for which he prefers to add the links, quickly and ordered. The communication with the server to obtain search results can be done through hidden IFrames or AHAH, which ensures no interruptions in the users thoughts. The relevant links will be shown in layer window (something similar to the ribbon-window in Office2007) which will be made visible smoothly to provide aesthetic beauty. Here he can apply the link to the keyword by clicking that link. Once the user has selected and applied a link for a particular word that word will be shown differently in color all the words appearing below with the word will be made the same. Search results will be cached locally to speedup searches. A live time of 10 minutes will be appropriate to the cache. Also editing the links option will be provided. By clicking the keywords he can open another layer where he can modify the links manually.

Deliverables: Modules for monitoring the activity, searching for the links apply the links, and preview them.

Areas of concern: + Getting the search results unnoticed, i.e. having a balance in the search and do it collectively in the background. + User-friendliness in applying the links and modifying them later.

Timeframe: + First 3-4 weeks will be used to model the solution and based on the mentor’s suggestion further improvements and modifications can be done. Also it will allow me to get my self more familiar with the core of Drupal. + Second 3-4 weeks will be used to code the solution and document them. + Third 1- 2 weeks will be used to test the solution possibly with the help of Drupal community. + Final 1-2 weeks are left to cover any unforeseeable delays and to make any improvements, if there will be any.

Suggestions made by Dan Degeest

I like the premise of this idea. Cross linking to other articles in Drupal is hard to do without adding on wiki type modules. It would be very nice to be able to do some type of wiki style linking in content text area such as [[me|user/34343]] or [[this article|node/132332]] which would be filtered into the actual links. This is similar in someway to what the inline module ( does for the node file attachments only more generalized. In fact, this module, done well, could theoretically handle all inline content links regardless of the type. An extensible input filter that does this could be the first step. Here is an idea how this could work. The syntax could be something like other wiki formats [[Text|href|Attributes]] The filter could be made extensible by implementing one or more module hooks that allow other modules to customize how the requested link is rendered. For example, consider, a link to a node. [[A node|node/2]] The input filter could look at the href “node/2” and determine that this is an inline link to node content. The default behavior could be to just create a anchor tag link to “node/2” but the filter could also call a module hook such as module_invoke_all(‘inline_node_link’, $linkinfo)and any module implementing this hook could provide a different rendering of this link. Perhaps it would return an image tag and link or maybe an object tag for a quicktime player. It would depend on the node type of content being inlined (blog, page, custom, etc). In the same way the href could be looked at to determine if a link to a user account is being inlined, link to a file, external link, link to a search, and so on. Module hooks could be developed as needed to allow customization The next step could be implementing the search/autocomplete feature to help in finding the site content you want to link to.

This is more of your original proposal but I really think that doing #1 right gives you a really strong starting point for step 2. As you’ve seen in the comments there is some concern about search requests, that doesn’t mean its not worth trying and/or exploring alternatives such as title only search for nodes. Another option is to not search on each keystroke which is a more google suggest approach and instead doing a search in response triggered by the user typing in the inline link format. For example the user types[[bobs account|user/at this point the javascript triggers the for a user as the person completes the inline link[[bobs account|user/b -> user search [[bobs account|user/bo -> user search [[bobs account|user/bob1 -> user search [[bobs account|user/bob12 -> user search as this is done the matches are displayed in a float layer above where you are typing and can be selected to complete the autocomplete. You could do the same type of thing for other link types [[bobs account|node/b -> node (keyword and/or title) search [[bobs account|file/b -> file search Step 3 you could offer some type of inactivity or on demand (user click) search that is similar to what you detailed in your proposal that scans the entire content text looking for keywords to search for to find unsolicited related content that the author could consider including. + a very robust and extensible inline link input filter + smart, context sensitive link auto complete for various link types (nodes, users, files, etc.) + full text analysis and relevant content search on demand or during inactivity.

Experience with the receipt of Google payments

The first payment of three for Google Summer of Code 2007 was released on 28th May and I received it today (28th May 2007) through Western Union (WU) agent located at NDB bank Mt Lavinia at the exchange rate of 107.8 LKR per USD. From 28th of May, I have been in touch with the dashboard and student mailing list for the updates, and when I came to know that I was sent a payment (yesterday) I tried five WU agents (including one direct MBL centre) and was refused the payment without the MTCN although I showed them a print out of WU official site saying that MTCN is optional. I posted a message to MTCN and google was amazingly quick. I got the number today morning; I went to a public bank (Peoples bank – Ratmalana) where I was annoyed by their service and I went to a private bank where I was able to get the cash within few minutes.

Western Union (WU) WU has become a common way of money transfer through out the world, especially by relatives and friends in developed countries to the people in developing countries. Although it is suitable for medium / small size businesses the nature of transfer, i.e. being anonymous, unnecessary of account holdings and immediate cash payment (without lengthy checking) made it less common, and many people prefer wire transfer.

Concerns with WU Payments are made at home currency at the exchange rate determined by WU (which is significantly less than what is prevailing at the time for currency notes). I lost around 800 LKR (about 7 USD) in the unfavorable exchange rate. Through wire transfer we have an option of transferring the amount to an NRFC (non resident foreign currency account) or RFC (resident foreign currency account) and change it to the home currency at the desirable time.

Involvement of agents: (human) in the process of validation makes this less user friendly in terms of various issues

MTCN: the number is an option parameter, although it is the primary key, the operator is provided with an interface searchable with sender’s and receiver’s names, however no operator is willing to do. I couldn’t get the money without MTCN, at all five centers I approached. They weren’t even ready to give a try.

Unfriendly operators: Today with MTCN I went to a public bank to get the money. After waiting in the queue for long time, they asked me to bring a photocopy of my ID (actually it is my duty to provide the National Identity card, however it is they who have to take a photocopy for their record if they want) which I denied to do assertively and went to a private bank, where I was able to get the money within few minutes after providing MTCN. This is not the first time I got annoyed at a state bank, and I no longer have any accounts in any state banks.


Related Posts

Leave a Reply