Project ideas

Vincent Petry edited this page Mar 7, 2017 · 65 revisions

We will kick off GSoC 2017 soon!

Project ideas and anything will be discussed on

Note: you are welcome to email the mentors of the projects for more information, but please add in cc the full list of mentors and do not send distinct emails to each of them.





API client libraries

  • Brief description: ownCloud provides several APIs like WebDAV and OCS to do operations like accessing files, managing shares, managing users, etc. To make it easier for developers to integrate their external applications or scripts with ownCloud, API client libraries should be developed that provide classes/functions that call such APIs in a way that is easy to use for the library user. Such a library should be developed for other programming languages like Ruby, Go, Javascript (Node JS), etc. One example is the Python ownCloud client library. Ideally such libraries should have a similar class/module structure and use similar function names and signatures, for consistency. Test suites must be present to test the provided functions against real ownCloud instances.

  • Expected results: Write an API client library for a chosen target language that cover files, sharing (and optionally users management too)

  • Knowledge prerequisite: Knowledge about the said chosen language and about calling REST APIs

  • Difficulty: medium

  • Mentors: Vincent Petry (@PVince81)

Browser extensions for ownCloud

  • Brief description: Currently we have desktop integration of ownCloud with a sync client, but not with a browser integration. Of course we can use web interface to do all actions, but extensions for Chrom(e|ium) and Firefox will decrease the amount of time to do ownCloud-related stuff.

  • Expected results: Extensions for Chrom(e|ium) and Firefox browsers will be ready to e.g:

    • Adding one entry to context menu if the cursor is over a link - "Download to ownCloud" (for files app)
    • An icon similar to Gmail Checker which informs new feeds (News app)
    • A simplistic music player icon which could get the playlists and play them without requiring to go to ownCloud
  • Knowledge prerequisite: minimal: HTML, CSS, and JavaScript.

  • Difficulty: easy-medium

  • Mentors: ??

Reference Management App (similar to Zotero)

  • Brief description: Reference management software helps researchers to keep their personal libraries organized. One of the most used reference manager is Zotero. Whereas it is already possible to keep the files stored by Zotero synced through ownCloud via webDAV, the sync of meta-data requires an Zotero server. The ownCloud reference app will help the users to collect, handle and sync metadata of papers that are uploaded to ownCloud storage. For details see this page the Zotero and this discussion on the ownCloud mailing list.

  • Expected results: The project consists of implementing an ownCloud app to store metadata from research articles and, if time permits, a browser (Firefox/Chrome) plugin that interfaces the app. The ownCloud app needs to do at least the following things: 1) scan ownCloud filesystem (or a selected folder) for PDF files; 2) extract metadata from these files using some PHP library, such as pdfparser; 3) allow the user to annotate pdf files and store annotations (the format of which needs to be decided).

  • Alternative suggestion: making ownCloud based UI for native Zotero WebDAV data. Zotero already excels in web clipping and organizing, but lacks comfortable data storage solutions, and still has no independent web interface. OwnCloud app could fill the gap.

  • Future development: Interfacing this app with other existing reference manager (both desktop and mobile)

  • Knowledge prerequisite: minimal: PHP and Javascript, preferred: AngularJS it's definitely a plus if the student has experience with reference management software.

  • Difficulty: medium

  • Mentors: Alessandro Cosentino (@cosenal), others?

ownCloud as backend for web apps

  • Brief description: An unhosted web app is an application that runs entirely in the browser. Since unhosted web apps do not have a database or storage server of their own, they rely on the user to connect their own per-user storage at runtime. Also when an application does have a server, it can be more efficient to let the client-side code communicate directly with an API, instead of letting all traffic go via the application server as an extra hop. The idea of this GSoC project is to 1) add CORS headers to the API, 2) add support for the implicit-grant flow to ownCloud's OAuth dialog, and 3) publish a small javascript library that makes it easy to use the ownCloud API in an unhosted web app. To get an idea of what this would look like, check out the JavaScript libraries provided by for instance GoogleDrive or Dropbox.

  • Expected results: Support for cross-origin API access in ownCloud, a small JavaScript library, and some documentation, aimed at html5 app developers, describing how to use it. With this, it will be possible to "log in" to a website with your ownCloud instance as your personal data storage, and all user data on this website will come from, and be saved to, your ownCloud account.

  • Knowledge prerequisite: JavaScript, PHP, basic understanding of HTTP debugging (browser developer tools as well as WireShark or similar), capacity to understand the complex request flows of both CORS and OAuth.

  • Difficulty: medium/difficult

  • Mentors: @michielbdejong, Jan-Christoph Borchardt (@jancborchardt, design)

Create a dedicated Add-On for Kodi (former XMBC)

  • Brief description: ownCloud currently has WebDAV, CalDAV, and CardDAV support and an addon supports these standards can be installed on Kodi to access the files and data on your cloud. However, a dedicated addon would be very nice to collect all functionality of ownCloud in one place.

  • Expected results:

    • Allow users to view their files and view them (or play audio/video).
    • Allow users to view their calendars (maybe readonly would be sufficient at this stage)
  • Knowledge Prerequisite: XML, Python

  • Skill level: medium

  • Mentors: ??

ownCloud as a Backup Application

  • Brief description: ownCloud currently has desktop clients to sync directories/files. It will be good idea to have a new client to use ownCloud as a backup solution. The second option can be a new feature added to existing desktop clients.

  • Expected results:

    • Allow users to choose the directories to backup.
    • Create a ZIP or TAR.GZ archive and upload it to specified ownCloud server.
    • Enable users to set up scheduled jobs (once a week, etc.)
  • Knowledge Prerequisite: C++ (Qt), ownCloud API

  • Skill level: medium

  • Mentors: ??

