Road to GSoC 2016

This is a short story about my road to Google Summer of Code (GSoC) 2016. I didn’t know about GSoC until I attended an event that Stephanie and Cat, admins for the program, spoke at.

The event took place right before the GSoC student application deadline, so I had to act quickly. I researched the organizations and projects immediately after I got home from the event. I was nervous about choosing a project. So many projects and requirements!

After many hours, I finally decided to write a proposal for KDE’s Neverland Theme Builder. I still don’t think my proposal is good enough, but it was accepted.

GSoC didn’t take me as much time as I thought it would, but sometimes I still felt burnt out. During that time I read about mental illness and discovered Open Sourcing Mental Illness (OSMI). I think mental illness is a shadow part of the IT industry and we, as students, haven’t yet learned how to deal with the stress of real (paid) projects.

In the end I passed the final evaluation. Now I’m working with KDE on a new project!

Thanks to the Google Summer of Code I learned a lot. Thank you to the Google Open Source Team for hosting this program.

Gsoc 2016: Sum up

This blog post summarizes my summer working for Neverland Theme Builder project.

I think GSoC is a good experience which many students are looking for. I knew about GSoC 2016 late and I thought I wasnt accepted. But finally I made it here.

For me, NodeJs wasn’t new. I had used Node for some pet projects but Neverland was a different story. It was the first time I built a big app with Node and adopted many new technologies.

Actually Gsoc didnt take me a lot of time but sometimes I still feel burnt out for some reasons. I read a blog post of another Kde – Gsoc student and she also mentioned about the stressful and depression. I think it is shadow part of the IT industry. And we student havent learnt how to deal with it (stress) yet when it comes to real (paid) projects.

My mentor said: “IT is not the best for fighting depressions. All those countless hours in front of the screen, alone”. I think what he said is true and that why we need a better working condition caring about our mental health. Btw, he is really a good mentor and definitely a teacher. You can seek out for his help not only about IT. Highly recommend him for other Gsoc Students of Kde. You can ping him (neverendingo) on kde-www  :*

I hope I can pass this final😀

Thanks for reading

Gsoc 2016 Neverland #10

Hi. GsoC 2016 is going to end soon.

As I said in the previous post, I’ve just finished Drupal builder.

drupal

Now you can quickly build themes for drupal, mediawiki and wordpress from static html files.

I had a problem when working with drupal as well as some others is their documentation. I think it provides a lot of information but it isnt well structured. And I think it should have a tutorial about theming.

When I was working with drupal, its cache didnt clear even after I turned on development mode, disabled the twig template cache. I still had to go to admin and cleared the cache manually. I dont know it is a bug or default functionality.

I have to go to school from this week so I will try to clean code, write a blog post about my work, let my mentor check my work and finish GSoC 2016 early.

Thanks for reading.

Gsoc 2016 Neverland #8 #9

I spent almost a week to refactoring the code. I’m using ES6 syntax and it is supporting class inheritance. One of my concern is Javascript is prototype-based object oriented programming. I’m still not sure about using Class or Prototype inheritance in Neverland. I havent decided yet so there are still redundant parts in the code base.

For the last few days, I have been playing with Electron to see if I could build a desktop version of Neverland. I though it could be awesome if it could intergrate with Atom editor. Unfortunately I found this answer: https://discuss.atom.io/t/how-to-embed-the-editor-in-my-electron-app/25114/6

Another part of this project is writing document. I think every developer really want good documentation but a few can write well. And I know I’m not good too: https://community.kde.org/KDE.org/Neverland

Gsoc 2016 is going to the end. For these coming weeks, I will write Drupal theme builder, clean up the code base and improve the docs.

Thanks for reading.

 

Gsoc 2016 Neverland #7

I have finished a skin for Mediawiki:

Neverland   Neverland(1)

I dont feel it like a Mediawiki skin for some reasons. But it works.

When I was working with Mediawiki, I realized its source code isnt good. My mentor said:

hence i wanted you to see it🙂

But Wikipedia is one of the biggest websites in the world and it’s using Mediawiki.

There are some awkward moments when working with MW. Here is an example:

<ul>
<?php foreach ( $this->getPersonalTools() as $key => $item ): ?>
<?php echo $this->makeListItem( $key, $item); ?>
<?php endforeach; ?>
</ul>

Source (I modified a little bit)

It renders something like this:

<ul>
<li id="pt-userpage">
    <a href="/mediawiki/index.php/User:Minhchu" class="new" dir="auto" title="Your user page [Alt+Shift+.]" accesskey=".">Minhchu</a>
</li>
<li id="pt-mytalk">
    <a href="/mediawiki/index.php/User_talk:Minhchu" class="new" title="Your talk page [Alt+Shift+n]" accesskey="n">Talk</a>
</li>
<li id="pt-preferences">
    <a href="/mediawiki/index.php/Special:Preferences" title="Your preferences" class="">Preferences</a>
</li>
<!-- ... -->
</ul>

I wanted to add style to <li> tags. I checked the wiki. Nothing here so I looked into source code mediawiki/includes/skins/BaseTemplate.php line 391. So I tried:

<ul>
<?php foreach ( $this->getPersonalTools() as $key => $item ): ?>
<?php echo $this->makeListItem( $key, $item, ['link-class' => 'header__actions--item']); ?>
<?php endforeach; ?>
</ul>

But it rendered:

<ul>
<li id="pt-userpage">
    <a href="/mediawiki/index.php/User:Minhchu" class="new header__actions--item" dir="auto" title="Your user page [Alt+Shift+.]" accesskey=".">Minhchu</a>
</li>
<li id="pt-mytalk">
    <a href="/mediawiki/index.php/User_talk:Minhchu" class="new header__actions--item" title="Your talk page [Alt+Shift+n]" accesskey="n">Talk</a>
</li>
<li id="pt-preferences">
    <a href="/mediawiki/index.php/Special:Preferences" title="Your preferences" class="header__actions--item">Preferences</a>
</li>
</ul>

What !? I feel like something was wrong here. The class header__actions--item went inside the <li> tag not for <li> itself. So I had to read the source code again. Finally I came up with a hacky-way:
<ul class="header__categories">
    <?php foreach ( $this->getPersonalTools() as $key => $item ): ?>
        <?php $item['class'] = 'header__actions--item' ?>
        <?php echo $this->makeListItem( $key, $item, ['link-class' => 'header__categories--link'] ); ?>
    <?php endforeach; ?>
</ul>

It’s awkward but it does work.

There are still some steps to finish Mediawiki builder. Now I have to deal with the documentations for Neverland since Gsoc mentioned it as requirement.

Gsoc 2016 Neverland #6

Now it’s time for Mediawiki.

One of the biggest problem is that Mediawiki skin is so simple. It is actually one file. How we can transfer the look and feel of a static html file to Mediawiki style is a big question.

And in the mean time, I have been refactoring the code, make it cleaner and using ES6 syntax.

refactor1

refactor2

It’s for this week.