Perhaps someday he will attempt a book called “Algorithms for the Kitchen.”


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

Published by cosenal, on May 3rd, 2013 at 4:35 pm. Filled under: Coding Tags: , 3 Comments

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 ;)

Published by cosenal, on April 17th, 2013 at 4:33 pm. Filled under: Uncategorized Tags: , , 3 Comments

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!

Published by cosenal, on April 17th, 2013 at 3:58 pm. Filled under: Coding Tags: , , No Comments

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

Published by cosenal, on March 14th, 2013 at 10:16 am. Filled under: Coding,Uncategorized Tags: , 58 Comments

Great Lakes ownCloud developer meetup

I am going to meet up with other North-American ownCloud-ers on October 27th–28th in Ann Arbor, Michigan. The meetup will run in parallel with the main ownCloud developer sprint Fall 2012, which will take place in Berlin. Some of us couldn’t make to Europe, but we decided to meet anyway with a smaller money and travel effort.

Michael Gapczynski (aka MTGap) is taking care of the organization, so refer to his blog for more information. The meetup will be on the University of Michigan’s campus. [Update (October 13, 2012): here is the official page of the meetup.]

You are very welcome to join us! If you are interested, please contact Michael or me. If you live in Toronto or somewhere close-by, I can also offer you a free ride!

Published by cosenal, on September 18th, 2012 at 11:42 am. Filled under: Uncategorized Tags: , 2 Comments

ownCloud News app – Alpha release

I am happy to announce the Alpha release of the ownCloud News app, which I developed as a GSoC 2012 project. This is my final GSoC report, so it’s also the time for acknowledgments. Working with the ownCloud (oC) team has been a fantastic experience. The excitement around the ownCloud community is astonishing and people have been extremely kind and helpful with me throughout the last three months. I am very grateful to my mentor Jakob Sack. FOSS projects need people who are much more than just coder, people who are also able to guide other people into the community. Jakob is one of a kind when it comes to this. Many thanks also to Frank Osterfeld (co-mentor of the project), who has been a great source of general “RSS knowledge” and will be very helpful when I will start to work on the API (more details about this later in this and future post). As Jakob pointed out, the project has gained a lot of momentum in the last month. Bernhard Posselt (Raydiation) and Gregor Taetzner (brummbq) joined the project and gave a lot of help with restyling the look of the GUI. I am indebted to them and I hope they will continue to help ownCloud with the same enthusiasm.

The app is basically ready and you can play with it: you can add feeds, folders, remove feeds, folder, view articles, … you know, that kind of things you would do with a feed aggregator :) You can find it in the the master branch of the owncloud/apps repository. Go and clone it! [Update (Aug 25, 2012): notice that ownCloud code has moved to github]

Without further ado, here is how it looks like:

As you may already notice from the screenshot, we decided for an essential look. Some of the usability choices we have made are non-traditional (only one-level folder, no unread item counter), but we hope they will pay off (many thanks to Jan-Christoph Borchardt for those ideas!). Differently from what I stated in the proposal, there is a single view. It will be easier to maintain and we tried to make it intelligent enough so that the user will not feel the need of a different view.

The app also features an OPML importer, which can be found in the Settings panel (click on the cogwheel icon at the bottom of the feed list). If you are curious to see how the feeds that you usually read look like on oC, just open Google Reader, export the OPML of your subscriptions and import them into News.

The plan is to release a final version of the app along with the oC 5 final release (late October/November). Between now and the final release, you are encouraged to test the app and report bugs. Please report an issue only if it’s not listed here yet:

http://algorithmsforthekitchen.com/wiki/doku.php?id=owncloud_rssreader.

If it is, it means I am already aware of it and working on it. I know, the list is still very long…

The main feature missing in this Alpha release is Sharing. In the final release, the user will be able to share the posts he likes with other oC users and groups, as well as with contacts from his oC address book or just using an email address. This will be based on the new oC5 Share API (see Michael Gapczynski’s blog post.)

