Three Laws for successful “Google Summer of Code”-like projects

(This post is aimed at mentors and organization coordinators of internship programs like Google Summer of Code. If you’re a student, you’re probably more interested in how to write a successful proposal, in which case, you better head over to this great post by Teo Mrnjavac.)

It’s a very busy time for me, I’m in thesis crunch mode and applying for jobs at the same time. This is why this year I have decided to step down from my role as organizer of internship programs at ownCloud.

In the past two years I have coordinated and mentored projects for Google Summer of Code (GSoC), Outreach Program for Women and Google Code-In, and in the two years before that I have been a Season of KDE and a GSoC student myself. In all these fantastic experiences, I had the chance to observe some patterns that recur in successful projects. As the administrators of these programs repeatedly point out, success starts from the project ideas page. I agree with this, and in fact I believe that if the description of your project idea obeys some simple criteria, your mentorship will be an enjoyable experience (with very high probability).

This is the time of the year when mentoring organizations are supposed to get their ideas page ready, so I thought it would a good time to share some advices on how to write a good project description. I have synthesized the patterns I observed in a set of three laws — the term “law” here is in the sense of “adage”, as in Asimov’s laws or Atwood’s law. By the way, notice I refrained from titling this post »Cosentino’s laws«. You are welcome! :)

3 laws

Without further ado:

First law. A project is always twice as big as you think it is.

Second law. You must provide (at least) a partial specification and a prototype to your mentee of what you want to be implemented.

Third law. If you think an issue on the bug tracker makes up a nice project idea, then something is wrong with that issue.

 

Even though they’re all pretty much self-explanatory, let me comment more in detail on each law.

The first one can probably be applied more generically to many aspects of life, and still it’s a rule we always forget to keep in mind when we assign a task to someone else. The factor with which a project eventually scales up varies, in software I observed that 2x is a good approximation. If you have already written a description for the project you want to mentor this Summer, a no-brainer to make it successful is going back to the project description and slicing it in half (do not recurse many times :P).

When you read the second law, you may raise the point that an intern will gain a lot of experience by writing a specification and a prototype of the project by himself. In fact, you may argue that somebody who wants to become a good software engineer should learn these important skills and not just how to monkey-code. There are many problems with that. First, writing specification is hard and writing a prototype is even harder. The time span of a project is usually 3-4 months and that’s not enough for everything. The intern will only enjoy his project if he sees code running on his machine. It’s true that ideally you want the intern to do not only coding, but also specification, prototype, documentation, … However, that is impossible, and if you have to cut off something, you can’t cut off the coding part. Furthermore, only when the mentor writes a formal specification by himself, he will figure out many details of the projects, such as size, feasibility and usefulness, which may slip out if he only writes a succinct description of the idea.

The third law is perhaps even more arguable, as it depends on how your organization handles the bug-tracker. Here I am claiming that if a bug or a feature request has the same size of a student Summer project, then you should split that in smaller issues, or remove it from the bug-tracker, because you have very small chances that somebody will fix it. Plus, bug-tracker discussions can be very technical for someone new to the organization. Tag issues that you think are good for first-time contributors as »Junior jobs«, but don’t use them as project ideas, use them as warm-ups and to select your interns.

I ask everyone to help with ownCloud’s Project ideas page. Let’s make sure each project obeys the three laws ;-)

If you have questions concerning GSoC and other student/internship programs at ownCloud, contact ownCloud community manager Jos (@jospoortvliet) and organizers Jan (@jancborchardt) and Thomas (@DeepDiver1975).

 

First ownCloud lustrum

This weekend ownCloud turns 5 (5 years old, not 5.0 :P), congratulations to Frank Karlitschek and the entire ownCloud community!

This date also marks (more or less) the third anniversary of my first encounter with the ownCloud community. Shamelessly, I date it back to a comment I posted on the Youtube video of Frank’s original keynote at Camp KDE. Jeez, back then I didn’t even know how to set Youtube on html5!

Anyway, in this blog post I don’t want to praise what ownCloud has become, neither talk about my personal involvement in the ownCloud project (I assure you it went a bit further than that youtube comment :P). Instead I want to celebrate ownCloud’s birthday by collecting a list of third party projects to which ownClouders have contributed. In order for the contribution to be part of this collection, it needs to satisfy the following constraints:

  1. the contribution makes sense to exist independently from ownCloud;
  2. the itch to make that contribution was felt while writing ownCloud code or doing stuff related to ownCloud;
  3. the contribution did somehow benefit ownCloud.

