Skip to content

Software Development News: .NET, Java, PHP, Ruby, Agile, Databases, SOA, JavaScript, Open Source

Methods & Tools

Subscribe to Methods & Tools
if you are not afraid to read more than one page to be a smarter software developer, software tester or project manager!

Google Open Source Blog
Syndicate content
News about Google's Open Source projects and programs.
Updated: 2 hours 35 min ago

Student ambassadors bring GSoC 2015 to more African students

Thu, 04/16/2015 - 14:00
Student applications for Google Summer of Code (GSoC) 2015 closed on March 27th and this year’s mentoring organizations are now busy reviewing student proposals. While we await the results of that process, we’ve been looking at some of the early statistics for this year’s program.
One thing we’re very excited to see is that we received nearly four times as many student applications from Sub-Saharan Africa compared to last year! The gain primarily came from four countries: Cameroon, Kenya, Nigeria, and Uganda. These countries combined had just 45 students apply in 2014, but that number jumped up to 183 this year. Why was the increase concentrated in these locations? There’s a common thread that seems to be responsible: they are places where students active in the Google Student Ambassador (GSA) program organized local GSoC meet-up events.
Cameroon
After lending a hand to a fellow student organizing a meetup in December, GSA Tekang Check brought 77 students together in March at the University of Buea to learn about GSoC and help students apply. Participants from past years shared their experiences and encouraged attendees to submit proposals for projects they felt passionate about.

Kenya
GSA John Muchiri welcomed over 100 students from St Paul’s University to a GSoC meet-up. The speakers talked about the characteristics good programmers develop and encouraged students to challenge themselves by applying to the program.
At Jomo Kenyatta University of Agriculture and Technology, GSAs Isaac Jumba and Dickson Marienga introduced students to GSoC as part of the local DevFest event which drew over 150 attendees. The session gave an overview of GSoC and encouraged students to sign up for a regional GSoC enthusiasts mailing list.

Nigeria
GSAs Ilo Calistus, Okwara Godswill, and Mgbemena Chike collaborated on a pair of events at the University of Nigeria in Nsukka. The first introduced students to the basics of programming for Android while the second taught students about using Git. Both events also introduced students to the world of open source and encouraged them to take part in GSoC.

At Ekiti State University, GSAs Sadiq Mary Oiza and Alabea Dare Micheal organized a GSoC meet-up for 35 students. After a discussion about current events at the university, the presenters gave an overview of the GSoC program and encouraged students to create profiles on the program website.

GSA James Uzoma organized a meet-up at the Federal University of Agriculture, Abeokuta where 40 students from 6 colleges enjoyed a series of talks featuring stories from fellow Nigerians who had participated in past years, an explanation of the requirements for participating, and some details about the different open source organizations students could apply to work with.
Uganda
GSA Kagimu Brian brought together 72 students for a GSoC meet-up at Mbarara University of Science and Technology. Attendees learned about the benefits and experiences that can come from taking part in GSoC, along with an introduction to Git.


Only a limited number of students can be accepted in GSoC each year, but we hope to welcome several of the students who attended these events into this year’s program. Accepted students will be notified via email by 19:00 UTC on April 27th, so keep watching your inbox.

By Ashleigh Rentz, Open Source team
Categories: Open Source

UIforETW: Windows Profiling Made Easier

Tue, 04/14/2015 - 17:00
Microsoft’s Event Tracing for Windows (ETW, aka xperf) is an amazing tool for understanding the performance of Windows computers. ETW offers an incredibly deep view into the entire system and allows investigations of complex problems that would otherwise be intractable. It can even be used to record traces on a customer’s machine for later analysis on a developer’s machine, to investigate performance problems that cannot be reproduced locally.

However, the process of recording ETW trace has always been challenging, so we’re pleased to share a new tool we’ve been developing:  UIforETW. This tool brings point-and-click simplicity to recording ETW traces, works around several trace recording bugs, and is a handy dashboard for managing and annotating traces. And since UIforETW is open source, you can add additional features for your own particular needs.



Tracing can be done to a file or to an in-memory circular buffer. Trace compression, high-speed sampling, heap tracing, and other options can be configured with the click of a button. UIforETW lists the recorded traces and lets users rename and annotate them. When you want to analyze a trace, you can launch Microsoft’s trace viewers from UIforETW, and UIforETW will configure improved viewer defaults for WPA.

UIforETW was written by a Chrome developer, so it has a few Chrome specific features. If the Chrome symbol server is enabled, then UIforETW downloads and strips the Chrome symbols in order to avoid a twenty five minute delay when WPA loads the symbols. UIforETW also preprocesses the traces in order to categorize the Chrome processes by type. These features can be turned off in the Settings dialog if you aren’t working on Chrome. While the Chrome specific features will not be needed by most developers, they demonstrate the potential value from custom processing of traces.

UIforETW is a new project but is already being used for production work. More technical details and information about UIforETW and ETW in general can be found in the author's blog post and discussions can be had at our discussion group. Information about contributing to UIforETW can be found in the CONTRIBUTING file in the GitHub repo.
by Bruce Dawson, Chrome team
Categories: Open Source

FlatBuffers 1.1: a memory-efficient serialization library

Mon, 04/13/2015 - 22:51
After months in development, the FlatBuffers 1.1 update is here. Originally released in June 2014, it’s a highly efficient open source cross-platform serialization library that allows you to read data without parsing/unpacking or allocating additional memory. It supports schema evolution (forwards/backwards compatibility) and optional JSON conversion. We primarily created it for games written in C++ where performance is critical, but it’s also useful more broadly. This update brings:

  • an extensive overhaul to the Java API
  • out-of-the-box support for C# and Go
  • an optional verifier to make FlatBuffers practical in untrusted scenarios
  • .proto parsing for easier migration from Protocol Buffers
  • optional manual assignment of field IDs
  • dictionary functionality through binary search on a key field
  • bug fixes and other improvements thanks to 200+ commits from 28 contributors -- thank you!


