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!

Open Source

Programming Basics: The Function Signature

DevX: Open Source Articles - Fri, 08/05/2016 - 19:21
See how paying attention to your function signature, utilizing language features where possible and using immutable data structures and pure functions can get you pretty far.
Categories: Open Source

Making Rubyists more comfortable on Google Cloud Platform

Google Open Source Blog - Fri, 08/05/2016 - 18:00
One of the many open source efforts at Google is the Google Cloud Platform (GCP) native libraries for our most popular languages. One of these libraries is the gcloud-ruby project on GitHub which is released as the gcloud gem on There are several gems for accessing Google Cloud Platform resources from Ruby but this gem is different. It is hand coded by Rubyists for Rubyists and that has some distinct advantages.

Many of us have had experience working with libraries that are clearly ported from another language. I usually talk about them as Ruby with a Java accent or Python with a Perl accent. Generally they work just fine but you can run into some low level friction — sometimes things just don’t feel right. Native gems written by members of the community solve this problem. In the case of gcloud-ruby there are some really concrete examples.

First, gcloud-ruby uses syntax that is similar to other popular Ruby libraries. For example, the syntax for specifying a table schema in BigQuery (Google Cloud Platform's very large scale data warehouse) looks like this:

table = dataset.create_table "baby_names" do |schema|
schema.string "name"
schema.string "sex"
schema.integer "number"

Creating the same table in popular Ruby on Rails looks like this:

create_table "baby_names" do |schema|
schema.string "name"
schema.string "sex"
schema.integer "number

The two are nearly identical. That makes getting up to speed on BigQuery easier and quicker than it would be if the Ruby library didn't use patterns that are already known to the majority of Rubyists. 
Another way the gcloud-ruby library meets the community where it is at is by embracing the community's fondness for doing things several different ways. In Ruby there are often several correct ways to do a given task.
The gcloud-ruby library is no exception. There are a few different ways to authenticate and create the objects you use to interact with the API. Ruby also has many common methods that have aliases. In the standard library Enumerable#map and Enumerable#collect actually run the same code path for example. In gcloud-ruby the vision API uses aliases. Google Cloud Vision provides a single endpoint: annotate. gcloud-ruby has an annotate method but also aliases this method as mark and detect if those make more sense to you (detect is the method that makes the most sense to my brain so that's the one I use). By providing a couple of different aliases it can mean the first thing you try is more likely to work. This speeds up development time and makes learning the library easier. 
The last way the gcloud-ruby gem makes Rubyists feel at home is by having comprehensive tests, a common value and popular discussion topic for the Ruby community. gcloud-ruby uses minitest-spec for testing, a popular choice that most Rubyists can easily read. When I was learning the storage API I looked at the tests for storage to learn how to use the library. There is outstanding documentation as well for those who prefer learning that way but I'm so used to looking at tests that I really appreciated that gcloud-ruby has well written and easily accessible tests.
Above are three examples of how hand-coded libraries from within the community can improve the user experience when learning to use tools. Of course, doing all the development on GitHub in the open also helps. Users can easily see what bugs people have run into and what features are next up in the production queue. And if a user has a feature request (like the previously mentioned Cloud Vision support) they can create a GitHub issue.
If you’re a Rubyist, give gcloud-ruby a shot and let us know what you think!
By Aja Hammerly, Developer Advocate
Categories: Open Source

How to Overcome the Biggest Hurdle of Any Open Source Project Front page news - Fri, 08/05/2016 - 05:45

It isn’t the coding; it’s not even the starting that’s the hardest to do when developing open source software.

It’s making people care.

Making people care enough that they use the software. Making people care enough that they contribute to the project. Making people care enough that they voluntarily form a community around the project.

Making people care is (or should be) the key that starts the whole open source project engine, and keeps it going.

Why Should People Care?

Perhaps you feel that your software will be awesome, and it doesn’t matter that people won’t care initially. But for any open source project to succeed, a large part of its inception should focus on who will actually use the software. Of course the software matters as well; but as we all know, in community-based open source it ceases to matter when you’re the only one who thinks it matters.

So why should people care about your project? This is a question you need to be able to answer right from the start if you ever hope to achieve growth and longevity for your project.

How to Make People Care

Of course you can’t force people to care. However, you can persuade them. There are several ways you can do this:

  • Select technology with broad usage. Creating niche projects is fine, as long as you’re sure that you’ve got a good base of interested users and contributors there. If you’re unsure however, it’s best to choose a project with a number of different applications, or technology that most people use every day like operating systems, databases, etc. These are more likely to generate outsider interest and contributions.
  • Zone in on a real need. Let your software meet a real need in the market and meet it exceptionally. This will guarantee that people take notice of it. Meeting a need could be a matter of timing, or it could be uncovered with research. A need that is uncovered through diligent research is more likely to have long term applications, but will take some time and effort on your part.
  • Clearly specify the value of the project, and the value that people can add to and get from the project. When people understand the value of a project , the value they can get from a project and how they can be valuable to a project, getting them to care and contribute becomes easy. So make sure you do your part. Clearly specify on descriptions the many applications of your software and how it can benefit users and contributors. Make sure you use jargon-free, easy-to-understand language.
  • Develop a culture and architecture of inclusion. Sometimes people just want to feel welcome in order to start caring and contributing. Some people just need encouragement. Make sure you give it. Invite participation constantly, and make it easy for people to participate by writing good documentation and creating modular code that’s easier for contributors to work on.

Once you get people to care about your project, don’t leave them behind. Keep nurturing your community by being supportive of their efforts and sympathetic to their needs. Caring can be contagious, so when you show you care the rest of the community can follow suit.

Categories: Open Source

August 2016, “Staff Pick” Project of the Month – LibreCAD Front page news - Wed, 08/03/2016 - 05:20

For our August “Staff Pick” Project of the Month, we selected LibreCAD, a free Open Source CAD application for Windows, Apple, and Linux. Ries van Twisk and Ravas Mi, two of the developers behind the project shared some of their thoughts about the project’s history, purpose, and direction.

SourceForge (SF): What made you start this project?
Ries van Twisk (RVT): I was working on a CNC machine and my wife asked me why it took so long to let the machine do its job. I told her that I needed to make a drawing, then open another application to generate g-code. So I decided to add a module to QCad so I can do it in one go. Working a bit on this project I came to the conclusion I needed to re-write the code for QT4 because Qt3 was old, which QCad was based on. I showed this to a few people on the LinuxCNC IRC channel and they urged me to put the codebase online. One thing led to another and we gave this project a name, ‘LibreCAD’. I never was able to finish the g-code creation module, but instead we now have a continuation of open source CAD that is available for everybody.

SF: Has the original vision been achieved?
RVT: The very original vision (see previous answer) no but after we decided to create the LibreCAD fork, I do believe we achieved our goal.

SF: Who can benefit the most from your project?
RVT: Anybody that needs to make simple CAD drawings.

SF: What’s the best way to get the most out of using LibreCAD?
RVT: Read our wiki and start using the manual, and of course have a project in mind you want to work on.

SF: What has your project team done to help build and nurture your community?
RVT: Most important for us is to be friendly, help each other out, fix bugs and continue improving LibreCAD.
Our community is active on IRC as well as our forum. We are not huge compared to other projects, but we can sustain ourselves.

SF: Have you all found that more frequent releases helps build up your community of users?
RVT: We are too small for frequent releases. This is due to our team size and we are all doing this in our free time, most of us have a partner and/or children and they come first. We try to release as often as possible but within reason.

SF: What was the first big thing that happened for your project?
RVT: We don’t have ‘the big thing’ but perhaps if I have to think of something for me personally is that LibreCAD is a working project with a solid past and future.

Ravas Mi: (For me it was) support for reading DWG files and exporting MakerCAM SVG files; these are not part of the free version of QCAD, which LibreCAD forked from.

Those came first but I think some of my contributions are worth mentioning.

The new custom toolbar and custom menu system greatly improves user efficiency. With custom menus (think right-click) you don’t need to move out of the drawing area to switch tools or snap modes. Command users might even find themselves more efficient.

Users can now select their own Qt style sheets, which allows for dramatically changing the program’s appearance.

The release which included those also included many other new features and important bug fixes.

SF: What’s been your mantra throughout the development process?
RVT: Keep doing what you do and make LibreCAD better with each release. It doesn’t have to go fast, it doesn’t have to go frequently as long as it happens.

SF: How has SourceForge and its tools helped your project reach success?
RVT: SF has always been a stable and working platform for us where our user base could download the binaries.

SF: What is the next big thing for LibreCAD?
RVT: We are working on a new version of LibreCAD, currently we call it LibreCAD 3 for lack of better naming. This year we are making big steps with the current two GSoC students. We are far from having a product, but we keep improving and working on it and one day this will be our new LibreCAD.

SF: How long do you think that will take?
RVT: A few years more. Sometimes the project stands still due to lack of time, but we try during GSoC to get 1 or two developers working on the project and I am working on it in my free time because I like c++.

SF: Do you have the resources you need to make that happen?
RVT: At this moment we lack resources, but we will manage, obviously we can use more help.

SF: If you had to do it over again, what would you do differently for LibreCAD?
RVT: I would have more actively asked for help from developers.

SF: Is there anything else we should know?
RVT: We need a few (2 at most) developers that have good knowledge of math and c++ and perhaps a bit of lua.

[ Download LibreCAD ]

Categories: Open Source

SourceForge Improvements: It’s easier than ever to start a project Front page news - Tue, 08/02/2016 - 05:32

Over the past few weeks, we’ve rolled out a series of improvements to make it easier to start a project on SourceForge. We started by adding a “Create” button on the header of every page, so you always can find it.

On the project registration form we now give you faster name suggestions and show more available tools & features. SourceForge projects have a lot of tools available, and now we show them all – including Web Hosting and Mailing Lists. Bonus: if you’re not logged in when you get to the registration form, we show a nice login overlay so you can still see what the form is like while you log in.

Screenshot of project registration form

As soon as you’ve created your project, the new welcome tour guides you through some of the key parts of your project. For example, you’ll see how to customize the tools you want to use on your project, categorize and describe your project, and more.

Screenshot of project welcome tour

We also send you a nice project welcome email, so you’ve got a reference in case you forget where your project is. And even better – when you’re on SourceForge, your account menu lists your projects, so you’ve got easy access to all of your projects.

Have a wonderful time making open source!

Categories: Open Source

Stories from Google Code-in: KDE, MetaBrainz and Haiku

Google Open Source Blog - Mon, 08/01/2016 - 18:00
Google Code-in is our annual contest that gives students age 13 to 17 experience in computer science through contributions to open source projects. This blog post is the second installment in our series reflecting on the experiences of Google Code-in 2015 grand prize winners. Be sure to check out the first post in the series.

This week we profile three more grand prize winners from Google Code-in 2015. These students came from all around the world to celebrate with us in June after successfully completing 692 tasks that resulted in significant contributions to the participating open source projects.

Google Code-in 2015 Grand Prize Winners and Mentors were treated to a cruise around San Francisco Bay.
Students were paired with mentors who guided them as they learned both new technologies and how to collaborate on real-world projects. While most students had some programming experience, many were new to open source. In the end, they learned new skills, connected with open source communities and many will continue to contribute to open source projects.
We’re proud of all of the participants and grateful to the mentors who helped them. We invited the contest winners to write about their experience and many took us up on the offer. Here are their stories:
First up today is Imran Tatriev, a student from Kazakhstan who decided to work on the KDE project because loved their philosophy and had experience with C++ and Qt. He was a finalist in Google Code-in 2014 when he worked with the OpenMRS project.
Imran’s work on KDE included contributing to projects such as KDevelop, Marble and GCompris. His biggest challenge was working on the KDevelop IDE’s debugger where he was tasked with highlighting crashed threads. Highlighting the crashed thread was trivial, finding the thread that had crashed was not. It took him five days to solve that problem and he credits his mentor with helping him to work through it.
In the end, Imran learned a lot about regular expressions, the architecture of large software projects, C++ and unit testing. What did he like most about his Google Code-in experience? Imran writes: “The most valuable moments were meeting wonderful and smart people.” He plans to continue working with KDE and apply for Google Summer of Code.
Next is Caroline Gschwend, a student from the US who worked on the MetaBrainz project. Both of her parents are computer scientists and she credits them with spurring her interest.
A homeschool student with a unique approach to education, Caroline loves to learn and voraciously consumes free online resources. She had this to say: “I think that free, online learning is an amazing benefit to our society. With access to a computer and the internet, anyone, anywhere, can learn anything.”
Caroline discovered Google Code-in through her mother who had, in turn, discovered the contest through Google for Education. Caroline dug in and decided it was right up her alley. She loved that it embraced beginners with open arms and introduced new people to open source. Ultimately, she decided to work with MetaBrainz because, as a classically trained violinist, MusicBrainz piqued her interest. Their projects are primarily written in Perl and Python and, while Caroline was fluent in Java, it was too interesting to pass up.
As with most students, Caroline found collaboration to be a big part of the learning curve -- from GitHub to Git and IRC. Her mentors and other community contributors on IRC helped Caroline through the process and, looking back, she found that collaboration to be her favorite part of the whole experience. She loved that the mentors helped her to produce professional quality work rather than focusing on quantity.
Google Code-in gave Caroline a chance to learn about collaboration, Inkspace, icon design, web development and more. She has continued her work in open source and plans to apply for Google Summer of Code.
The last student we’re highlighting today is Vale Tolpegin, a student from the US who worked on the Haiku project, an open source operating system for personal computers. He also participated in Google Code-in 2014 but didn’t feel his skills were sharp enough to attack the more challenging tasks, like the ones he tackled this time around for Haiku.
Vale took on a wide range of tasks from documentation to application development, his favorite being the creation of the Haiku Hardware Repository. The repository is a Django website that lets people search and share hardware tests to determine if a given machine will work with Haiku.
He ran into a sticky issue early on, spending nearly a week finding a race condition within an application maintained by Haiku. Vale found it frustrating, but his mentors helped him see it through to the end. That wasn’t the only big challenge he ran into and, ultimately, bested: he spent another week debugging a Remote Desktop Application, software which had a very large code base.
Despite the two time consuming challenges, Vale managed to accomplish a lot more during the contest, including building a graph plotter and fixing bugs in the Haiku package manager. Vale had this to say:
“After finishing GCI, I have continued to work with Haiku and the experiences I have gained will continue to have an impact on me for years to come. Participating in GCI has truly been a life-­changing experience!”
Thank you to Imran, Caroline and Vale for their contributions to open source and for sharing their Google Code-in experiences with us. Stay tuned, we’ve got two more posts coming in this series!
By Josh Simmons, Open Source Programs Office
Categories: Open Source

August 2016, “Community Choice” Project of the Month – Eclipse Tomcat Plugin Front page news - Mon, 08/01/2016 - 05:33

For our August “Community Choice” Project of the Month, the community elected Eclipse Tomcat Plugin, which offers simple handling of a tomcat server in Eclipse IDE. Current project developer Markus Keunecke shared some thoughts about the project’s history, purpose, and direction.

SourceForge (SF): Tell me about the Eclipse Tomcat Plugin project please.
Markus Keunecke (MK): The Eclipse Tomcat Plugin does exactly what its name promises: It integrates the Apache Tomcat server into the Eclipse development environment for easy development and debugging of Java web application. It is a highly focused project, so it is very simple to set up and requires very little system resources.

SF: What made you start this?
MK: The project was originally started by Bruno Leroux in 2002 as Sysdeo Eclipse Tomcat Launcher Plugin and maintained for over a decade. In 2014, however, the plugin became incompatible to recent versions of Eclipse/Tomcat. The project founder had moved on to other projects. So I had a look into the source code and fixed the compatibility issue. While I was at it, I also added a feature to simplify configuration.

SF: Has the original vision been achieved?
MK: The basic philosophy of the Tomcat plugin is, that it should just work. People should hardly notice its existence, although they use it on a daily basis. Think of a very good public transport system that is used by commuters every day.

SF: Who can benefit the most from your project?
MK: My project is targeted at Java Web Developers.

SF: What core need does the Eclipse Tomcat Plugin fulfill?
MK: The plugin supports Java Web Developers by integrating Tomcat into the development environment. It enables developers to use Eclipse’s powerful debugging capabilities such as break points, variable inspection and hot code replacement.

While the plugin does very smart work in the background, the user interface and configuration is very easy.

SF: What has your project team done to help build and nurture your community?
MK: We’ve done a number of small things creating a huge impact. The main idea behind those actions was to make the project easy to be found. For example the project name is exactly the phrase people would use in search engines. We moved from a zip file on a random website to a listing in the Eclipse Marketplace and an update site in the SourceForge file release system.

The SourceForge project makes the project visible to potential contributors by offering a bug tracker and Git repository.

SF: Have you all found that more frequent releases helps build up your community of users?
MK: Yes, releases are a form of free advertisement. Many software directories, such as the Eclipse Marketplace, have a prominent list of new & updated software.

This is of course also true for the community of contributors: If someone goes through the trouble of reporting a bug or even submitting a pull request, they’ll be rewarded by a timely response.

SF: What was the first big thing that happened for your project?
MK: In 2014, I fixed the compatibility issue for myself and my co-workers at HIS eG ( In addition I added a small feature to simplify my own life. I decided to release my efforts to the public just following the example of the original author.

After a while I was surprised by a mail from SourceForge telling me that the Eclipse Tomcat Plugin was project of the week because of a growing number of downloads. At that time the project files were downloaded several thousand times a week. At first I did not believe the numbers, thinking that most of those downloads were caused by automatic update checks. But the statistics of successful installations from the Eclipse Marketplace also showed huge numbers.

This was the point when we realized that the project is useful to a number of people from all around the world. The SourceForge statistics shows China, USA, Japan and India even above my own country Germany.

SF: How has SourceForge and its tools helped your project reach that success?
MK: SourceForge provides easy access to development infrastructure, such as Git, issue tracking and download service. As a developer of an open source project you can focus on your project without wasting a lot of time on setting up those services on your own.

Since the project is on SourceForge people started to contribute code to the project.

SF: What is the next big thing for Eclipse Tomcat Plugin?
MK: The project was started at a time before automatic testing became popular. It is very mature now and there are little dramatic changes being committed. Therefore adding unit tests was not our top priority. But having said that, the small test coverage feels wrong and creates a bad consciousness.

SF: How long do you think that will take? And do you have the resources you need to make that happen?
MK: It is a long term goal. We can start with adding more tests here and there. Especially target areas that are due to refactoring and changes. Luckily there is no external pressure as this is a purely internal goal.

SF: If you had to do it over again, what would you do differently for Eclipse Tomcat Plugin?
MK: We would have moved from providing zip-file on a random website to a hosting service like SourceForge with Git and bug tracker much earlier.

SF: Is there anything else we should know?
MK: We are very happy that SourceForge has stopped flirting with the dark side and has recognized that its reputation is a key asset. Actually we are very impressed that the bad installer was taken offline within the first week after the purchase of SourceForge by BIZX, LLC.

[ Download Eclipse Tomcat Plugin ]

Categories: Open Source

Projects of the Week, August 1, 2016 Front page news - Mon, 08/01/2016 - 05:10

Here are the featured projects for the week, which appear on the front page of

Double Commander

Double Commander is a cross platform open source file manager with two panels side by side. It is inspired by Total Commander and features some new ideas.
[ Download Double Commander ]


Tool Command Language (Tcl) is an interpreted language and very portable interpreter for that language. Tcl is embeddable and extensible, and has been widely used since its creation in 1988 by John Ousterhout. Bug reports to Follow code development at
[ Download Tcl ]


With Hugin you can assemble a mosaic of photographs into a complete immersive panorama, stitch any series of overlapping pictures and much more.
[ Download Hugin ]

Battle for Wesnoth Android Port

[ Download Battle for Wesnoth Android Port ]

Miranda IM

Miranda IM is an open source, multi-protocol instant messaging client designed to be very light on system resources, extremely fast and customizable. A powerful plugin-based architecture make Miranda IM one of the most flexible clients on the planet.
[ Download Miranda IM ]

Universal Media Server

Universal Media Server is a DLNA-compliant UPnP Media Server Universal Media Server supports all major operating systems, with versions for Windows, Linux and Mac OS X. The program streams or transcodes many different media formats with little or no configuration. UMS is powered by MEncoder, FFmpeg, tsMuxeR, AviSynth, MediaInfo and more, which combine to offer support for a wide range of media formats Check out the list of media renderers here:
[ Download Universal Media Server ]


Bluestar Linux is an Arch Linux-based distribution, built with an understanding that people want and need a solid Operating System that provides a breadth of functionality and ease of use without sacrificing aesthetics. Bluestar is offered in three edtions – desktop, deskpro and developer – each tailored to address the needs of a variety of Linux users. Bluestar can be installed permanently as a robust and fully configurable operating system on a laptop or desktop system, or it can be run effectively as a live installer and supports the addition of persistent storage for those who choose not to perform a permanent installation. A Bluestar Linux software respository is also maintained in order to provide additional tools and applications when needed or requested. Bluestar provides the following features: Up-to-date Kernel Wide Variety of Applications – Always Current Versions Full Development / Desktop / Multimedia Environment
[ Download BluestarLinux ]

GO Contact Sync Mod

+++ NEWS +++ The newest versions of Google APIs client Library for .NET dropped support for .NET 4.0. Minimum requirement for GO Contact Sync Mod (starting with v3.10.0) is .NET 4.5 which is not working on Windows XP. —————————————————– GO Contact Sync Mod synchronizes your Microsoft Outlook contacts with your Google Mail address book, including pictures, categories and notes. Since version 3.7.0 it also syncs your Outlook Calendar Appointments on demand to Google Calendar. This Mod fork adds many enhancements and bug fixes to the obviously dead project ‘Go Contact Sync’. Please find some guidelines how to sync your mobile phone contacts with Google Contacts here:
[ Download GO Contact Sync Mod ]

Nagios Core

Nagios network monitoring software is a powerful, enterprise-class host, server, application, and network monitoring tools. Designed to be fast, flexible, and rock-solid stable. Nagios runs on *NIX hosts and can monitor Windows, Linux/Unix/BSD, Netware, and network devices.
[ Download Nagios Core ]

Categories: Open Source

Stories from Google Code-in: FOSSASIA and Haiku

Google Open Source Blog - Fri, 07/29/2016 - 21:43
Google Code-in is our annual contest to help pre-university students gain real-world computer science experience by taking on tasks of varying difficulty levels with the help of volunteer mentors. These tasks are created by open source projects so while learning, the students are contributing to the software many of us use on a daily basis.

The finalists and winners for our 2015/2016 season were announced in February and, in June, the grand prize winners joined us for four days of learning and celebration. Students and their guardians came from all around the world. One of my favorite things, as one of the Googler hosts, was seeing the light bulbs go on above parents’ heads as they came to understand open source and why it’s so important. These parents and guardians were even more proud of the students as they learned how much their teenager has contributed to the world through participating in Google Code-in.

We’ve invited contest winners and organizations to write about their experience and will be sharing their stories in a series of blog posts. This marks the first post in the series.

Google Code-in 2015 Grand Prize Winners and Mentors
Let’s start with Jason Wong, a student from the US who worked with FOSSASIA. FOSSASIA supports open source developers in Asia through events and coding programs.
Jason got into computer science during middle school at a summer camp where he built a website describing the differences between Linux, OS X, and Windows.  He dove deeper into web development by learning PHP and JavaScript through YouTube videos. He enjoyed being able to build more complex and dynamic websites. Like many new developers, Jason became very confident but did not concern himself with important aspects of programming like testing.
He learned about Google Code-in when Stephanie Taylor, fellow open source program manager who manages the GCI program here at Google, gave a talk at his school. Jason dove right in picking FOSSASIA as the project he would contribute to.
FOSSASIA offered Jason a chance to learn a lot about development and open source. He worked on their event pages, integrated Loklak and added an RSS section to their website, gaining experience with version control, Docker, Pharo and Node.js in the process. Most importantly, Jason learned about collaboration. He had this to say:
“Collaboration is so important in the open source community as it allows everyone to come together to help the world. Google Code-in has persuaded me to contribute to open source in the future.”
Next up we have Hannah Pan, another US student. She chose to work on Haiku, an open source operating system built for personal computers, because it used the C/C++ language which she was already confident with.
Hannah got into computer science through a high school AP course and discovered Google Code-in through this blog (woohoo!). She decided to participate even though it had already been underway for two weeks. Aiming just to make the top 10 in order to have a chance at being a finalist (and earn a hoodie), Hannah finished as a grand prize winner! 
The learning curve was steep: *nix commands, build tools and GitHub all presented new challenges. She was surprised how much code she had to sift through sometimes just to isolate the cause of minor bugs.
Like all of the participants, Hannah found her mentors to be crucial in providing both technical guidance and moral support. She explained, “I was amazed at my mentors’ expertise, dedication, modesty, and high standards. They taught me to strive for excellence rather than settle for mediocrity.”
Among other things, Hannah added localization support to the Tipster app, fixed extractDebugInfo, and even wrote a how-to article relating to the work. Reflecting on her experience, Hannah wrote:
“On the technical side, not only have I learned a lot, but I have realized how much more I have yet to learn. In addition, it has taught me some important life skills that no doubt will benefit me in my future endeavors. I’d like to thank my mentors and other students who inspired me and pushed me to do my best.”
Thank you to Jason and Hannah both for contributing to open source and sharing their Google Code-in experiences with us. Stay tuned as we continue this series in our next blog post!
By Josh Simmons, Open Source Programs Office
Categories: Open Source

The Other C-word that’s Crucial to Open Source Front page news - Fri, 07/29/2016 - 05:07

What starts with the letter C and is considered the most important thing in open source software development?

I’m sure you, like most people, will answer code. And you would be right. But there’s another C-word that’s just as important, if not more important than code in the world of open source development, and that’s communication.

Why Communication?

It’s easy to think of communicating about code as only secondary to the code itself. This thinking however, undervalues the role of communication in open source. As renowned developer Martin Fowler once said, “Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” As much as open source programs are initially written for computers, ultimately, they are to be used by human beings and as such need to be understood by human beings.

A great deal of this understanding comes from written communication, better known in open source as documentation. In open source development practically every step involves documentation. From bug reports and descriptions to tutorials and API docs, written communication is deeply embedded and required in each process. This is what enables people to understand the software, and in understanding it they are able to use, adapt or contribute to it. Without proper written communication, none of these things which are vital to the continuation and betterment of an open source project would ever occur.

With this in mind we begin to see that communication is indeed as significant as code in open source development. But we’ve merely scratched the surface.

Proper Communication in Conversation

Communication not only comes in the form of documentation in open source. It also comes in conversational form.

As we all know, open source development often requires people working together and working with users and contributors who may not be as skilled or knowledgeable in open source development. Newbies offering bad code or not following protocol can be frustrating for developers and maintainers, but these neophytes mustn’t be dealt with harshly. Doing so would only extinguish whatever desire they had at working on the project, and projects would lose a potential long-term contributor and community member.

This is another area of open source development where proper communication is key. By expressing your ideas properly and clearly when conversing with newbies, you help them to better understand what is required and what it is that they need to do in order to improve. This helps not only them but the project as well, which in the long run will benefit from continued usage and added contributions from newbies who eventually turn into full-fledged contributors.

Communicating to Sell the Software

There are three major areas of open source software development that demand exceptional communication. We’ve pointed out the first two: documentation and community development. The third is marketing.

No matter how well you’ve written the code and its accompanying documentation, and even if you have a community that communicates well internally, you still need marketing to push your project outward. Marketing means the difference between a great project that no one knows about or uses, and a project that’s making a difference in the world.

Effective marketing of course, requires exceptional communication skills. It involves speaking at conferences and meetups, writing blogs and even social media posts. In a sea of similar open source projects, these marketing techniques are your project’s lifeboat and flare gun, getting it noticed and picked up by interested users and contributors.


Perhaps you already possess brilliant communication skills, and perhaps you don’t. In the latter case, you can always hand that responsibility over to a more qualified team member. What is important here is that you do not take communication for granted as it is, without a doubt, pivotal to the success and development of any open source project.

Categories: Open Source

.NET Core 1.0 and Cross-Platform Development

DevX: Open Source Articles - Thu, 07/28/2016 - 22:04
Microsoft recently announced the release of .NET Core 1.0, a truly cross-platform runtime and development environment.
Categories: Open Source

Cross-Platform Mobile Development with Xamarin

DevX: Open Source Articles - Wed, 07/27/2016 - 21:33
Learn more about the cross-platform mechanisms and the support for per-platform code in Xamarin.
Categories: Open Source


Date Created: Wed, 2016-07-27 10:38Date Updated: Thu, 2016-08-11 07:37Submitted by: Jamie Packer

SOMNIUM DRT Cortex-M IDE is a professional C and C++ embedded software development environment for ARM Cortex-M devices, which is built on the Eclipse platform.

DRT is fully compatible with the GNU toolchain and other third party software. DRT provides industry-leading levels of optimization, support for the latest C and C++ language standards and unique debugging tools, including live expression view without breakpointing, trace and fault diagnosis.

  • Eclipse-based IDE
  • Advanced debug and trace (including live memory view without breakpointing)
  • Latest C/C++ language support
  • Smallest, fastest, most energy efficient code
  • Support for the following device families:
    • NXP Kinetis
    • NXP LPC
    • STMicroelectronics STM32
    • Atmel SMART
  • Automatic import of projects from other systems (KDS, LPCXpresso, TrueSTUDIO, SMART, etc)
  • Technical support direct from our customer engineering team.
  • Available for Windows and Linux hosts. Mac OS X support coming soon.

Build smaller, faster, cheaper and more energy efficient software with SOMNIUM DRT. Complete your design on time and on budget, with DRT's best in class debug and trace tools. Download a free trial from our website.

Categories: Open Source

Backup and Restore Using Amazon S3 API

DevX: Open Source Articles - Tue, 07/26/2016 - 20:02
Learn how to integrate Amazon Services with your Web application so that you can completely automate the backup process.
Categories: Open Source

Eclipse IoT Day @ ThingMonk

Eclipse News - Tue, 07/26/2016 - 10:10
Join us September 12 in London for the Eclipse IoT Day at ThingMonk!
Categories: Open Source

Omnitone: Spatial audio on the web

Google Open Source Blog - Mon, 07/25/2016 - 18:04

Spatial audio is a key element for an immersive virtual reality (VR) experience. By bringing spatial audio to the web, the browser can be transformed into a complete VR media player with incredible reach and engagement. That’s why the Chrome WebAudio team has created and is releasing the Omnitone project, an open source spatial audio renderer with the cross-browser support.

Our challenge was to introduce the audio spatialization technique called ambisonics so the user can hear the full-sphere surround sound on the browser. In order to achieve this, we implemented the ambisonic decoding with binaural rendering using web technology. There are several paths for introducing a new feature into the web platform, but we chose to use only the Web Audio API. In doing so, we can reach a larger audience with this cross-browser technology, and we can also avoid the lengthy standardization process for introducing a new Web Audio component. This is possible because the Web Audio API provides all the necessary building blocks for this audio spatialization technique.

Omnitone Audio Processing Diagram
The AmbiX format recording, which is the target of the Omnitone decoder, contains 4 channels of audio that are encoded using ambisonics, which can then be decoded into an arbitrary speaker setup. Instead of the actual speaker array, Omnitone uses 8 virtual speakers based on an the head-related transfer function (HRTF) convolution to render the final audio stream binaurally. This binaurally-rendered audio can convey a sense of space when it is heard through headphones.

The beauty of this mechanism lies in the sound-field rotation applied to the incoming spatial audio stream. The orientation sensor of a VR headset or a smartphone can be linked to Omnitone’s decoder to seamlessly rotate the entire sound field. The rest of the spatialization process will be handled automatically by Omnitone. A live demo can be found at the project landing page.

Throughout the project, we worked closely with the Google VR team for their VR audio expertise. Not only was their knowledge on the spatial audio a tremendous help for the project, but the collaboration also ensured identical audio spatialization across all of Google’s VR applications - both on the web and Android (e.g. Google VR SDK, YouTube Android app). The Spatial Media Specification and HRTF sets are great examples of the Google VR team’s efforts, and Omnitone is built on top of this specification and HRTF sets.

With emerging web-based VR projects like WebVR, Omnitone’s audio spatialization can play a critical role in a more immersive VR experience on the web. Web-based VR applications will also benefit from high-quality streaming spatial audio, as the Chrome Media team has recently added FOA compression to the open source audio codec Opus. More exciting things like VR view integration, higher-order ambisonics and mobile web support will also be coming soon to Omnitone.

We look forward to seeing what people do with Omnitone now that it's open source. Feel free to reach out to us or leave a comment with your thoughts and feedback on the issue tracker on GitHub.

By Hongchan Choi and Raymond Toy, Chrome Team

Due to the incomplete implementation of multichannel audio decoding on various browsers, Omnitone does not support mobile web at the time of writing.
Categories: Open Source

Projects of the Week, July 25, 2016 Front page news - Mon, 07/25/2016 - 05:12

Here are the featured projects for the week, which appear on the front page of

FlightGear – Flight Simulator

Founded in 1997, FlightGear is developed by a worldwide group of volunteers, brought together by a shared ambition to create the most realistic flight simulator possible that is free to use, modify and distribute. FlightGear is used all over the world by desktop flight simulator enthusiasts, for research in universities and for interactive exhibits in museums. FlightGear features more than 400 aircraft, a worldwide scenery database, a multi-player environment, detailed sky modelling, a flexible and open aircraft modelling system, varied networking options, multiple display support, a powerful scripting language and an open architecture. Best of all, being open-source, the simulator is owned by the community and everyone is encouraged to contribute.
[ Download FlightGear – Flight Simulator ]

PDF Split and Merge

Split and merge PDF files with PDFsam, an easy-to-use desktop tool with graphical, command line and web interface.
[ Download PDF Split and Merge ]


K-Meleon is a fast and customizable web browser that can be used instead of Internet Explorer on Windows. Powered by the same Gecko engine as the Firefox and Mozilla browsers, K-Meleon provides users with a secure browsing experience.
[ Download K-Meleon ]


Vienna is an open source Mac OSX RSS reader with support for RSS/Atom feeds, article storage and management via a SQLite database, written in Objective-C and Cocoa. Feeds can be accessed directly, or through a syncing service supporting the Open Reader API, like,, or Development now happens on GitHub:
[ Download Vienna ]

Cream (for Vim)

Cream is a free, easy-to-use configuration of the famous Vim text editor for Microsoft Windows, GNU/Linux, and FreeBSD. It uses common menus, standard keyboard shortcuts, and has extensive editing functions for the beginner and expert alike. UPDATE: Development has slowed recently due to the author’s full time endeavor to begin an architectural practice ( But the project still continues to build gVim installers and add minor features and bug fixes in the Cream source code.
[ Download Cream (for Vim) ]


A famous scientific plotting package, features include 2D and 3D plotting, a huge number of output formats, interactive input or script-driven options, and a large set of scripted examples.
[ Download gnuplot ]

Korora Project

Korora is an installable Fedora Remix Live DVD, which aims to provide a complete out of the box experience for new users, including support for multimedia content. It comes with choice of five desktops, being Cinnamon, GNOME, KDE, MATE and Xfce all in 32 and 64 bit.
[ Download Korora Project ]


GeoServer is an open source software server written in Java that allows users to share and edit geospatial data. Designed for interoperability, it publishes data from any major spatial data source using open standards: WMS, WFS, WCS, WPS and REST
[ Download GeoServer ]


WARNING: FreeCAD has moved! FreeCAD code and release files are now hosted on github at Only older files and code are available here. FreeCAD is a general purpose feature-based, parametric 3D modeler for CAD, MCAD, CAx, CAE and PLM, aimed directly at mechanical engineering and product design but also fits a wider range of uses in engineering, such as architecture or other engineering specialties. It is 100% Open Source and extremely modular, allowing for very advanced extension and customization. FreeCAD is based on OpenCasCade, a powerful geometry kernel, features an Open Inventor-compliant 3D scene representation model provided by the Coin 3D library, and a broad Python API. The interface is built with Qt. FreeCAD runs exactly the same way on Windows, Mac OSX and Linux platforms.
[ Download FreeCAD ]

Categories: Open Source

Dojo Recap – June, 2016

The Dojo Toolkit - Announcements - Fri, 07/22/2016 - 13:00

We continue our focus towards Dojo 2. This post contains a quick summary of the updates we’ve made over the past month!

Dojo 1.11.2 released

We released Dojo 1.11.2, as well as 1.10.6, 1.9.9, 1.8.12, and 1.7.10 in early June. These updates are available via the Dojo downloads and are also now available on the Google CDN.

Dojo 1.11.3 is planned for release in late August.

Chrome 53 may deprecate synchronous XHR

Synchronous XHR is not supported as part of the XHR 2.0 specification. Synchronous XHR was the foundation for the pre-AMD loader system in Dojo releases prior to Dojo 1.7. At the moment, there are a few options but none are ideal:

  • Update to use AMD (make sure you specify async: true in your configuration)
  • Use the cross-domain version of Dojo (this may still break with i18n and text files, so all resources will need to be built into your built layer)

We are exploring possible options for Dojo 1.6 users, though an upgrade to an AMD version of Dojo is the safest option at this time to make certain your older Dojo applications continue to work in Chrome.

UPDATE: Chrome does not plan to drop standard Sync XHR (as much as they would like to) as it is still widely used on the web.

High level Dojo 2 progress

The overall Dojo 2 progress is tracked at dojo/meta:

dojo/metaDojo 2 status

In the past month, we’ve had many alpha and beta updates, and a few new packages added:

  • dojo/has and dojo/shim were split from dojo/core, each now at alpha1
  • dojo/compose now at beta6 (from beta4)
  • dojo/widgets now at alpha3 (from alpha1)
  • dojo/actions now at alpha4 (from alpha3)
  • dojo/grunt-dojo2 now at beta9 (from alpha7)
Dojo 2 ToDoMVC

We’ve also created a reasonable first draft of a ToDoMVC app with Dojo 2, the hello world of JavaScript applications. Source for this is found in the dojo/examples repo.

Dojo 2 ToDoMVC

Some of the major items we’ve been solving include:

  • Many refinements to dojo/app, including custom element support and dozens of refinements
  • More than a dozen improvements to dojo/widgets including important stability fixes for use with dojo/app
  • significant work on actions, routing, core, compose packages
Dojo 2 in progress

This month we’re focused on:

  • Making more progress on Dojo 2 builds
  • Improving dojo/app and dojo/widgets
  • More updates for TypeScript 2 support
  • Refining APIs and features as we work on creating example applications
  • dojo/i18n
  • Early exploration on vector graphics and visualizations

Please let us know if you would like to get involved! Either find us on IRC, leave a comment here, or start contributing on GitHub. We greatly appreciate the help!

Conference talks

Check out our talk on how Dojo 2 has benefits from ES6 and TypeScript features from FullStack 2016!

Categories: Open Source, RIA

“Community Choice” Project of the Month Vote – September 2016 Front page news - Fri, 07/22/2016 - 05:34

The vote for September 2016 Community Choice SourceForge Project of the Month is now available, and will run until August 15, 2016 12:00 UTC.


GnuCash is a personal and small-business finance manager with a check-book like register GUI to enter and track bank accounts, stocks, income and expenses. GnuCash is designed to be simple and easy to use but still based on formal accounting principles.
[ Download GnuCash ]


Fldigi is a modem program for most of the digital modes used by radio amateurs today: CW, PSK, MFSK, RTTY, Hell, DominoEX, Olivia, and Throb are all supported. It can help calibrate a sound card to a time signal and do frequency measurement tests.
[ Download fldigi ]

NSIS: Nullsoft Scriptable Install System

NSIS (Nullsoft Scriptable Install System) is a professional open source system to create Windows installers. It is designed to be as small and flexible as possible and is therefore very suitable for internet distribution. Being a user’s first experience with your product, a stable and reliable installer is an important component of succesful software. With NSIS you can create such installers that are capable of doing everything that is needed to setup your software. NSIS is script-based and allows you to create the logic to handle even the most complex installation tasks. Many plug-ins and scripts are already available: you can create web installers, communicate with Windows and other software components, install or update shared components and more.
[ Download NSIS: Nullsoft Scriptable Install System ]


TYPO3 is an enterprise class Web CMS written in PHP/MySQL. It’s designed to be extended with custom written backend modules and frontend libraries for special functionality. It has very powerful integration of image manipulation.
[ Download TYPO3 ]


Alt-F provides a free alternative firmware for the DLINK DNS-320/320L/321/323/325/327L. Alt-F has Samba and NFS; supports ext2/3/4, VFAT, NTFS and ISO9660 filesystems; RAID 0, 1, 5 (with external USB disk) and JBOD; supports 2/3/4TB disks; rsync, ftp, sftp, ftps, ssh, lpd, DNS and DHCP servers, DDNS, fan and leds control, clean power up and down… and more. Alt-F also has a set of comprehensive administering web pages, you don’t need to use the command line to configure it. Besides the built-in software, Alt-F also supports additional packages on disk, including ffp packages, that you can install, update and uninstall using the administering web pages Alt-F is still beta and is being developed and tested on a DNS-323-rev-A1/B1, a DNS325-rev-A1, a DNS-320L-rev-A1 and on a DNS-327L-rev-A1 hardware boards. Other models and boards are said to work. Support Forum: Homepage:
[ Download Alt-F ]


We believe that free/open source software is enough, we don’t need pirated softwares on Windows. But most of these aren’t portables, or provided by due to .NET dependencies, 64-bit etc. So we provide what’s missing here. Software publisher who wishes their portablized software taken down, can tip us through or We promise to take it down without questions, but please be patient—we might not be able to respond promptly, but we eventually *will* …thanks for your patience, and sorry for being such a #naughty uploader

Categories: Open Source

Code Optimization: If-Less Programming

DevX: Open Source Articles - Fri, 07/22/2016 - 00:29
Deeply nested code is very difficult to follow, wrap your head around and test. In many cases it is possible to flatten deeply nested code by very simple means. Here are a few examples in Python, but the concepts translate to most languages.
Categories: Open Source