Skip to content

Project ideas

Jos Poortvliet edited this page Feb 2, 2015 · 65 revisions

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.

Coding

Design

Documentation

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)

New App Store

  • Brief description: The current App Store suffers from multiple problems, the biggest being maintainability, ergonomics and duplication. In order to ease app publishing and installation, a new solution should be developed based on Node.js because the traffic is mainly IO intensive. This App Store offers a user signup page and a RESTful API to publish and unpublish apps and retrieve apps and zips. The initial implementation should handle only GitHub but should be extendable by plugins. A spec is already available but can always be adjusted

A testsuite for the API should be created and unit tests should be written using jasmine

  • Expected results: A RESTful API for managing applications with a web signup for app devs
  • Knowledge prerequisite: Node.js, node.js frameworks, RESTful APIs, Git, TDD, BDD, jasmine
  • Difficulty: medium
  • Mentors: Bernhard Posselt (@Raydiation)

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

  • 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, Alessandro Cosentino (@cosenal), Jan-Christoph Borchardt (@jancborchardt, design)

Get rid of index.php within the URL

  • Brief description: ownCloud is currently having index.php in all URLs. For example when accessing the calendar you're opening /index.php/apps/calendar/ and when sharing a file you're accessing /index.php/s/{token}. The goal of this task is to get rid of the index.php within the URL and updating all APIs to support this.

  • Expected results:

    • Create mod_rewrite rules for Apache to get rid of the index.php from the URL
    • Evaluate ways for IIS and nginx how to get red of index.php from the URL
    • Remove all hardcoded appearances of index.php from the code.
    • Update ownCloud APIs to generate correct links
    • Update ownCloud routing to redirect to URL without index.php
  • Knowledge Prerequisite: PHP on server side, also some JS

  • Skill level: easy

  • Mentors: Lukas Reschke (@LukasReschke)

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: ??

Old Projects

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)

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: https://github.com/owncloud/core/issues/119

  • Expected results:

    • TBD
  • Knowledge Prerequisite: TBD

  • Skill level: TBD

  • Mentors: TBD

Add ActiveSync functionality

  • Brief description: It would be great if ownCloud Calendar and Contacts could sync over ActiveSync. This funtionality could be either in one or both of the apps, or in core. More: https://github.com/owncloud/core/issues/3410

  • Expected results:

    • TBD
  • Knowledge Prerequisite: TBD

  • Skill level: TBD

  • Mentors: TBD

Support for Thunderbird's Filelink feature

  • Brief description: Filelink is a Thunderbird feature that makes it easy for users to upload large attachments to web-based storage services. Thunderbird supports Box, Dropbox and Yousendit out of the box.

Here is the Mozilla documentation https://developer.mozilla.org/en-US/docs/Thunderbird/Filelink_Providers

See https://github.com/owncloud/core/issues/699 for discussion https://github.com/guillaumev/owncloud_for_filelink exists and would be a good base for this

  • Expected results:

    • TBD
  • Knowledge Prerequisite: PHP on server side, ???

  • Skill level: TBD

  • Mentors: TBD

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)