Download the latest release from our github page and join our discussion list for more details.
By Wouter van Oortmerssen, Fun Propulsion Labs at Google*
*Fun Propulsion Labs is a team within Google that's dedicated to advancing gaming on Android and other platforms.
Categories: Open Source

Google Code-in 2014 wrap up with Drupal

Fri, 04/10/2015 - 17:00
Drupal, one of the Google Code-in 2014 mentoring organizations, has been working toward the release of a new major version. Grand prize winner Getulio Valentin Sanchez contributed to the upcoming release during the contest and shared his story with us.

I was 13 years old the first time I got access to a computer. I had no idea how to connect it to the internet, but that didn’t stop me from experimenting. When I was 14, I saw a documentary about Google and discovered that “programming” and “coding” were completely different things than I’d thought. In that same documentary, I saw Google’s offices and I resolved to myself that I would try to visit them in person by the time I turned 18.
After participating in an OMAPA Computer Olympics event here in Paraguay, a Google Code-in (GCI) mentor from Sugar Labs contacted me to ask if I could help spread the word about GCI in my local community. During that conversation, the mentor encouraged me to enter GCI myself. He pointed out that Drupal was one of the mentoring organizations and they use a lot of PHP, the language I’m most familiar with.
Before GCI, I had never worked with an open source project, nor did I know how to create a patch or anything like that. But since it was a possible opportunity to achieve the dream I’d set for myself, I thought “why not learn something new?”
When the contest began, I got to work on my first task: porting the simple but useful Scroll To Top module to Drupal 8. It was astonishing to me when my patch was approved and committed. With that astonishment came an amazing sensation in knowing that somewhere in the world, someone will be using something that I made. Tasks like these were a little challenging, but I quickly fell in love with this type of work and created a series of blog posts and a video about the process.
I continued porting modules to Drupal 8 throughout the GCI contest. I think the most difficult task I faced was porting the Administer Users by Role module. This wasn’t because it’s a large module, but rather because I had to learn about access checking which I’d never heard about before. Although this wasn’t impossible, it took me about a week to get an initial version ready for the community’s consideration.
The seven weeks I spent participating in GCI taught me a lot. I learned about following coding standards, programming concepts like dependency injection and the Hollywood principle, some of the more powerful features of Git, and features of PHP that I hadn’t even known existed!
People say every end is a new beginning, and that’s been true for me. The end of GCI 2014 was also the beginning of my experience as a regular contributor to Drupal. I now spend my weekends working with this amazing platform and collaborating with the Drupal community. And soon, I’ll be beginning my journey to see Google’s offices in person like I’d dreamed of before -- I began with a humble “Hello World” and eventually became one of the GCI 2014 Grand Prize Winners.

by Getulio Valentin Sanchez, GCI grand prize winner
Categories: Open Source

How to format Python code without really trying

Thu, 04/09/2015 - 21:54
Years of writing and maintaining Python code have taught us the value of automated tools for code formatting, but the existing ones didn’t quite do what we wanted. In the best traditions of the open source community, it was time to write yet another Python formatter.
YAPF takes a different approach to formatting Python code: it reformats the entire program, not just individual lines or constructs that violate a style guide rule. The ultimate goal is to let  engineers focus on the bigger picture and not worry about the formatting. The end result should look the same as if an engineer had worried about the formatting.
You can run YAPF on the entire program or just a part of the program. It’s also possible to flag certain parts of a program which YAPF shouldn’t alter, which is useful for generated files or sections with large literals.
Consider this horribly-formatted code:
x = {  'a':37,'b':42,
'c':927}
y = 'hello ''world'z = 'hello '+'world'a = 'hello {}'.format('world')class foo  (     object  ):  def f    (self   ):    return       \37*-+2  def g(self, x,y=42):      return ydef f  (   a ) :  return      37+-+a[42-x :  y**3]
YAPF reformats this into something much more consistent and readable:
x = {'a': 37, 'b': 42, 'c': 927}
y = 'hello ' 'world'z = 'hello ' + 'world'a = 'hello {}'.format('world')

class foo(object):    def f(self):        return 37 * -+2
   def g(self, x, y=42):        return y

def f(a):    return 37 + -+a[42 - x:y ** 3]
Head to YAPF's GitHub page for more information on how to use it, and take a look at YAPF’s own source code to see a much larger example of the output it produces.
by Bill Wendling, YouTube Code Health Team
Categories: Open Source

Google Summer of Code: Meet-up Round-up!

Thu, 04/09/2015 - 21:51
Over the past ten years, Google Summer of Code (GSoC) has given over 8,500 students a bridge into open source communities. GSoC alumni have played a large role in the program’s success by encouraging their fellow students to take part. Around the world, energetic students who have already participated in GSoC lead the way by hosting meet-up events that help others learn about the opportunities GSoC provides and get answers to their questions about the program. Who better than GSoC alumni to tell students what it’s really like spending the summer coding for open source projects?

Student applications for GSoC 2015 are open until March 27th, so the community has been spreading the word at school and beyond during the past few months. Here are just a few of the student-initiated events we’ve heard about recently.
Buea, Cameroon: 17 December 2014
Chris Nuvagda wanted to spread the word about GSoC after finishing his project, so he reached out to other GSoC alumni at the University of Buea to make it happen. Over 150 students attended the meet-up, with about 30% being women -- a number we’re happy to hear since only 10% of GSoC 2014 students were women and we’re trying to improve on that. The 5 presenters spoke about their experiences in GSoC and the benefits of it, gave advice on writing a great proposal, and shared what it’s like for women working in open source. Read more...


