Jun 01 2017
Jun 01

Did you know Drupal was accepted into Google Summer of Code 2017 and that Drupal selected 8 projects? In other words, Google is funding 8 people to contribute to Drupal for 10 weeks worth ~$40,000 USD (thank you Google!). Congratulations to selected students who collectively became one of the top 20 contributing organizations on drupal.org (list @ https://www.drupal.org/organizations). Proud to note that all GSoC 2017 students have already become core contributors!

Majority of projects are focused on work related to Drupal 8 contributed modules. Drupal's students are all from Indian except one student from the UK, we currently have 15 mentors from 10 countries with over 100 years of experience on drupal.org. As always, we're excited about this summer and we hope community members will provide an extra helping hand if you see students in issue queues. GSoC runs from May 30th through August 21st 2017. Learn more about our projects below.

Project: A Module for client-side File encryption to implement a zero-knowledge system
Student: Tameesh Biswas “tameeshb” (India)
Mentors: Colan Schwartz “colan” (Canada), Adam Bergstein “nerdstein” (USA), Talha Paracha “talhaparacha” (Pakistan)

Project: Adding support for Theleague oauth and new implementers for social auth and social post
Student: Himanshu Dixit “himanshu-dixit” (India)
Mentors: Getulio Sánchez “gvso” (Paraguay), Daniel Harris “dahacouk” (UK)

Project: Client-side public-key encryption module for Drupal 8
Student: Marcin Czarnecki “marncz” (UK)
Mentors: Colan Schwartz “colan” (Canada), Adam Bergstein “nerdstein” (USA), Talha Paracha “talhaparacha” (Pakistan)

Project: Complete porting of Examples for Developers Sub-modules to D8
Student: Abhishek Lal “AbhishekLal” (India)
Mentors:  Navneet Singh “navneet0693” (India), Vaibhav Jain “vaibhavjain” (India)

Project: Creating a great geospatial experience in Drupal 8 by porting and enhancing the Search_Api_Location module
Student: Dibyajyoti Panda “dbjpanda” (India)
Mentors: Nick Veenhof “Nick_vh” (Belgium), Thomas Seidl “drunken monkey” (Austria), Joris Vercamen “borisson_” (Belgium)

Project: Port "Vote up/down" module to Drupal 8
Student: Sudhanshu Gautam “sudhanshug” (India)
Mentors: Marco Villegas “marvil07” (Peru), Palash Vijay “palashvijay4O” (India)

Project: Integrate Google Cloud Machine Learning Engine to Drupal 8
Student: boby aloysius johnson “boaloysius” (India)
Mentors: Jingsheng Wang “skyredwang” (China), Naveen Valecha “naveenvalecha” (India)

Project: Port Uc wishlist module to Drupal 8
Student: Chiranjeeb Mahanta “chiranjeeb2410” (India)
Mentors: Naveen Valecha “naveenvalecha” (India)

Find us on IRC in #drupal-google to join the fun. Interested in mentoring or have questions about this initiative? Contact Drupal's Organization Admin "Slurpee" (USA) with any questions.

Jul 06 2016
Jul 06

Google Summer of Code (GSoC) is into the next phase of coding after the mid-Term evaluations which got over by June 27th. This also reminds students to speed up the coding activities to complete the projects within the schedules provided in the proposal.

I am porting Search Configuration module to Drupal 8 as part of this year’s summer of code. GSoC is definitely turning out to be a venue for the young students from universities around the world to work on real-world projects under the experience of well-known developers, learning new technologies, making use of version control systems, with regular meetings and finally building up a software which is going to help a large section of the society.

I blog regularly, sharing my project progress. If you would like to have a glimpse of my past activities on this port, please visit this link.

Drupal 8 has introduced the concept of Html twigs in place of the PHP templates. So, the PHP template files have to be now ported to the Html environment. The .tpl.php template file is replaced by the .html.twig file for the module templates.  Templates are simply text files which can give outputs in Html, Latex, CSV or XML formats.

To print some data, we usually take the service of echo statements in PHP.  The print statements are replaced by {{ }} in Html twigs.

<?php echo t(‘Let’s start the process.’); ?>

is replaced by:

{{ ‘Le’s start the process’|t }}

The variable names have to be converted to simple names. For instance,

$page[‘title’]

becomes

{{  title }}

The PHP logics have to be replaced by {% %} syntax. This is applicable to all the logical statements.

<?php if ($page[‘title]): ?>

…..

<?php endif; ?>

is transformed as:

{% if form %}

……

{% endif %}

Also, the variables are replaced by simple names.

<?php if ($logo): ?>

is transformed as:

{% if logo %}

These were some of the basic transformations to get started into created the HTML twigs.The use of the Html twigs has made the templates look very simple and easily understandable. It is really easy to get the templates converted to the Html twigs. This is always one of the crucial requirements of porting modules from Drupal 7 to Drupal 8.

Stay tuned for further updates on this port process.

Jun 30 2016
Jun 30

I feel really excited to have cleared the mid-Term requirement for my project in Google Summer of Code (GSoC). The results of the mid-Term evaluations were announced June 28, 00:30 IST. This was the evaluation for the first phase of GSoC. In this evaluation process, set up by GSoC organisers, students and mentors have to share their feedback about the current progress of the project. Mentors need to give a pass/ fail grade. Students can continue coding once they clear the evaluations successfully.

I have been working on Porting Search Configuration module to Drupal 8. Please go through my previous posts if you would like to have a look into the past activities in this port process.

Last week I worked on testing some of the units of this module using the Php unit tests framework. Testing is an important process when it comes to any software development process. It plays a crucial role for any software. It helps us to understand the improve our software to the required level by making use of various test cases. We input various values and check whether the tests are passed according to the requirement. If any condition fails to our expectations, we need to make the required changes to suit the application needs.

Php unit tests are generally used to test some units of an application. To check whether the functions implemented gives the expected output, behaviour of the functions in various test cases, giving different types of arguments as inputs to check the errors or flaws for improving the application.

We need to install the Php unit for this process. You could follow this documentation for this process. Furthermore, they give a detailed analysis of the Php Unit Tests.

Once the installation is completed, we can start writing the unit tests for the functionalities we have implemented. The tests are generally stored in the tests/src/Unit directory of the module. The name of the unit test file will be of the format xyzTest.php. All tests are suffixed by ‘Test’. ‘xyz’ can be replaced by the functionality you are going to test.

The following is a simple test to check the sum of two numbers: sumTest.php

<?php
class SampleTest extends PHPUnit_Framework_TestCase
{
  public function testSum()
  {
    $this->assertEquals(2+2, 4);
  }
}
?>

As mentioned in this above code snippet, we need to create a class, with class name suffixed by ‘Test’ which is an extension of PHPUnit_Framework_TestCase. Now, we need to write the tests inside as member functions. The functions starting with the name test are executed. Here we are checking the sum of the two numbers. This is a very simple demonstration.

The tests are run by using the command PHPUnit. i.e,

$ phpunit tests/src/Unit/sumTest.php

The output generated on running the above test is:

PHPUnit 5.4.6 by Sebastian Bergmann and contributors.

. 1 / 1 (100%)

Time: 252 ms, Memory: 13.25MB

OK (1 test, 1 assertion)

Stay tuned for future updates on this module port.

Jun 21 2016
Jun 21

Google Summer of Code (GSoC), has entered into the mid-Term evaluation stage. This is a 1 week period from 21- 27 June, were students and mentors present the progress of their projects. Based on the reports submitted, students are made pass/ fail.

I have been working on porting Search Configuration to Drupal 8 in the past few weeks. If you would like to have a quick glimpse of my past activities on this port process, please go through these posts.

last week, I could learn some Drupal concepts which were really helpful for my project. In the previous versions of Drupal, the role permissions were stored in a role_permissions table in the Database. But now, in Drupal 8, the role permissions are directly stored in the role configuration entity.

So, as described above, in D7 and its preceding versions, role permissions were stored in a role_permissions database which had the role Id and the corresponding permissions. The permissions distributed to a role was retrieved in D7 using:

$permissions = role->getPermissions();

But, in D8, this is done by the

$permissions = role->getPermissions();

Another instance is that, to grant certain permissions to roles.

In D7 it was controlled by,

user_role_grant_permissions($rid, array(‘ access content’));

The role configuration entity remodels this functionality in D8 to:

$role->grantPermission(‘ access content’);

In connection with the term permissions, the most important aspect in Drupal is a hook: hook_permissions(). This hook, obviously as you might have guessed, distributes the permissions to various users; decides whether a particular user should be allowed to access a page or a content, granting and restricting the access.

This hook has been replaced in Drupal 8 by a module.permissions.yml file. This file contains the permissions and its specifications. We can write a driver function in a php file to add the dynamic permissions. This can be achieved by making a driver class in the php file and adding the behaviour of the permission we need in the member functions of the class. We also have to link this PHP file with our yml file to keep it active. This is done by adding a callback function in the yml file which references this php file.

To display special characters in a plain text string for display as HTML format, Drupal earlier versions used the function check_plain.  This had the general syntax:

check_plain($text); // where $text was the string to be processed.

This function has got deprecated in Drupal 8. This has been replaced by the \Drupal\Compoent\Utility\Html::escape($text).

Jun 14 2016
Jun 14

Google Summer of Code (GSoC’ 16) is entering into the mid-Term evaluation stage. I have been working on the porting search configuration module for Drupal for the past three weeks.

Search configuration module helps to configure the search functionality in Drupal. This is really an important feature when it comes to a content management system like Drupal. I am almost mid-way in the port process as indicated in the timeline of Google Summer of Code.

It is really a great feeling to learn the Drupal concepts this summer. I would like to take this opportunity to share with you some key aspects I had to deal with in the past week.

Once a module is installed and later on if some changes are amended, we need not rewrite the Drupal code. Instead, Drupal gives up the option to make use of a hook, function hook_update_N which helps us to write the update needed and the database schema gets updated accordingly. Currently, since my module is just going into its first release after this port process, I need not write an update function. I just have to make this update in connection with the earlier code. The same hook works for both Drupal 7 and 8.

Another feature is the hook_node_insert, this hook is invoked to insert a new node into the database. So, here we are writing into the database a drupal record. In Drupal 7, this insertion was done by the drupal_write_record(). But,in D8, it has been replaced by the merge query and the entity API. The merge queries support the insert and update options to the database.

In connection with the nodes, another hook function is the hook_node_update. This functionality updates the node contents which has been inserted into the Drupal record (database). This takes in an argument, obviously,  the node has to be passed, for which the updating is intended.

The hook_uninstall gets invoked as the name suggests, in the uninstall process of the modules. The hook removes the variable used by the module so as to free the memory. It also modifies the existing tables if required. The D7 version of Drupal used the  variable_del for removing the variables.

For instance,

variable_del($nameOfVariable);

// Drupal 7 code

This has been replaced by the delete() of the configuration API.

i.e,

\Drupal::service('config.factory')->getEditable('search_config.settings')->delete();

search_config.settings is the default configuration file.

I will post the updates on this port process regularly. Please wait for the future posts.

May 31 2016
May 31

The Google Summer of Code 2016 (GSoC’ 16) coding period kicked off from last week, May 23rd. Each selected student had a one-month long community bonding period with their respective organisation. I had written my community bonding experience with Drupal in my previous blog post.

I am working on porting search configuration module to Drupal 8 under the mentorship of Naveen Valecha, Neetu Morwani and Karthik Kumar. I learnt the basics of Drupal, implementing Drupal forms and other fundamentals required for my project in the initial phase.

I was really thrilled to get into the coding rounds of GSoc’ 16. I was successful in making a good progress in the initial week. I could start the coding phase effectively by porting some important features. I had regular discussions with my mentors throughout the previous week. They were really helpful in guiding me in the proper way by reviewing the code and sharing their valuable feedback.

Here I would like to share with you some of the changes which I have come across in Drupal 8 from its preceding versions which I have worked out in the previous week for my project.

  • In D8, the .info files are replace by .info.yml files. The .info files contained the basic information regarding the respective module. The .info.yml generally contains the following attributes of the module:
    • name
    • description
    • core
  • The Drupal 7 variables have been converted to the Drupal 8 state system. The previous versions had variable_get and variable_set functions to store variables and their default configurations. They were used to store and retrieve data. They are presently removed in D8.
  • Moreover, we need to store the default configuration of the variables. While developing a new module, it comes in module/config/schema/ will contain the default variable configurations.
    • The default configuration is the default property of the system with its type and the corresponding default value linked to it.
  • Another transformation that has taken place is that the global $user has been substituted by the current_user service.
    • So, the previous definition,
      • global $user;
    • is replaced by
      • $user = \Drupal::currentUser();

These were some of the important concepts that I had to deal with in the previous week for the porting process. It was really a wonderful learning time for me. Hope to enjoy the coming weeks to learning new concepts and implementing it for my porting.

Hope all the selected students had a wonderful start to their coding period. All the best for the coming weeks.

Apr 25 2016
Apr 25

Did you know Drupal was accepted into Google Summer of Code 2016 and that 11 Drupal projects were accepted? In other words, Google is funding 11 people to contribute to Drupal for 10 weeks worth a total of $60,500 USD (thank you Google!). Congratulations to selected students who are collectively credited on more than 100 issues fixed in the past 3 months on drupal.org. Coding starts May 23rd and ends August 23rd.

Majority of projects are focused on work related to Drupal 8 contributed modules. Drupal's students are from 4 different continents and we currently have 26 mentors from 12 countries with over 150 years of experience on drupal.org. As always, we're excited about this summer and we hope community members will provide an extra helping hand if you see students in queues. Learn more about our projects below.

Project: Social API
Student: Getulio Sánchez "gvso" (Paraguay).
Mentors dahacouk (UK), e0ipso (Spain), pcambra (Spain).

Project: Solving content conflicts with merge algorithms in Drupal 8
Student: Rakesh Verma "rakesh_verma" (India).
Mentors: dixon (Sweden), timmillwood (UK), jeqq (Moldova).

Project: Port Mailhandler to Drupal 8
Student: Milos Bovan "mbovan" (Serbia).
Mentors: miro_dietiker (Switzerland), Primsi (Slovenia).

Project: CKEditor plugins for TMGMT
Student: Saša Nikolič "sasanikolic" (Slovenia)
Mentors: miro_dietiker (Switzerland), Berdir (Switzerland).

Project: Port search configuration module to Drupal 8
Student: Joyce George "joyceg" (India)
Mentors: naveenvalech (India), heykarthikwithu (India), neetu (India).

Project: Integrate Google Cloud Vision API to Drupal 8
Student: Arpit Jalan "ajalan065" (India)
Mentors: naveenvalech (India), penyaskito (Spain), eugene_ilyin (Russia).

Project: Port Google Login Authenticator To Drupal 8
Student: Mehul Gupta "therealssj" (India)
Mentors: nerdstein (USA), attiks (Belgium).

Project: Media Solution Module
Student: Vijay Nandwani "royal121" (India)
Mentors: slashrsm (Slovenia), paranojik (Slovenia).

Project: Web Component-ize Drupal 8
Student: Tianlei Zheng "ztl8702" (Australia)
Mentors: skyredwang (China), Wimleers (Belgium).

Project: Add Password-based Public-key Encryption to Drupal 8
Student: Talha Paracha "talhaparacha" (Pakistan)
Mentors: nerdstein (USA), colan (Canada), jibran (Pakistan).

Project: Porting Comment alter module to Drupal 8
Student: Anchal Pandey "anchal29" (India)
Mentors: Boobaa (Hungary), czigor (Hungary).

Final call for mentors. Are you interested in helping any of the projects above? Contact Slurpee on drupal.org, find us in #drupal-google on Freenode, and join us at https://groups.drupal.org/google-summer-code.

A special "Thank you" goes out to Drupalize.me for providing all of our students a free account.

Feb 12 2015
Feb 12
pukarthapa53's picture

There is a lot of money in it, and the best part is that you don’t need any qualifications, prior experience or specialised skills. All you need is a few spare hours per day, a computer with an internet connection.click here if u want globalwebworkers.com

Randalltbartel's picture

Buying an essay from online is very difficult process due to having some scamming service in the online. So first of all we have to understand the service properly for ordering our essay in the online service. The education essay writing task is bit difficult to complete from the students side. Even the evaluation is very different in the academics. The essay writing evaluation on academy must be well organized, and student’s thoughts must circulation rationally from one point to the next. So students should be mentioned properly according to their self-discipline in writing. So these things should be followed by the service writers. Present language and opinions on the subject in an impartial and extensive way. Writing a self essay requires the huge amount of knowledge and skill sets. The top and best essay writing service will always keep good format and high-quality essay for the students. Therefore you can get a tension free essay from this best online writing service. Their professional writers are good enough to complete any type of educational essay for students. So struggling students can make use of this service for completing their academical essay writing tasks. This website is giving quality essay in a low cost.
http://www.essayscouncil.com

Sep 16 2014
Sep 16
penyaskito's picture

Congratulations to all participants :))