Let me start with a list of vulnerabilities that Lukas Reschke and ownCloud’s security team have reported to some widely used libraries.

Security vulnerabilities

Next is a list of other PHP libraries to which ownClouders have contributed patches.

Libraries patches

I am confident that there is much more, but I am just not aware of it (Javascript projects, for instance, are missing in the list above). If you are the author of any contribution that satisfies the constraints above, please let me know the comments below.

Interactions between projects is what I value the most in Open Source and I am happy that five years of ownCloud have also meant five years of contributions to a multitude of other projects.

Happy birthday and best wishes for (at least) another lustrum!

Edit: added one more projects and more links.

“Summer of ownCloud” accepted projects

Tomorrow is the day when Google Summer of Code students and Outreach Program for Women interns will begin coding for their projects. This is a good time to present the list of projects that have been accepted at ownCloud.

You can follow the progress on their individual blogs, or on the ownCloud planet.

Outreach Program for Women Summer 2014

Google Summer of Code 2014 (with openSUSE)

If you are intrigued by the projects and you have some ideas or some input you want to share, don’t hesitate to contact the student/intern, or the mentor, or just hang out in one of owncloud IRC channels.

Good luck to all GSoC students and OPW interns and happy summer of coding!

 

SO_oC — Summer Of ownCloud!

This is a heads up that ownCloud is participating in two internship programs this summer!

Google Summer of Code 2014 (GSoC)

GoogleSummer_2014logo_avatar

Thanks to openSUSE for hosting us again!

Check out the openSUSE GSoC portal and the ownCloud GSoC portal for more information

Student application starts tomorrow. It’s important that you come up with a draft of your proposal as soon as possible, so that you can get feedback from your mentor.

Outreach Program for Women (OPW)

opw-logo

Thanks to the OPW organizers for accepting our application ;-)

Check out the ownCloud OPW portal for more information.

Remember that you have time until March 19 to get in touch with us and make a small contribution.

—–

Here is the list of Projects Ideas we propose. Check out this list and contact the mentors of the projects you are interested in. Notice two things:

  • in order to participate in OPW, you don’t need to be a student;
  • GSoC projects are restricted to coding. If you are applying for GSoC, look only for projects in that category;
  • both the programs have hard deadlines, mind the dates!

If you have any question, don’t hesitate to swing by our IRC channel! (#owncloud on Freenode — I am ‘cosenal’)

Here it’s still -11°C, as I write, but I’ll say it anyway, as an omen: Happy Summer Of ownCloud!

ownCloud News App stable release

The News

The first stable version (1.001) of the ownCloud News app is out in the ownCloud app store. Grab a copy, use it and tell your friend how awesome it is!

If you’d like to stick to the development version, refer to the github page.

Extensions

It was amazing to see how much feedback we received in the last month. We’d like to thank everyone who reported issues on the tracker. We tried to fix all important bugs before this release, but please do continue to test and report issues.

We received a lot of feature requests as well. There are some features that we could not accommodate, because they don’t fit the design style of the app. This is why we decided to make the app open to extensions. You will be able to release your own app which hooks into the News app and/or use its infrastructure to build an even more complex app. We created documentation on how to plug into the News app, see https://github.com/owncloud/news/blob/master/docs/plugins.rst. This is still a work in progress and we hope to publish soon some examples of plugins. The main advantage of an extension system is that we can focus and have tight control over the basic design, and still accommodate users’ wishes.

Galaxy

The app also exposes an external API and we look forward to seeing a galaxy of desktop and mobile clients gravitating around it in the next future.

If time permits, in the summer we will work on a mobile client that interfaces the News app. The idea is to create a cross-platform app in html+css+js with PhoneGap and AngularJS. We aim at FirefoxOS, plus all the platforms supported by PhoneGap (Android, iOS, Blackberry, …).

If you own an Android device, you can already use a development version of an unofficial News app client created by David Luhmer. See David’s blog post (in German).

Conclusion

After one year of work, we finally released a stable version of the ownCloud News app. It is an RSS/Atom reader for ownCloud powered by the library SimplePie.

It’s not a coincidence that this release announcement falls exactly one month before the date announced by Google for the shutdown of its Reader :) We are going to talk more about migration from Google Reader to ownCloud News app in the next blog post.