Delhi, India: 31 January 2015
Heena Mahour and Ayush Gupta hosted a meet-up for about 200 prospective students and open source enthusiasts. With help from others in their community, they organized a full-day event featuring 8 speakers. Students who previously participated with organizations like KDE, OWASP, and Mifos shared their experiences and answered questions from the audience. Technical topics were also discussed, including memory leaks and an introduction to version control systems. Read more...


Udine, Italy: 24 February 2015
Claudio Desideri spent GSoC 2014 coding for KDE and organized a meet-up for students at the University of Udine. With 80 attendees, there were just barely enough seats for everyone. Claudio shared his personal experiences but also learned that many students who might want to apply to GSoC fear being judged by potential mentors or failing out of the program. He helped reassure students that GSoC is an opportunity to grow and that they aren’t expected to already know everything. Read more...


Bangalore, India: 2 March 2015
With a desire to increase the participation of nearby colleges, especially among female students, Tejas Dharamsi and Rajath Kumar organized a GSoC meet-up at the Google Bangalore office. 102 students, including 44 women, from 11 colleges gathered to hear from the 6 speakers who shared details about the coding projects they worked on and gave practical advice for students applying to GSoC for the first time. The ending panel discussion gave attendees a chance to ask questions and offered students encouragement to apply for the program. Read more...


Kampala, Uganda: 12 March 2015
Organized by Kaweesi Joseph with help from OpenMRS, the organization he worked with during GSoC 2014, more than 110 students gathered for this meet-up. The 5 presenters discussed the benefits of contributing to open source, how students can participate in GSoC, and how OpenMRS is being used in Uganda. Read more...


We thank these GSoC alumni and many more who are spreading their enthusiasm for open source in their local communities. It’s because of local networking events like these that GSoC is able to have rich representation from all around the world. We look forward to welcoming some of these meet-up attendees into the upcoming Google Summer of Code 2015 -- don’t forget to apply before March 27th!

By Ashleigh Rentz, Open Source team, with thanks to everyone who allowed us to share their stories and photos here.
Categories: Open Source

We throw pie with a little help from our friends

Thu, 04/09/2015 - 21:32

(Cross-posted with the Google Developers Blog)

Fun Propulsion Labs at Google* is back today with some new releases for game developers. We’ve updated Pie Noon (our open source Android TV game) with networked multi-screen action, and we’ve also added some delicious new libraries we’ve been baking since the original release: the Pindrop audio library and the Motive animation system.

Pie Noon multi-screen action

Got an Android TV and up to 4 friends with Android phones or tablets? You’re ready for some strategic multi-player mayhem in this updated game mode. Plan your next move in secret on your Android phone: will you throw at an opponent, block an incoming attack, or take the risky approach and wait for a larger pie? Choose your target and action, then watch the Android TV to see what happens!

We used the NearbyConnections API from the most recent version of Google Play Games services to easily connect smartphones to your Android TV and turn our original Pie Noon party game into a game of turn-based strategy. You can grab the latest version of Pie Noon from Google Play to try it out, or crack open the source code and take a look at how we used FlatBuffers to encode data across the network in a fast, portable, bandwidth-efficient way.

Pindrop: an open source game audio library

Pindrop is a cross-platform C++ library for managing your in-game audio. It supports cross compilation to Android, Linux, iOS and OSX. An early version of this code was part of the first Pie Noon release, but it’s now available as a separate library that you can use in your own games. Pindrop handles loading and unloading sound banks, tracking sound locations and listeners, prioritization of your audio channels, and more.

Pindrop is built on top of several other pieces of open source technology:

  • SDL Mixer is used as a backend for actually playing the audio.
  • The loading of data and configuration files is handled by our serialization library, FlatBuffers.
  • Our own math library, MathFu, is used for a number of under-the-hood calculations.

You can download the latest open source release from our GitHub page. Documentation is available here and a sample project is included in the source tree. Please feel free to post any questions in our discussion list.

Motive: an open source animation system

The Motive animation system can breathe life into your static scenes. It does this by applying motion to simple variables. For example, if you’d like a flashlight to shine on a constantly-moving target, Motive can animate the flashlight so that it moves smoothly yet responsively.

Motive animates both spline-based motion and procedural motion. These types of motion are not technically difficult, but they are artistically subtle. It's easy to get the math wrong. It's easy to end up with something that moves as required but doesn't quite feel right. Motive does the math and lets you focus on the feeling.

Motive is scalable. It's designed to be extremely fast. It also has a tight memory footprint -- smaller than traditional animation compression -- that's based on Dual Cubic Splines. Our hope is that you might consider using Motive as a high-performance back-end to your existing full-featured animation systems.

This initial release of Motive is feature-light since we focused our early efforts on doing something simple very quickly. We support procedural and spline-based animation, but we don't yet support data export from animation packages like Blender or Maya. Motive 1.0 is suitable for props -- trees, cameras, extremities -- but not fully rigged character models.  Like all FPL technologies, Motive is open source and cross-platform. Please check out the discussion list, too.

What’s Fun Propulsion Labs at Google?

You might remember us from such Android games as Pie Noon, LiquidFun Paint, and VoltAir, and such cross-platform libraries as MathFu, LiquidFun, and FlatBuffers.

Want to learn more about our team? Check out this recent episode of Game On! with Todd Kerpelman for the scoop!

by Jon Simantov, Fun Propulsion Labs at Google

* Fun Propulsion Labs is a team within Google that's dedicated to advancing gaming on Android and other platforms.

Categories: Open Source

Introducing gRPC, a new open source HTTP/2 RPC Framework

Thu, 04/09/2015 - 19:37

(Cross-posted from the Google Developers Blog)

Today, we are open sourcing gRPC, a brand new framework for handling remote procedure calls. It’s BSD licensed, based on the recently finalized HTTP/2 standard, and enables easy creation of highly performant, scalable APIs and microservices in many popular programming languages and platforms. Internally at Google, we are starting to use gRPC to expose most of our public services through gRPC endpoints as part of our long term commitment to HTTP/2.