--
Christian López Espínola (@penyaskito)

surcap's picture

Congratulations to you

shorelinegtx's picture

Congrats to all the participants. Must have been a fantastic experience.

arya88bimo's picture

Congratulations to all of you..

varunity's picture

Hey congrats! Good job everyone!

rachit_gupta's picture

Congratulations to all of you..

Apr 19 2009
Apr 19
Share this

At the Open Media Camp in Denver yesterday, Kevin Reynen (kreynen) got things off to a great start with Overview of Metadata Standards for Video - Why doesn't it work like a Library? We discussed the difficulties of even agreeing on a standard set of genres for tagging video, from how to decide what genres to include in a taxonomy to the user interface in presenting those options to editors. (For instance, he said that his experience with the standards used at PEGMedia.org is that editors often use the Action genre by default, which is listed first in the listing, rather than scrolling through the hierarchy of available choices.)

Everything is Miscellaneous

I was reminded during this discussion of a book I read last summer, Everything is Miscellaneous: The Power of the New Digital Disorder, by David Weinberger. I mentioned the book, and got a few nods and a few shakes of the head. Seems quite a few people have looked at these issues from a lot of directions...

Kevin mentioned a meeting he facilitated with a group of librarians, whom he hoped would have a magic bullet for the question. After presenting the dillemma, he turned it to them, but got answers ranging from maintaining a simple list to "use the Library of Congress's classification".

