Skip to content

Google Summer of Code Ideas 2015

Kevin Ring edited this page Feb 13, 2015 · 35 revisions

Google Summer of Code 2015

Cesium is an open-source JavaScript library for creating 3D globes and 2D maps in a web browser without a plugin. It uses HTML5 and WebGL for hardware-accelerated graphics. Our code has shipped to 10's of millions of people in the same day and is used all around the world in fields as diverse as GIS, aerospace, real estate, sports, and entertainment. The Cesium community is growing rapidly; check out the activity on the forum and @CesiumJS.

We have a culture of writing clean, peer-reviewed, tested code. Our developers are experts in their fields; they write books, create open standards, and present at international conferences. We look forward to helping you grow your skills and write beautiful code that has wide impact.

Advice for Student Applications

When we look at student applications, we look for students who love to dive deep into a problem, research it carefully, experiment with potential solutions, and then code, test, and document the best implementation. We like to see passion, craftsmanship, and conscientiousness.

To get your GSoC application noticed, take an afternoon or a weekend and write a small demo using Cesium, post it to GitHub, and then include a link in your GSoC application. Get up to speed by reading the Cesium tutorials, then get inspired by the code examples and demos.

If instead of writing a demo, you would rather make a contribution to Cesium itself to help your GSoC application stand out, see the Cesium Contributor's Guide and list of beginner issues. Pick something that interests you, comment on the issue to get advice, then send us a pull request when it is ready. Note that we can't merge a pull request until you submit a signed Contributor License Agreement.

If you need help, post a question to the Google Summer of Code 2015 thread on the Cesium forum. The core developers are active on the forum and will be happy to respond.

Technologies and Tools We Use

JavaScript, HTML, CSS, WebGL, GitHub, Eclipse, Chrome, Firefox, Android, iOS

(We don't expect you to know all of them).

Project Idea List

## Cesium demos pack

Do you like to learn new APIs, write demos, and have your work in the spotlight? In this project, we will write a series of demos that showcase Cesium with other popular JavaScript libraries. Each demo will be pretty small, perhaps a few 100 to a 1,000 lines of code, and will serve both as a showcase and a reference implementation for developers to learn from.

Potential ideas include:

  • Vector graphics - combine Raphael and Cesium to demonstrate adding SVG charts and graphs to Cesium.
  • Geospatial analysis - demonstrate Cesium as a visualization platform for geospatial analysis (e.g., point in polygon, Triangulated Irregular Networks, etc.) using Turf either on the client or on the server using Node.js.
  • Physics - Creating some cool effects by combining Cesium with a physics engine like Oimo.js, cannon.js, or ammo.js.
  • HTML5 - HTML5 has lots of interesting APIs that can be combined with Cesium. What would you do with the video and camera APIs? On mobile, how would you use the geolocation and accelerometer APIs?
  • AngularJS - show how Cesium can be used with AngularJS.
  • Like toying with hardware? Why not write some JavaScript that runs Node.js on the Tessel microcontroller to feed data from some of its add-on modules (camera, climate, GPS, etc.) to Cesium for visualization?
  • Data visualization - Combine D3 with Cesium for temporal geospatial data visualization like this demo.
  • WebSockets - Web sockets allow two-way client-server communication. What would you build with them in Cesium? Consider John Madden annotation synchronized between multiple Cesium clients!
  • Three.js - demonstrate how Cesium can be combined with the Three.js WebGL library perhaps by syncing camera views between Cesium and Three.js canvases, overlaying a translucent Three.js canvas over Cesium, or embedding Three.js in Cesium's render loop.
  • WebCL - What would you do with hundreds of cores and the ability to launch thousands of threads? WebCL exposes the GPU - and its massively parallel processors - to JavaScript (browser or with Node.js). How would combine this with Cesium?
  • Cesium on the server - Test out node-webgl. Is it robust enough to run Cesium on the server? Can we make it robust enough? What would we do with it? Perhaps server-side rendering of massive models or for clients without WebGL? Tip: if you are interested in this project, to best way to have a strong GSoC application is to code a quick demo (start here), post it on GitHub, and include a link in your GSoC application.

References

  • Cesium tutorials
  • Also check out the tutorials for the other libraries you plan to use.

Skills: JavaScript, HTML, CSS, UI/UX, git, Node.js, various front-end and back-end libraries

Level: Beginner / Intermediate

Mentor: Patrick Cozzi: @pjcozzi, [email protected]

Backup Mentor: Matt Amato: @matt_amato, [email protected]

## Compass / Navigation Widget

Currently, Cesium allows users to rotate the camera around a point on the ground by middle-click dragging or by holding CTRL while left-click dragging. It would be extremely helpful to expose this interaction in a more novice-friendly manner - as well as indicate which direction is North - with a navigation widget.

Students may optionally use the navigation widget in the Cesium-based application National Map as a starting point and modify it to:

  • fit nicely within the Cesium architecture
  • work in 2D and Columbus View
  • accommodate any other suggestions or requirements from the Cesium committers and community

References

Skills: JavaScript, HTML, CSS, UI/UX, git, Knockout, vectors and matrices

Level: Intermediate

Mentor: Kevin Ring, [email protected]

Backup Mentor: Dan Bagnell: [email protected]

## Suggest your own idea

We're excited to hear your ideas for projects that would benefit the Cesium community. Perhaps you're interested in WebGL and JavaScript optimization, and want to improve the core engine? Perhaps you are passionate about geospatial data formats and want to write new loaders for Cesium? Or perhaps you are excited about WebVR and want to create the ultimate virtual reality app with Cesium?

Whatever it is, we want to hear about it! Pitch your idea and find a mentor by posting a short description to the Google Summer of Code 2015 thread on the Cesium forum.

Tip: the best way to get a potential mentor's attention is to code a quick prototype (start here), post it on GitHub, and include a link when you post to the Google Summer of Code 2015 thread.

References

Skills: Depends on the project

Level: Beginner to Advanced

Mentor: Find one on the Cesium forum by posting to the Google Summer of Code 2015 thread

Backup Mentor: See above