Over the years, Google has developed underlying systems and technologies to support the largest ecosystem of micro-services in the world; our servers make tens of billions of calls per second within our global datacenters. At this scale, nanoseconds matter. Efficiency, scalability and reliability are at the core of building Google’s APIs.

gRPC is based on many years of experience in building distributed systems. With the new framework, we want to bring to the developer community a modern, bandwidth and CPU efficient, low latency way to create massively distributed systems that span data centers, as well as power mobile apps, real-time communications, IoT devices and APIs.

Building on HTTP/2 standards brings many capabilities such as bidirectional streaming, flow control, header compression, multiplexing requests over a single TCP connection and more. These features save battery life and data usage on mobile while speeding up services and web applications running in the cloud.

Developers can write more responsive real-time applications, which scale more easily and make the web more efficient. Read more about the features and benefits in the FAQ.

Alongside gRPC, we are releasing a new version of Protocol Buffers, a high performance, open source binary serialization protocol that allows easy definition of services and automatic generation of client libraries. Proto 3 adds new features, is easier to use compared to previous versions, adds support for more languages and provides canonical mapping of Proto to JSON.

The project has support for C, C++, Java, Go, Node.js, Python, and Ruby. Libraries for Objective-C, PHP and C# are in development. To start contributing, please fork the Github repositories and start submitting pull requests. Also, be sure to check out the documentation, join us on the mailing list, visit the IRC #grpc channel on Freenode and tag StackOverflow questions with the “grpc” tag.

Google has been working closely with Square and other organizations on the gRPC project. We’re all excited for the potential of this technology to improve the web and look forward to further developing the project in the open with the help, direction and contributions of the community.


by Mugur Marculescu, Product Manager
Categories: Open Source

Classp: a “classier” way to parse

Thu, 04/09/2015 - 19:37
If you’ve worked on compilers, translators, or other tools that need to read a programming language, chances are you’ve spent many painful hours detailing that language’s grammar. Recently, we opened up the source code for Classp, a side-project a few of us have been working on that demonstrates it’s possible to have an automatic parser generator that is not based on formal grammars. Instead of grammar productions, you write classes similar to C++ or Java and you write class patterns to define the syntax. Although there are libraries like Boost.Spirit and Scala Parsers that give you a nice way to write a grammar in the programming language itself, in the end you are still writing a grammar. Even though Classp looks a lot like C++ or Java, it is not just a C-like way to write a grammar. It’s an entirely different way to specify syntax.
Grammars are great for diagramming a complex syntactic structure for human readers, but as a computer specification, they leave a lot to be desired. Four key problems with grammars inspired us to work on Classp as an alternative.
First, a grammar is intended to represent the actual syntactic structure of the language: all of the little details like what goes first and what goes second, where to put your commas and semicolons, where can you substitute one thing for another, etc... But this surface structure doesn’t really matter to the programmer who wants to process the language. It just gets in the way. What you really care about are the logical parts of the declaration: what is the type? What is the name? Is there an initializer and what is it?
Second, many common parser generators don’t actually specify any tree at all. They let the programmer write actions to build up a parse tree. But the actions in most systems tend to form an awkward fit with the grammar.
Next, when you write a grammar, you have to worry not just about the surface structure of the language, but also about how the language will be parsed. You have to write the grammar around ambiguities in the language and sometimes around other features. You can’t just write the rules as you would write them for a human reader:
Expr ::= Int | ( Expr ) | Expr + Expr | Expr - Expr | Expr * Expr | Expr / Expr
instead, you have to write them in a way that avoids ambiguity:
Expr ::= Expr + Term | Expr - Term;Term ::= Term * Factor | Term / FactorFactor ::=  Int | ( Expr )
Finally, grammar-based parsers are extremely verbose. For serious parsing tasks, it is common to write a grammar, design a parse tree, write actions in the grammar to create the parse tree, design an abstract syntax tree, and write code to translate the parse tree into an abstract syntax tree. There are many dependencies among these parts that all have to be kept consistent over the life of the program. It’s a complex and error-prone process.
Classp attempts to avoid these problems. The abstract syntax tree is what programmers typically want to work with. With class patterns, you only have two jobs: design the abstract syntax tree and write a formatter for it. (A formatter is the function that writes out the abstract syntax tree in the target language.)
Here’s an example class declaration for an abstract syntax tree. The class pattern is the part inside the parentheses of the syntax statement: “arg1 '+' arg2”.
class Plus: Expression {  Expression arg1;  Expression arg2;  syntax(arg1 '+' arg2);}
This class pattern says that to print a Plus node, you first print arg1, then you print a plus sign, then you print arg2. So it looks like a nice formatting language, but where do we specify the parser? The answer is that we don’t specify a parser; Classp will invert the formatter to generate a parser for us. Since formatters are typically much easier to write and maintain than parsers, it almost feels like magic.
Classp is still a work in progress. We still have to deal with ambiguity in languages, features that are only output in one way but may be input in several ways, and a few other issues. But it’s ready to play with now and we’d love to hear from others interested in this subject. To learn more, visit http://google.github.io/classp.

By David Gudeman, Classp team
Categories: Open Source

RE2/J: Linear-time regular-expression matching for Java