Thanks for your support and we hope you enjoy the app!

Alessandro, Bernhard and Jan-Christoph

stable_ss

ownCloud News app Beta release

Good news everyone! We are happy to announce the Beta release of the ownCloud News app.

You can download it from here or install it directly from your ownCloud instance. Remember to install the App Framework app first.

This release is fully functional. We have implemented all the main features that we want in the first stable release and we need your feedback to squash the last remaining bugs.

What did change from the Alpha release of few weeks ago?

Besides lots of bug fixes and important changes in the back-end, which made the app faster and more stable, the most important features we added in this release are the following:

This announcement is a good opportunity to thank our translation teams for their amazing job. As we write, ownCloud News app is translated in 75 languages (16 of them have a complete translation). If you want to help to translate the app, join one of the teams at https://www.transifex.com/projects/p/owncloud/resource/news/

At this stage, contribution from users and other developers is very important. We would appreciate if you could test the app, report the issues and join one of the open discussion on the issue tracker, https://github.com/owncloud/news/issues?direction=desc&sort=updated&state=open

So what’s next? Being optimistic, we plan to have a PhoneGap/Firefox OS mobile app (GSoC project) and syncing with KDE Akregator working at the end of the summer.

Alessandro, Bernhard & Jan-Christoph

ownCloud News app alpha-2 release (guest post by Bernhard Posselt)

In this post I hand over the floor to the co-maintainer of the News app Bernhard Posselt (Raydiation). Bernhard is a software engineering student at University of Applied Sciences Technikum Wien. As an intern at ownCloud inc., he is the man behind the new ownCloud appframework. He is also involved in the coding and the design of the Notes app and in lots of user and devs documentation for ownCloud.

This is my first real report on the progress of the News app (I’ve escaped Alessandro’s requests to write a blog post quite a few times already :D). I’ve joined as a co-maintainer back in last August, because I was looking for a replacement of Google Reader. I’m a heavy Google Reader user so this app better becomes a solid replacement! ;)

In this post I am happy to announce the second (and last) alpha release of the News app. It is already usable and the core features are implemented, but there will be some rough edges and bugs and we may add small improvements in order to get it stable. See https://github.com/owncloud/news/issues?milestone=3&state=,open

The development of the News app started as a GSoC project last year and at the end of the last summer we announced the first alpha release of the app. So why such a long time span between two alpha releases and why not yet a beta release? There are multiple reasons for this.

First off, we don’t want people to use an app that is not finished yet: this will only scare away people who want to switch to the app and find little annoying bugs. I speak from personal experience: this is the reason why I don’t use KDE SC (tried it multiple times, always been bitten by tons of minor bugs and annoyances).

Second, I’m used to Test-Driven-Development and to web-frameworks like Django and there was basically nothing in this regard at the time I joined ownCloud. In the course of programming the News app I’ve developed a small framework that helps people with ownCloud app development: https://github.com/owncloud/appframework And of course I also had to write documentation for it :)

This means I factored out all the parts of the News app which we could generalize, wrote unit tests for it and restructured the News app with the new code.

Since I’m mostly responsible for the JavaScript and CSS part, I ran into maintainability problems and started to port everything to AngularJS. jQuery is a nice tool but it binds your JavaScript code so heavily to the DOM that changes in the template can break the whole app. In the long run this is not maintainable.

I am quite happy with the result now: the whole News app has basically been rewritten using the App Framework, AngularJS, unit tests and a proper architecture and I feel like we will not have to rewrite anything anytime soon. We even have JavaScript unit tests now!

Third and last, we are both students and have tight schedules and during the last two semesters we have been really busy. I started to work full-time on the app only since one month ago, when I started my internship at ownCloud inc. (I’m very grateful to ownCloud for this opportunity).

Because this is only an alpha release, we won’t release packages but urge users to use the master version from GitHub (we moved the app to its own repository: https://github.com/owncloud/news). This way people can easily stay up to date with the newest bug-fixes and it will also help us developers to minimize the effort of closing bugs that are already fixed. An installation guide is available in the README file.

So long thanks for all the testing and feedback! The response since Google Reader has shut down has been amazing: we already have tons of people testing and giving feedback. Thanks for the all the help and your patience ;)

ownCloud projects for GSoC 2013

