opensource.google.com

Menu

Brazil Open Source Jam 2

Monday, July 13, 2009

On July 2nd, 2009 about 50 people gathered in our Belo Horizonte, Brazil office for the second edition of the Open Source Jam Brazil. Guests were welcomed with an aperitif of snacks and drinks. At about 19:00 we started a round of short talks on various topics.



Scott Kirkwood presented his Convertsy Wave Robot and gave a short introduction on how to write robots for Google Wave. Ricardo Bittencourt spoke about implementing an MC-1000 emulator on FPGAs. Rafael Sachetto Oliveira talked about his Ubuntu Simple Package Crawler project and demonstrated Web USPC. Fabrício Ceolin reported on integrating government software, CACIC, with Intel vPro technology. Licio Fonseca introduced the audience to GNOME Love, a project to help new contributors to the GNOME project, and Germano Teixeira de Miranda talked about speeding up cloning computers with Recuperao de Imagem de SO.



After the talks we had almost two hours to talk to one another and get some more snacks, including ice cream. The Brazilians are known for being quite sociable, and this quality was made very clear in the strength of its Open Source community; developers, enthusiasts and Google engineers shared their projects and ideas, and some even found new projects to work on together. The evening came to an end at about 22:00 when most people left.





Google Open Source Jam events are getting increasingly popular. It took less than 12 hours for the 50 attendees to sign up for this second Open Source Jam in Brazil, so join the Open Source Jam Brazil Google Group to stay updated on future events as soon as they are scheduled. Open Source Jams are hosted by the Google Open Source Team.

Releasing Neatx, an Open Source NX Server

Tuesday, July 7, 2009

We at Google have been looking at remote desktop technologies for quite a while. The good old X Window system can be used over the network, but it has issues with network latency and bandwidth. Neatx remedies some of these issues.

In 2003, NoMachine released a large portion of the source code of their NX product under the GPL licence. NX is a protocol compressing X requests and reducing round-trips. Although mostly Open Source, NoMachine's NX product contains one closed component, the NX server. It's the part connecting clients with the Open Source libraries doing the work.

A free implementation of an NX server based on NoMachine's libraries named FreeNX was published in 2004 by Fabian Franz. FreeNX's primary target is to replace the one closed component and is written in a mix of several thousand lines of BASH, Expect and C, making FreeNX difficult to maintain.

Last week, we released the source code of our own proof-of-concept implementation of an NX server, Neatx. Designed from scratch with flexibility and maintainability in mind, Neatx minimizes the number of involved processes and all code is split into several libraries. It is written in Python, with the exception of very few wrapper scripts in BASH and one program written in C for performance reasons. Neatx was also able to reuse some code from another Google Open Source project, Ganeti. The code still has some issues, but we're confident interested developers will be able to fix them.

Also, Neatx implements features not found in FreeNX, such as the drop-down menu for session control in rootless sessions. At the same time, not all of FreeNX's features are implemented in Neatx.

Michael Hanselmann gave a presentation at FISL 10 in Porto Alegre, Brazil describing our implementation and use of virtual workstations (slides: PDF, 200 KB).

More information and the code can be found at the Neatx code.google.com project. You can also send us questions and feedback on the Neatx discussion list. Happy hacking!

London Open Source Jam 13

Thursday, July 2, 2009

Here in London, we recently hosted London Open Source Jam 13 (Our 14th jam, as naturally we count from zero.) - unlucky for some, but not for us! We threw the floor open to talks of any kind and we had a bumper crop of lightning talks on a diverse range of topics. We learned how to make a wiki in 58 lines of python, why open source developers should care about open standards, some new approaches to database design, and a whole lot more.

Kai Hendry talked about Webconverger, a teeny weeny Linux Live CD designed for web kiosks, and his experience commercialising an open source project by offering services to go with it.

Zak Cohen shared his experiences using open source libraries in the games world in developing the award-winning game Climbactic. It turns out there's some great open source stuff out there, but sometimes paying for support is the only way to get the features you need.