Thu, 04/09/2015 - 19:37
Today we’re announcing the public release of RE2/J: a pure-Java implementation of the popular RE2 regular expression library.
Although RE2/J is not always faster than java.util.regexp, its running time is always linear in the size of the input. Thus when matching larger inputs, especially against patterns containing a high degree of alternation, RE2/J may be dramatically faster. With a backtracking implementation such as java.util.regexp, it is not hard to construct a pathological pattern whose matcher would take years to run on some inputs, so RE2/J's performance guarantee makes it suitable for use in applications where the pattern is supplied by untrusted users, such as the clients of a web server.
If you are looking for a detailed technical discussion of the motivation for RE2 and RE2/J and the tradeoffs involved, please see “Regular Expression Matching Can Be Simple And Fast” and “Regular Expression Matching in the Wild”, both written by Russ Cox.
RE2/J is used widely by Java projects within Google. In many cases, it can be used as a drop-in replacement for java.util.regexp. We are pleased to be able to make this library available for public consumption.
Please head to RE2/J’s GitHub page to find out how to use it!
By James Ring, Google Engineering
Categories: Open Source

MapReduce for C: Run Native Code in Hadoop

Thu, 04/09/2015 - 19:37
MapReduce for C: Run Native Code in Hadoop

We are pleased to announce the release of MapReduce for C (MR4C), an open source framework that allows you to run native code in Hadoop.

MR4C was originally developed at Skybox Imaging to facilitate large scale satellite image processing and geospatial data science. We found the job tracking and cluster management capabilities of Hadoop well-suited for scalable data handling, but also wanted to leverage the powerful ecosystem of proven image processing libraries developed in C and C++. While many software companies that deal with large datasets have built proprietary systems to execute native code in MapReduce frameworks, MR4C represents a flexible solution in this space for use and development by the open source community.

MR4C.png

MR4C is developed around a few simple concepts that facilitate moving your native code to Hadoop. Algorithms are stored in native shared objects that access data from the local filesystem or any uniform resource identifier (URI), while input/output datasets, runtime parameters, and any external libraries are configured using JavaScript Object Notation (JSON) files. Splitting mappers and allocating resources can be configured with Hadoop YARN based tools or at the cluster level for MRv1.  Workflows of multiple algorithms can be strung together using an automatically generated configuration. There are callbacks in place for logging and progress reporting which you can view using the Hadoop JobTracker interface. Your workflow can be built and tested on a local machine using exactly the same interface employed on the target cluster.

If this sounds interesting to you, get started with our documentation and source code at the MR4C GitHub page.  The goal of this project is to abstract the important details of the MapReduce framework and allow users to focus on developing valuable algorithms. Let us know how we're doing in our Google Group.
By Ty Kennedy-Bowdoin, Skybox team
Categories: Open Source

Google Code-in 2014 wrap up with FOSSASIA

Fri, 04/03/2015 - 17:00
Although best known for their namesake conference, FOSSASIA also acts as an umbrella organization which supports development of open source software linked to Asia or Asian developers. They participated in Google Code-in 2014 and shared this report with us.

2014 marked FOSSASIA’s first year participating in Google Code-in (GCI) as a mentoring organization, and what a splash we made! Students completed 587 tasks with us, the most of any organization in this year’s program. These bite-sized tasks gave young students ages 13 to 17 an opportunity to participate in open source development with the help of mentors. A total of 174 students completed at least one task with us -- they wrote code, designed artwork, tested software, and had a lot of fun.
GCI is a contest and each mentoring organization chooses two Grand Prize winners. Ours were Namanyay Goel and Samarjeet Singh. They’ll travel all-expenses-paid with a parent or guardian to Google headquarters in Mountain View, California. We also had three finalists who deserve a hearty congratulations: Alvis Wong, Amr Ramadan, and Tymon Radzik. We are thankful for your contributions.
Students contributed to the FOSSASIA website along with open source projects like the ExpEYES tool for at-home science experiments, the sup console-based email client, the TiddlySpace idea-organizer, and the p5.js drawing library. This wide variety of opportunities was possible thanks to the efforts of our 24 mentors who found time between their other obligations to help students. Thank you, mentors!
Usually, novice contributors to a project face a significant barrier to entry. There are coding conventions to follow, guidelines for combining or breaking up multiple commits, and more that can be specific to a project. Such requirements help keep the codebase healthy and consistent, but their value isn’t apparent to beginners who have already struggled to produce a contribution and just want to see it integrated. To reduce the discouragement GCI students would face, we decided to merge students’ first pull requests if they get the job done, even if they don’t follow our usual practices. Later, students could accept a task which teaches them about our standards for contributions, giving them a chance to clone and rebase a sample repo so that it follows the rules. Students who completed this task and continued working with us understood the terminology and were able to apply our feedback to their later commits without the usual frustration.
We had a fantastic time participating in GCI and would like to thank all the students who took part in the contest. We’re thrilled to see some of them still hanging around in our community and wish them all an exciting and fruitful future.
By Aruna Herath, FOSSASIA mentor
Categories: Open Source

Google Code-in 2014 wrap up with OpenMRS

Fri, 03/27/2015 - 17:00
OpenMRS is a medical records system used around the world, especially in places where resources are scarce. It’s also being used with Google’s chlorine-submersible tablets designed for Médecins Sans Frontières to use while treating ebola patients. The OpenMRS community recently participated in Google Code-in, providing young students with an opportunity to get involved with real open source projects and learn about contributing to them. Chaitya Shah, one of OpenMRS’ two grand prize winners, shared this story with us about his participation in the contest.
GCI_2014_logo_small.png
For 7 weeks in December 2014 and January 2015, I worked with OpenMRS in the Google Code-in (GCI) competition. GCI introduces highschool aged kids to open source software development by providing a wide variety of tasks we can complete. For me, it has worked wonders. I’d been interested in the concept of open source software for about a year and even participated in GCI 2013, but this year, the experience turned my interest into a passion. I worked on many new things, met lots of new people, and learned several important skills along the way.