A Spring announcement: ownCloud will take part in Google Summer of Code 2013 under the organization openSUSE. You can find the list of ideas here: https://en.opensuse.org/openSUSE:GSOC_ideas#ownCloud 

We are very grateful to openSUSE for hosting us this year and to KDE for helping ownCloud with GSoC in the last years (including my own project!). Maybe next year we will try to participate as an independent organization.

In fact, even this year KDE offers an ownCloud-related project, proposed by the Marble guys: http://community.kde.org/GSoC/2013/Ideas#Project:_Marble_meets_owncloud

If you are a student interested in GSoC, I encourage you to contact the ownCloud mailing list. And rather than giving you specific advices, I refer you to these two very well-written blog posts by KDE fellows Teo Mrnjavac and Myriam Schweingruber, respectively:

Summer is coming!

Google Reader’s sunset is the dawn of ownCloud News

This post is dedicated to the memory of Aaron Swartz. Among all his contributions towards a more open Internet, Aaron was also one of the creator of RSS 1.0. Thanks, Aaron.

The first news of the day is that the fantastic ownCloud community has released ownCloud Server 5.0.0. Congratulations everyone!

The second news is that Google has decided to power down Google Reader. This is a sad news for the users of the Reader, but it’s a great opportunity for ownCloud! Google Reader will cease to exist on July 1st and their users are looking for alternatives. As you already know if you have been following this blog, in the last year I have been working on an RSS/Atom reader for ownCloud (News app). The project started as a Summer of Code project sponsored by Google itself. Actually, the original idea and most of the design choices were inspired by Google Reader. It couldn’t be otherwise, since I have been a user of that service myself for long time.

In the last August I released an alpha version of the News app, see my previous post. There has been lot of progress since. Bernhard Posselt (Raydiation) ported the app to the new ownCloud app framework and he joined me as co-maintainer of the app. Thanks to his work, the app works much better now, the user interface is faster and the code is more stable and more testable.
In the last KDEPIM sprint in Berlin, I started to write an API so that external clients can synchronize with the app. Many calls are still missing, but it’s a start. Frank Osterfeld is already using this API in an Akonadi resource that interacts with the app and that can be used by Akregator. His code is in the akregator_port branch of kdepim-runtime. If you want to use the resource, you need akregator2 from the akregator_port branch of kdepim.
I am also trying to put up a new GSoC project for a mobile app that interfaces with this API (if you are a student interested in this, please let me know).

The app was not stable enough to be shipped today with ownCloud 5 (yes, remember news number one: oC 5 released today!). We expect to release a stable version of it in less than two months (probably along with some ownCloud 5.X release). Once that will happen, I will write a post on how to migrate from Google Reader. Just to be clear, there is a big difference between ownCloud News and Google Reader. OwnCloud News is open-source (code is released under AGPL) and you can host it on your own server. And if you use KDE, you will be able to use Akregator off-line and still have all your feeds on the cloud. Google Reader will be shut down on July 1st. You will have to make a change anyway, why not making a real change!

We are developing the app in the master branch of the ownCloud apps repository on github. If you want to check the API, refer to the news_ext_api branch instead. We ask for help with testing, developing, documenting. If you have any questions, bug me (zimba12) or Raydiation on #owncloud-dev, Freenode. The more help we get, the earlier we will manage to ship the app.

Google Reader is dead. Long live ownCloud News!

oc_news_ss

pizza sandwich & lahmacun

[You know that feeling when you want the Internet to know about something. This post is only triggered by that feeling, and it has no correlation whatsoever with other posts in this blog.]

Two years ago I was walking in Bloor St., Toronto looking for some quick lunch option and the sign of a restaurant aroused my curiosity. They offer pizza, sandwich and lahmacun. At that time I had no idea what lahmacun was, so I found the set to be kind of odd (after tasting it, I must admit: it deserves to be in that list!).

Image taken from blogto.com
Image taken from blogTO

 

Today it happened again. I was looking for the meaning of a French word and I went to the home page of Wiktionary. My attention was caught by the list of languages with 1 000 000+ entries: English, Français and Malagasy. Malagasy?! In this case I was even more surprised by the oddity of the set. How did this happen? I understand that a language can be as rich as English and French, but how come there are so many people from Madagascar updating Wiktionary?

wiktionary

More generally, does this phenomenon have a name? Am I being offensive to Malagasy or Turkish people? I hope not.