Frederik Dohr and Mike Mahemoff spoke about TiddlyWeb, a generic RESTful store for structured data, and Scrumptious, a jQuery-based web app that allows people to annotate and comment on web pages, which uses TiddlyWeb for storage.

Other contributors included:
The OSJam website has more information about all the talks, and the photographs taken at the event are available on Picasa Web Albums.

We'll be planning the next OSJam for a couple of months' time - subscribe to the London Open Source Jam Group or keep any eye on the OSJam website (Atom feed) for more details.

By Malcolm Rowe and Matt Godbolt, Software Engineering Team

Google Update, regularly scheduled

Wednesday, July 1, 2009

Client software products have unique challenges, with one of the important challenges being keeping the product up to date. Deploying critical security fixes in a timely and effective manner is one key way that we help keep users secure. Another benefit is that cool new features get deployed and adopted quickly. Google Update is the shared updating infrastructure used by Google Chrome, Google Earth and other Google software that runs on PCs to keep our products up to date on users' computers.

A couple of months ago we released the Google Update source code to give users and developers transparency into our update mechanism. One month later, we released Update Controls that allowed network administrators and advanced users the ability to control the installation and updating of Google products via Google Update.

We hope to help address concerns users have voiced around Google Update running as a continuous process. Until now, Google Update would always run in the background, functioning primarily as a reliable scheduler performing update checks at periodic time intervals. With today's release, Google Update now uses the Windows Task Scheduler to only run at periodic intervals. We have worked hard to ensure that automatic updates work just as reliably, and that our users are just as safe and secure as before.

There are a couple of details that we want to mention. First, in a very small number of cases when Google Update determines that the Windows Task Scheduler or Service mechanisms are not working as expected, we have added in fallback mechanisms that cause Google Update to begin running as a continuous process again to ensure users are still receiving updates to their Google software. Second, if you opted in to sending anonymous usage statistics and crash reports to Google for a particular Google application, we will run a process in the background called GoogleCrashHandler.exe. GoogleCrashHandler.exe is responsible for reporting crashes to Google when they occur in your Google product.

by S. Ganesh, Google Update Team

Introducing Apache Commons Math SimplexSolver

SimplexSolver is an easy-to-use, object-oriented method of solving linear programming problems. We're happy to announce today that we've Open Sourced the code that runs the newly released Google Spreadsheets Solve Feature and made it a part of Apache Commons Math 2.0.

While numerous other libraries are available that run linear optimization problems, SimplexSolver is the first written in Java with a commercially-friendly license.

Let's say we have the following LP:

MIN -2x + y - 5
S.T.
x + 2y <= 6
3x + 2y <= 12
y >= 0

We could solve the problem in Java using the SimplexSolver:

// describe the optimization problem
LinearObjectiveFunction f = new LinearObjectiveFunction(new double[] { -2, 1 }, -5);
Collection constraints = new ArrayList();
constraints.add(new LinearConstraint(new double[] { 1, 2 }, Relationship.LEQ, 6));
constraints.add(new LinearConstraint(new double[] { 3, 2 }, Relationship.LEQ, 12));
constraints.add(new LinearConstraint(new double[] { 0, 1 }, Relationship.GEQ, 0));

// create and run the solver
RealPointValuePair solution = new SimplexSolver().optimize(f, constraints, GoalType.MINIMIZE, false);

// get the solution
double x = solution.getPoint()[0];
double y = solution.getPoint()[1];
double min = solution.getValue();

Looking at the LP problem and Java code side-by-side, we can see how easy it is to describe the problem in the Apache Commons Math API. More examples can be viewed in the SimplexSolverTest source code. Apache Commons Math 2.0 is not quite released yet, so for the time being if you want to use the SimplexSolver, you'll need to compile it from source.

So that's SimplexSolver: a clean, fast method of solving LP problems. We hope you like it as much as we do! Thanks to Luc Maisonobe and the rest of the Apache Team who helped integrate the SimplexSolver into the Apache codebase.

.