A few days before the competition started, I decided to see how OpenMRS’s software worked. I went through the GitHub repositories and tried to get openmrs-core, the main application, running. After a few tries and the help of several contributors on IRC, I was finally able to do so. Their help showed me what the OpenMRS community was truly about: everyone was very helpful throughout the contest and there was always someone online to help me out at any time of the day.
Several of the tasks I worked on this year were much more complex than the ones I worked on last year, giving me more of a challenge and motivating me to put forth my best effort! The early tasks, however, involved getting acquainted with the OpenMRS community and learning how things work in the organization. Several of these tasks taught some key aspects of open source software or of programming in general. One of the simplest but most important tasks was introducing myself to the community. If the communication between a developer and an organization is weak, the code produced will suffer. It was also inspiring to see so many other people interested in contributing to OpenMRS through GCI.
After learning the basics of OpenMRS, I started to explore tasks in the UI Revamp epic. With guidance from a mentor, I worked on making the OpenMRS ID site look more like the redesigned wireframes provided. These tasks really taught me a lot about design, one of my weak points. I used to know very little about HTML/CSS in general. The revamp tasks taught me about good practices in UI Design and I loved every minute of it.
In the last two weeks of the competition, I decided that I was ready to contribute something brand new to the organization. While deploying OpenMRS on the OpenShift cloud platform as part of a task, I found the developer guide was vague in some areas and difficult to follow. It took me a few days and some experimentation to get it working. To ensure that others wouldn’t have the same troubles, I made two videos showing the exact steps to follow: one for Windows and one for Unix-based systems.
After that, I decided to take on a Docker task. Docker is a system that lets you build, ship, and run distributable applications. This task directed me to create an image that downloads, sets up, and runs OpenMRS automatically. I was slightly overwhelmed at first, but Docker proved to be quite useful because it uses a system of containers rather than virtual machines, making it much faster and easier to deploy applications. I felt a big sense of accomplishment once I had finished publishing my work, writing up documentation, and making a quick video tutorial on how to set it up.
I learned a lot from OpenMRS and GCI this year. I was especially impacted by the weight that community interaction has in open source work. Previously, I’d always had the notion that being a programmer is very lonesome, sitting in a room with nothing but a computer for many hours at a time. However, I now know that everything in open source software development is collaborative; everyone works together to accomplish a single goal. I hope to someday find a job with a company that embraces this collaborative nature. Thank you to OpenMRS and GCI for an awesome experience this year!

By Chaitya Shah, GCI grand prize winner
Categories: Open Source

GSoC project Sambamba published in scientific journal

Fri, 03/20/2015 - 17:00
Student applications for this year’s Google Summer of Code (GSoC) are still open until March 27th. One of our goals with GSoC is to inspire young developers to participate in open source development, hopefully continuing well beyond the summer. Pjotr Prins from the Open Bioinformatics Foundation shared this story with us about a GSoC 2012 student who has continued leading the development of a software tool used in laboratories around the world. That tool, Sambamba, was recently featured in an Oxford University Press scientific journal.

The Open Bioinformatics Foundation (OBF) participated in Google Summer of Code (GSoC) in 2012 and again in 2014. One of our projects, Sambamba, enables users to rapidly process large sequence alignment files in the SAM, BAM and CRAM formats using parallel processing. Sambamba, which means “parallel” in Swahili, was recently the subject of a paper published in Bioinformatics Journal by GSoC alumnus Artem Tarasov. Since the tool is now used in DNA sequencing centres around the world, Artem has become well known in the bioinformatics community as Sambamba’s creator.
When we participated in GSoC 2012, we accepted five students, one of whom was Artem. His project was to “write the fastest parallelized BAM parser in D” as an alternative to the existing SAMtools software written in single-threaded C. I consider the D language to be particularly well-suited to bioinformatics given its modern hybrid OOP/functional syntax with close-to-the-metal performance optimizations.
Even before GSoC started that year, Artem was doing research and cranking out code. In his blog, he wrote about learning the D language, dealing with parallel executing code, and the sometimes-buggy compiler and garbage collector. The file formats he was working with are complicated and contain many assumptions, but he made wise choices which led to a very effective piece of software: people tend to rave about Sambamba when they use it the first time. Artem and I continued working on Sambamba after GSoC and before long, I found that he was the one mentoring me!
Since then, Artem has been invited to visit the Cuppen sequencing lab in the Netherlands where he added depth analysis to Sambamba. This is also when we started work on the manuscript for the Bioinformatics Journal. Later, the OBF was able to sponsor a second trip to the European Bioinformatics Institute in Cambridge, UK where he and I took part in a Codefest and met with other bioinformatics researchers and developers, including some OBF contributors.
Artem isn’t our only GSoC student who has continued making a difference in open source. Four of our five GSoC 2012 students are still active FOSS committers on GitHub, with three of them continuing in the bioinformatics space. Although GSoC can be competitive and we haven’t been accepted into the program every year, we’re grateful for the opportunities it has given us. Organizations like OBF and SciRuby are proof that GSoC and scientific projects work really well together. Without GSoC, Artem and I would probably not have ever met. He and I both hope to introduce more students to scientific open source projects in the future.

By Pjotr Prins, Sambamba GSoC Mentor
Categories: Open Source

Google Summer of Code now open for student applications

Mon, 03/16/2015 - 20:00
If you’re a university student looking to earn real-world experience this summer, consider writing code for a cool open source project with the Google Summer of Code program.

GoogleSummer_2015logo_horizontal.jpg

Students who are accepted into the program will put the skills they have learned in university to good use by working on an actual software project over the summer. Students receive a stipend and are paired with mentors to help address technical questions and concerns throughout the course of the project. With the knowledge and hands-on experience students gain during the summer, they strengthen their future employment opportunities. Best of all, more source code is created and released for the use and benefit of all.

Interested students can submit proposals on the website starting now through Friday, March 27 at 19:00 UTC. Get started by reviewing the ideas pages of the 137 open source projects in this year’s program and decide which projects you’re interested in. Because Google Summer of Code has a limited number of spots for students, writing a great project proposal is essential to being selected to the program — be sure to check out the Student Manual for advice.