I liked David Weinberger's approach in Everything is Miscellaneous. He discusses the inherent difficulties in classifying information, and the centuries-long struggles to achieve the perfect classification. This history has ranged from the revolutionary idea in the middle ages of ordering books alphabetically, to the Library of Congress's flexible classification, to the Encyclopedia Britannica's approach of using editors to decide what information is worthy enough to even classify, to Melvil Dewey's entrepreneurial and astoundingly successful attempt to force public libraries to adopt his Christian-biased taxonomy (which gives 9% of the entire taxonomy to Christianity, 0.1% to Islam, and a mere 0.01%, at the austere classification of 294.3, to represent Buddhist literature from over 2000 years of a large portion of the world's population).

Weinberger goes on to show how there are basically three orders of information. The first order is atoms, the physical world, and is the challenge faced by brick and mortar store fronts, such as Best Buy needing to determine what items to place at the front of the store, and to arrange things in such a way as to make it relatively easy to find that particular ink cartridge for your printer (but still be tempted to buy that worthless Microsoft software placed on the way back to the cash register).

The second order of information is likened to library card catalogs. This is also Drupal's basic core taxonomy, where you create and populate a vocabulary. This is the focal point of Kevin's discussion, where video librarians struggle to agree on a set of genres to offer their editors. This is merely the latest battle in an old political war, that sees its roots in medieval universities and has had no good resolution. Whomever can force their system of classification on the world can control the information, and that's a dangerous power, whether it's a mainstream newspaper deciding to highlight a slanted story on its front page while not even publishing an article that might be detrimental to one of its advertisers, or whether it's Blockbuster fooling the public into believing that all movies can be neatly classified into Action, Comedy, Drama, Family, Horror, and Foreign.

The third order of metadata is what the Internet has brought into being, exemplified by Drupal's folksonomy. This allows everyone to classify their own information, and compare that with others'. Free-tagging, whether it's a comma-separated list, or YouTube's foolhardy space-separated list (what's the point of a full taxonomy term for "the"?). This idea is also at the root of Amazon.com's recommended buys, and for the Google Summer of Code's
Making Drupal Smart: The Recommender Bundle
.

I've decided that I'll remain neutral in this particular battle for control of video genres. However, I also recognize the desperate need for a sensible and consistent system of storing file metadata. This morning, during the Media Sprint, one of our first orders of business will be to implement a Meta-Data Plan and Structure for Drupal's Media module. This will create a simple table of key/value pairs by fid, and allow implementing modules to decide how to fill those pairs. This will allow any meta data to be easily exposed, such as with Views or in an XSPF play list, and also allow them to be consistently presented to editors, so that any video, whether a local video from a cell phone, a flash video, or a stream from YouTube, can be tagged meaningfully, regardless of the final editorial decisions.

May 02 2006
May 02

Google accepts studet applications for the summer of code 2006. Drupal has interesting projects for you to choose from. If you are a student anywhere, interested in php and/or drupal development, want to spend your summer coding and earning some money, apply. You might get accepted. If none of the proposed projects interests you, you can suggest your own. Come on, be brave. You can get a rock-star status in a part of the net.

About Drupal Sun

Drupal Sun is an Evolving Web project. It allows you to:

  • Do full-text search on all the articles in Drupal Planet (thanks to Apache Solr)
  • Facet based on tags, author, or feed
  • Flip through articles quickly (with j/k or arrow keys) to find what you're interested in
  • View the entire article text inline, or in the context of the site where it was created

See the blog post at Evolving Web

Evolving Web