Reveal.js/Impress.js Presentation Editor Integration

  • Brief description: Reveal.jsImpress.js a presentation tool based on the power of CSS3 transforms and transitions in modern browsers. Currently there is a text-editor for Reveal.js, but not a GUI. Strut can be integrated to use ownCloud for a visual editor.

  • Expected results:

    • Integrate Strut (or Strut2) into ownCloud
  • Knowledge Prerequisite: JavaScript, CSS, ownCloud app development

  • Skill level: easy

  • Mentors: ??

Make undo deletion work again

  • Brief description: When you delete a file in the web interface, the deletion should take place after 7 seconds undo time, or after performing the next navigation action (whatever comes first). The file should be visibly (but fake) removed from the list instantly, and instantly reappear on undo. More:

  • Expected results:

    • TBD
  • Knowledge Prerequisite: TBD

  • Skill level: TBD

  • Mentors: TBD

Add ActiveSync functionality

  • Brief description: Syncing calendar, tasks and contacts is not efficient via DAV, so it would be great if an app could be built which implements an ActiveSync endpoint and collects information from calendar, tasks, contacts and even email. See for an example implementation

  • Expected results:

    • TBD
  • Knowledge Prerequisite: DB, PHP, REST, composer

  • Skill level: Advanced

  • Mentors: TBD

Thunderbird and Instantbird File Sharing feature

  • Brief description: File Sharing is an add-on for Thunderbird and Instantbird to share files Drag-on-Drop with ownCloud to the conversation or chat window.

  • Expected results: Upload the file to ownCloud and share the link into the conversation or chat window with support for all prpls (protocol plugins). We can integrate the project "Browser extensions" and "Thunderbird's Filelink" in this project.

  • Knowledge Prerequisite: PHP, XUL, XPCOM, JS, CSS.

  • Skill level: Medium

  • Mentors: ??

Old Projects

Multi Account feature for the Desktop Client

  • Brief description: Support of more than one ownCloud server connections for the Desktop Client to sync e.g. a private and a company account at one time. Today, only one connection is possible; there are already several workarounds but no regular solution so far, even if it is an often requested and very useful feature. In addition to that, this feature would align the Desktop Client to the Mobile Clients that support multiple connections for a long time already. More:

  • Expected results: self-explanatory

  • Knowledge Prerequisite: TBD

  • Skill level: TBD

  • Mentors: TBD

Read later app (similar to Pocket/Instapaper)

  • Brief description: A combination of web and mobile apps which allow people to save websites and articles for later and to read offline. This should integrate with the already existing Bookmarks app, or supersede it. Also it should use the same API as the already existing open source Wallabag – then we can also use their already existing Android app and browser extensions.

  • Expected results: Modification of the Bookmarks app to also save and be able to view the content of webpages. Expose the same API as Wallabag so that their apps can be reused.

  • Knowledge prerequisite: Javascript, AngularJS, databases, APIs

  • Difficulty: medium

  • Mentors: Jan-Christoph Borchardt (@jancborchardt, design), Alessandro Cosentino (@cosenal)

Music app: playlist functionality

  • Brief description: The Music app currently just displays your whole music collection. It would be useful to organize this into playlists.

  • Expected results: Management of playlist inside the Music app. The playlists should be displayed in a sidebar. Playlists consist of songs and need to have a list-like layout (similar to the Files app).

  • Knowledge prerequisite: PHP, JavaScript, Useful: AngularJS

  • Difficulty: medium

  • Mentors: Morris Jobke (@MorrisJobke), Jan-Christoph Borchardt (@jancborchardt, design)

Camera Backup Mobile App

  • Brief description: The aim of the project is to create a Firefox OS app that automatically uploads pictures and video taken by a Firefox OS device to ownCloud using the protocol WebDAV. This would be similar to the »Instant upload« feature on the Android ownCloud app. The Bitcasa Camera Backup app does a similar thing, but it's not open-source and it only allows to upload to the Bitcasa cloud. But it showcases how the automatic upload could work.

  • Expected results: Enable people with a Firefox OS device to instantly upload their taken pictures. This should be fully automatic after the initial connection to the ownCloud server. Note: the student doesn't need to own a Firefox OS device. Everything can be implemented by using the Firefox OS simulator plug-in

  • Knowledge prerequisite: We don't require familiarity with Firefox OS or any other mobile platform, but the students needs to have a good knowledge of Javascript and ideally of some JS MVC framework like AngularJS.

  • Skill level: medium-difficult

  • Mentors: Alessandro Cosentino (@cosenal), Jan-Christoph Borchardt (@jancborchardt)

Calendar app in angularJS

  • Brief description: The ownCloud Calendar app is one of the most used apps we have. We need to rewrite the calendar app in angularJS in order to achieve a much better extensibility and maintainability. Combined with the JSON API, it will provide an rich and full-featured easy-to-use interface for our users.

  • Expected results:

    • rewrite calendar webinterface in angularJS (for events as well as calendars itself)
    • use JSON REST API
    • make things like attendees, reminders, timezone, etc. available for editing in the webinterface
    • better handling of recurring events (make it possible to edit only one of a series of events)
  • Knowledge Prerequisite: PHP on server side and AngularJS on client side

  • Skill level: medium

  • Mentors: Georg Ehrke (@georgehrke), Jan-Christoph Borchardt (@jancborchardt, design)

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.