For ongoing information throughout the application period and beyond, see the Google Open Source Blog, join our Summer of Code mailing lists or join us on Internet relay chat at #gsoc on Freenode.

Good luck to all the open source coders out there, and remember to submit your proposals early — you only have until March 27 to apply!
By Carol Smith, Google Open Source team
Categories: Open Source

Google Code-in 2014 wrap up with Haiku

Fri, 03/13/2015 - 17:00
The Haiku community is developing a new operating system for personal computing. They were one of the twelve organizations who mentored students during Google Code-in 2014, our contest introducing 13 to 17 year old students to working in open source communities. Today, Scott McCreary reflects on the achievements of students who participated with Haiku.

GCI 2014.png
2014 was the fifth year for Google Code-in (GCI) and also Haiku’s fifth year participating. This was the first year where we offered beginner tasks designed to give students an easy way to get started. These tasks introduced students to booting and using Haiku, compiling Haiku, and using Haikuporter to build a package from a recipe file.
149 students completed at least one task with us this year and 36 students completed at least three tasks with us to earn a GCI t-shirt. Six students completed over 20 tasks each in a bid to become grand prize winners. Each mentoring organization selected two grand prize winners and three finalists. Our finalists were Augustin Cavalier, Markus Himmel and Chirayu Desai. (Chirayu was also a GCI 2013 winner with RTEMS.) Our winners were Josef Gajdusek and Puck Meerburg.
After getting started with beginner tasks, many students moved on to tasks which added improvements to Haiku or fixed bugs. Students contributed to HaikuWeather, SuperFreeCell, BookmarkConvert, and our CatKey editor. Many HaikuPorter recipes were added and updated, making it easier to bring existing software into Haiku. Several tickets were resolved, new GUI controls were created, new screensavers were added, and several apps were updated to make use of Layout Manager. In total, students completed a staggering 435 tasks for Haiku during the contest.
GCI grand prize winners are invited to San Francisco for an award trip. Last year, I had the pleasure of attending as a mentor along with our 2013 winners. This year, the winners selected Adrien Destugues (a former Google Summer of Code student, now one of our most active contributors) as the mentor they’d like to meet on the trip. I’m excited for the great time they’ll have!
I'd like to thank the 17 Haiku mentors and all 149 students who took part in GCI with Haiku this year. Also, a special thanks to our community members who were on IRC to help students during the contest. Finally, a shout-out to Stephanie Taylor and the rest of the team at Google for running Google Code-in and selecting Haiku to participate.
By Scott McCreary, Haiku GCI mentor
Categories: Open Source

Bidding farewell to Google Code

Thu, 03/12/2015 - 17:00

When we started the Google Code project hosting service in 2006, the world of project hosting was limited. We were worried about reliability and stagnation, so we took action by giving the open source community another option to choose from. Since then, we’ve seen a wide variety of better project hosting services such as GitHub and Bitbucket bloom. Many projects moved away from Google Code to those other systems. To meet developers where they are, we ourselves migrated nearly a thousand of our own open source projects from Google Code to GitHub.

As developers migrated away from Google Code, a growing share of the remaining projects were spam or abuse. Lately, the administrative load has consisted almost exclusively of abuse management. After profiling non-abusive activity on Google Code, it has become clear to us that the service simply isn’t needed anymore.

Beginning today, we have disabled new project creation on Google Code. We will be shutting down the service about 10 months from now on January 25th, 2016. Below, we provide links to migration tools designed to help you move your projects off of Google Code. We will also make ourselves available over the next three months to those projects that need help migrating from Google Code to other hosts.

  • March 12, 2015 - New project creation disabled.
  • August 24, 2015 - The site goes read-only. You can still checkout/view project source, issues, and wikis.
  • January 25, 2016 - The project hosting service is closed. You will be able to download a tarball of project source, issues, and wikis. These tarballs will be available throughout the rest of 2016.

Google will continue to provide Git and Gerrit hosting for certain projects like Android and Chrome. We will also continue maintaining our mirrors of projects like Eclipse, kernel.org and others.

How To Migrate Your Data Off Google Code

The simplest way to migrate off of Google Code is to use the Google Code to GitHub exporter tool, which provides an automated way to migrate a project’s source, issues, and wikis to a new GitHub repo. Please note: GitHub’s importer will convert any Subversion or Mercurial Google Code projects to use Git in the process.

We also offer stand-alone tools for migrating to GitHub and Bitbucket, and SourceForge offers a Google Code project importer service.

If you encounter any problems using these tools, please log issues with us, contact google-code-shutdown@google.com, or email me directly (cdibona@google.com). We’ll also be closely tracking Hacker News, Reddit, and other popular forums to answer questions in public. We know this decision will cause some pain for those of you still using Google Code and we're sorry for that. We'll continue to do our best to make the migration process easy for you.

GitHub and Bitbucket are both looking forward to working with developers moving off of Google Code. They’ve been great to work with leading up to this announcement, so we’d like to thank those sites for their continued support of the community. There are some great options for people today that didn’t exist in 2006, and we look forward to helping you find the one that works for your project.

Chris DiBona, Director of Open Source

Categories: Open Source

CritiqueBrainz and rocking the Google Summer of Code

Fri, 03/06/2015 - 18:00
Student applications for Google Summer of Code 2015 will be opening on March 16th. University students interested in applying for this year’s program can get ready now by checking out the organizations taking part in this year’s program. Below, Robert Kaye shares the story of an outstanding student from last summer who made a big impact with the MetaBrainz Foundation, maintainers of the MusicBrainz service.