The Akregator aficionados who are reading on Planet-KDE will be a bit disappointed to hear that synchronization with their favorite feed reader is not yet functional. Unfortunately, the version of oC News that will be shipped with oC5 will not expose an API. On the other hand, the oC6 version of the app will have an API based on the general oC OCS API, which is being developed in the ocs_api branch of the main owncloud repository. I will talk more about this in a future blog post.

Finally, my app has also been a testbed for an interesting oC feature developed by Jakob Sack. You can read more about this feature here: Background Job. In few words, it works like this: suppose you are taking a two-weeks vacation from your nerdy life of checking your feed reader every day, but you don’t want to miss any of the posts that are published at the same time. Then your oC server will do the job of collecting the unread posts and store them while you are playing matkot on the beach. This is cool, isn’t it? Ok, do I sound like I am craving for a vacation? I am actually going to take one in few hours :P See you in September!

Published by cosenal, on August 21st, 2012 at 4:19 pm. Filled under: Coding Tags: , , 19 Comments

ownCloud feed aggregator – the M part

Hello KDE/ownCloud fellows!

After one month of GSoCoding (and quantum information research), I am finally back to blogging. Let me be honest from the beginning: there will be no screenshots in this post :( This is because the first part of my project was entirely devoted to the most hidden layer of the aggregator app: the model part, the M of MVC (Model-View-Controller) — the pattern used in the design of ownCloud applications. In this post I would like to explain the details of my implementation and share some of the things I learned during the first weeks of my GSoC.

The most important entities in a feed reader application are collections and items. As you can imagine, a collection is a set of items. The collections are organized in a tree, whose nodes are the folders and whose leaves are the feeds. In my implementation, folders and feeds are objects of the classes OC_News_Folder and OC_News_Feed, respectively. These classes extend the class OC_News_Collection. “Class”, “object”, “extend”? Yes, I am trying to design this app using object-oriented programming principles. I know, PHP is not the most comfortable language when you want to do OOP, but I still believe that this approach will make the code better organized. There are many aspects of PHP5 I could bitch about here (lack of a real overloading, for example), but I will rather refer you to this amazing post by Eevee. Anyway, ownCloud is written in PHP for very good reasons, so lamenting doesn’t really matter. I still believe it is possible to write nice OO code in PHP. <ad>A book that I found very helpful with regards to this is PHP Objects, Patterns and Practice by Matt Zandstra.</ad>.

The actual parsing of the feeds is handled by the SimplePie library (many thanks to its developer!). The interface between the SimplePie layer and the modeling classes is provided by some static methods of the class OC_News_Utils. The aim is to make the SimplePie layer very independent from the rest, so that in future it will be easy to eventually replace it with some other RSS/Atom parsing library.

Another layer that needed to be decoupled from the layer of the domain objects is the persistency layer (in our case, the same as the database layer). An elegant solution for this is provided by the Data Mapper pattern. In a few words, a mapper acts as an intermediary between the memory and the database. It provides CRUD methods that output, or take as parameters, objects lying in the memory and map them to rows of the database tables. In my implementation, for each class X describing a domain object, there is a class XMapper for the corresponding mapper. As an example, the class OC_News_FeedMapper contains the method save which takes an instance of the class OC_News_Feed and write the corresponding data in a row of the feed table in the database.

This was a brief summary of the design choices I have taken so far in my GSoC project. If you want to know more, you are invited to grab the code from the owncloud/apps repository – branch newsapp. The classes I described above are all in the folder news/lib. Since the official release of ownCloud 4, I am using the branch stable4 of the main ownCloud repository as development environment (note that this changed since my last post, where I was suggesting to use the master branch).

The model layer is not perfect yet: some methods are missing, others need to be clean, not everything is very efficient, etc. Moreover, I haven’t tested it thoroughly. The main ideas are there, though. I’ve already started to code the interface part and I will make further improvements to the M part along the way.

Feel free to comment and stay tuned for a post on the V part!

Announcement: In about a month, I will start to implement the API. If you are the maintainer of a feed reader, please contact me if you are interested in syncing your client with the ownCloud aggregator. I would like to receive suggestions from you on the API before I start to code it.

Published by cosenal, on June 13th, 2012 at 5:22 pm. Filled under: Coding Tags: , 4 Comments

A feed aggregator for ownCloud – week 1

Alternative title of the post: Yet another “hey, my proposal got accepted to GSoC!” post.

In the next three months I am going to develop a feed aggregator for ownCloud as a Google Summer of Code 2012 (GSoC) project under KDE. The mentors of this project are Frank Osterfeld and Jakob Sack. As you might remember from my previous posts (1 and 2), this belongs to a wider project that aims at synchronizing KDE Akregator on the cloud. If you are interested in more details, you can read my full proposal here.
This is how the web interface of the aggregator is going to look like (in two different views):

mockup_quickskimmockup_fullarticleview

There are big changes happening in these days for what concerns the way ownCloud handles apps. Consequences of this are:

  • the apps folder can now live outside the main owncloud folder;
  • core and secondary apps are going to be moved to a single repository.

If you have already installed ownCloud and you want to follow the development of my app, then you need to clone the following repository:

owncloud/apps.git branch:newsapp (https://gitorious.org/owncloud/apps/commits/newsapp).

A stub of the feed reader app is already in the subfolder news (‘News’ is also going to be the user-friendly name of the app, as well as the owncloud app id – feel free to comment if you like it or not).
Unfortunately it is not possible to specify multiple app folders yet. If you want to both use ownCloud core apps (from the owncloud/owncloud.git repo) and check the development of my app at the same time, I recommend the following setup:

  1. install ownCloud in /your_web_server_root/owncloud
  2. clone the above-mentioned repository in the folder /your_web_server_root/apps (remember: my app is in the working branch newsapp
  3. create a symbolic link pointing to the folder /your_web_server_root/apps/news from the /your_web_server_root/owncloud/apps folder.

Things will become cleaner once the transition to the new app system will be complete. Stay tuned!

Published by cosenal, on April 28th, 2012 at 2:20 pm. Filled under: Coding Tags: , 14 Comments

Let’s make Akregator hot again!

Hello KDE fellas!

After a very busy university term, I have finally got myself to write this post about the status of reading RSS/Atom feeds on KDE. Consider this post as if it was written in September 2011, things have been pretty much frozen since then.

The aim of it is:

  • updating the KDE community on what is new with news feeds reading in KDE;
  • “refactoring” ideas in my mind after a semester of slacking off;
  • encouraging people to help making the “feeds reading experience” on KDE cool again! (YES, I AM asking you to join this project)

Akregator (news feed reader of the Kontact suite) was introduced along with KDE 3.4 in 2005 and aficionados of the KDE platform are still using it. However, many other users switched to more convenient web platforms such us Bloglines earlier on, or Google Reader (GReader) lately. Look at these statistics on the GReader devs blog. Ok, it’s not clear what the y-axis in those graphs represents, but still… Unfortunately, Akregator has also been struggling with attracting new users. See this survey from howtogeek.com and you will have a picture of what many geeks choose as they favorite news feed reader. Alas, it’s hard to find a single comment where the Big-G aggregator is not mentioned :( What makes so many readers to favor the Google aggregator? Well, as usual in the case of Google products, it works fairly well and it has got almost all the features that most users want. In my opinion, there is more, though. The most important feature of GReader is that it’s out there on the web and, no matter where you are, you just need a browser and a Google account to access it. What is wrong with using Google Reader then? First of all, you also need an internet connection to access it and you know, that’s not really everywhere (Notice that since May 2010, the offline feature of Google Reader is no longer available). Second, in terms of comfort, nothing beats a KDE application, with its perfect integration with your desktop, notification system, ability to use quick search features, and so on. Third, if you care about your privacy, the new Google’s privacy policy is definitely not something that can make you happy.

This leads us to the encouragement that titles this post: let’s make Akregator sexy again and let’s switch back to it! An idea for doing this came up in the last summer, when I was looking for a Season Of KDE project. I was chatting with Jakob Sack (jakobsack) and Robin Appelman (icewind) on the #owncloud channel and they mentioned that a feed reader was one of the most important among the applications missing in ownCloud. If you don’t know what ownCloud is, you should absolutely check it out (http://www.owncloud.org)! Jakob’s and Robin’s idea was not just to create an online feed reader, but something way cooler: bringing Akregator to the cloud. Immediately after this idea came up, I checked it with Frank Osterfeld, the Akregator maintainer (Frank from now on). Since the very first conversation with him, it became clear that there was a fundamental preliminary step to take before bringing Akregator to the cloud. This was a fully working port of Akregator to Akonadi.

Started few years ago, the creation of the Akonadi framework gave fresh nourishment to the development of applications that manage personal information on KDE, i.e., KDEPIM applications. Many components of Kontact, the personal information manager of KDE, greatly benefited of the port to Akonadi with new interest and new features coming to the platform. Unfortunately, one of the components that was left out from this trend was Akregator. The basic reason for this was that Akregator has always had basically only one committed maintainer, Frank (kudos to him!), and not many other developers involved. A partially working port of Akregator to Akonadi eventually happened in 2008-2009, when Frank was joined by Dmitry Ivanov, a GSoC student at that time. You can read more about the amazing job that Dmitry and Frank did in that period in Frank’s post dated July 2009 and Dmitry’s post dated November 2011.

What happened since then? Not much. No earth-shattering changes happened to the code and the port to Akonadi never made it to the master branch of KDE. Again, the reasons are: basically no developers involved and the code that had become very complex, mainly because of two architectural choices. First choice was the decision to use tagging instead of a simple folders tree structure. Second, the choice to write a common resource for all the RSS services and just a sub-instance of it for each individual service (Newsgator, GReader, local). Dmitry’s resource is called krss and it’s in kdepim, branch work/akonadi-ports.

The news is that during SoK 2011, under Frank’s mentorship, I wrote a new Akonadi RSS local resource. It imports information about the feeds from an OPML file, loads the items and store them in Akonadi. You can flag the items as read/unread/important, and organize them in folders. We used many pieces of Dmitry’s code, including the serializer and all the classes that model the basic objects such as feeds or items. We rewrote the basic methods that define the resource from scratch. The code became simpler, although some features are missing in the new resource. It’s also less general, since you can’t extend it easily to any application other then the OPML storage. It works, though, and you can see it in action in the following (mandatory) screenshot :).

Screenshot of krsslocal on Akonadi Console

krsslocal on Akonadi Console

You can find the source code in the following repository:

http://quickgit.kde.org/?p=scratch/cosentino/krsslocal.git

If you want to suggest features, report bugs, or just comment about the resource, feel free to buzz me (zimba12) on Freenode (I am very often in #owncloud and #akregator).

Other encouraging news: Frank wrote a new migrator for the old data (it’s in kde:clones/kdepim-runtime/osterfeld/akregator-migrator) and he fixed some bugs on the Akonadi port of Akregator (it’s in kdepim, branch work/akonadi-ports) while testing it against the new resource.

Finally I believe there can be new excitement around Akregator!

Screenshot of krsslocal on Akregator

krsslocal on Akregator

If you also got excited and want to know more, you can check out my wiki where I take notes about the entire project at the following link: http://algorithmsforthekitchen.com/wiki/doku.php?id=sok I use it as scratch paper so the information won’t be much coherent. In case it doesn’t make sense, feel free to ask me questions on chat.

Once again, this IS a call for joining the project and don’t forget the KDE Philosophy: When making a suggestion, change “we should..” to “I will..”.

In the part 2 of this post (stay tuned on planet-kde for it!), I will be talking more about the ownCloud feed reader application on which I am working right now and how this will be integrated to Akregator+Akonadi in the future.

Cheers!

Published by cosenal, on February 7th, 2012 at 1:21 am. Filled under: Coding Tags: , , 23 Comments