At MusicBrainz, we’re proud to collect and freely share information about all kinds of music. We strive to keep that information objective and factual, but being music fans, we can’t help but want to share our opinions sometimes, too. To do that, we developed a concept called CritiqueBrainz where we’d welcome people to write Creative Commons licensed, non-neutral point of view music reviews. Unfortunately, we didn’t have the resources to actually build it, nor was there any off-the-shelf software that would suit our needs.
When we took part in Google Summer of Code 2013, we put the CritiqueBrainz concept on our ideas page. It was too much to ask of one student to build a complete website with all the custom features we wanted in one summer. We accepted one student who wrote all of the features we requested as part of his successful GSoC project. However, over the summer it became clear that we needed to put a lot more work into the project before we could deploy the new site.
In 2014, we put CritiqueBrainz on our ideas page again and this time we asked for someone to finish the site in the first half of the summer, then to deploy, maintain and debug the site during the latter half of the summer. When the student application period opened, things got interesting. Several years ago, we added a requirement that applying students needed to submit a pull request to the project in order for us to consider their application. One student in particular submitted a pull request as part of his application. And then he submitted another. And another.
That one particular student submitted some truly excellent work as part of his application. So we accepted Roman Tsukanov, better known to us as “Gentlecat”, to finish the CritiqueBrainz project. At almost the instant we announced our accepted student proposals, his stream of pull requests started up again and never let up. As we were approaching the official start date of GSoC, the number of tasks left to finish the coding portion of the project was dwindling. Gentlecat even wrote a tool that parsed, cleaned up and imported 9,000 reviews that the BBC had given us. Things were looking excellent!
Given all that progress, we decided that the beginning of GSoC would be a perfect opportunity to release the first beta version of the CritiqueBrainz to the world. We gave Gentlecat access to one of our servers and let him deploy the code onto the server himself. With some guidance on best practices from us, he quickly got things up and running. Many people from the MusicBrainz community began writing reviews on the site, which naturally meant they found bugs and made tons of suggestions for improving the site.
Gentlecat plowed through the new tickets opened during the beta period and created pull request after pull request. My summer mornings consisted of reviewing his pull requests from the previous day. Gentlecat knocked out a long list of bugs while refactoring the code to have a better layout and improve readability. He added HTTPS support, found and fixed problems from the GSoC 2013 project, and even added integration with Spotify to support a hack I was creating at San Francisco Music Hack Day.
In the end, Gentlecat finished at least twice what he had promised to do during the span of GSoC. And the best part? He continues to pound out code and fixes, and he’s now a contributor to three of our projects.
He plans to apply for Google Summer of Code again this year, but he also feels that more people ought to be involved with CritiqueBrainz so he’s been contributing additional project ideas for other students to consider. If you’re a university student and CritiqueBrainz sounds interesting to you, please check out our GSoC 2015 ideas page.
Gentlecat rocked GSoC so hard that his nickname has become a term in our community: if you Gentlecat something, it means that you finished faster than anyone expected while going above and beyond what you promised to do. In other words: you rocked it. Hard!

by Robert Kaye, MusicBrainz GSoC mentor
Categories: Open Source

Mentoring Organizations for Google Summer of Code 2015

Mon, 03/02/2015 - 20:00
GoogleSummer_2015logo_horizontal.jpgWe are excited to announce the mentoring organizations that have been accepted for this year’s Google Summer of Code program. As always, we had many more great projects than we could accept. After reviewing 416 applications, we have chosen 137 open source projects, 37 of which are new to Google Summer of Code. You can visit our Google Summer of Code 2015 program website for a complete list of the accepted orgs.
Over the next two weeks, students interested in applying for the Google Summer of Code 2015 program can learn more about the 137 accepted open source projects. The student application period begins on Monday, March 16, 2015 at 19:00 UTC.
Interested? Start by reviewing the Ideas Page from each organization to learn about the project and how you might contribute. Some of the most successful proposals have been completely new ideas submitted by students, so if you don’t see a project on an Ideas Page that appeals to you, don’t be afraid to suggest a new idea to the organization! There are points of contact listed for each organization on their Ideas Page - students can contact the organization directly to discuss a new proposal. All organizations list their preferred method of communication on the organization homepage, available on the Google Summer of Code program website. We strongly encourage students to reach out to the organizations before they apply. Please see our Frequently Asked Questions page for more information.
Congratulations to all of our mentoring organizations! We look forward to working with all of you during this next Google Summer of Code!
By Carol Smith, Open Source Team
Categories: Open Source

Google Code-in 2014 wrap up with Wikimedia

Fri, 02/27/2015 - 18:00
The Wikimedia Foundation was one of the twelve mentoring organizations taking part in Google Code-in 2014, our contest introducing 13 to 17 year old students to working in open source communities. Below, Andre Klapper shares the accomplishments of several students who participated with Wikimedia during the contest.

The Wikimedia Foundation was proud to participate for a second time in Google Code-in. In this program, young students are introduced to free and open source software (FOSS) projects and invited to make practical contributions.
Between December 2014 and January 2015, 48 students successfully completed 226 Wikimedia tasks, supported by 30 mentors from our community. Those tasks include not only code development, but also documentation, research, and testing — leading to a wide range of achievements:

Thank you and congratulations to all the students who joined Wikimedia and supported its mission to freely share knowledge! Special kudos to Wikimedia’s two Grand Prize Winners: Danny Wu and Mateusz Maćkowski — and to our finalists Evan McIntire, Geoffrey Mon and Pranav Kumar! The full list of winners across all organizations can be found here.
We also wish to thank all our mentors for their generous commitment: we are especially grateful for the time they spent on weekends, coming up with task ideas, working with students and quickly reviewing their contributions. And last but not least, thank you to Google for organizing and running this contest, creating awareness of and interest in Free and Open Software projects.
We welcome more contributions to help improve our free and open software. Check out how you can contribute and our list of easy software bugs to start with.

By Andre Klapper, Wikimedia Foundation
Categories: Open Source