Cloud Foundry Blog

About Andy Piper

social bridgebuilder | photographer | techie | speaker | podcaster | MQTT Community Lead / Eclipse Paho co-lead | Cloud Foundry Developer Advocate @ Pivotal | my views are my own
    Find more about me on:
  • facebook
  • flickr
  • googleplus
  • linkedin
  • skype
  • twitter
  • youtube

Want to Contribute to Cloud Foundry? Come on in!

Cloud Foundry is an Open Platform-as-a-Service, and an Open Source project. It has attracted phenomenal interest from the community - including partners, companies using the code internally, and those individual developers with a passion for getting involved. You can find the source code on Github. Community contributions are what help to make the platform so extensible. We are always happy when we receive a Github pull request to offer new functionality or fixes! We also appreciate bug reports submitted through Github Issues.

Looking at the Cloud Foundry project as a whole though… where should you start?

As you might imagine, there are a lot of moving parts in a PaaS. At Pivotal, we have teams working on the backend (the main runtime environment for Cloud Foundry, also known as ‘vcap’); the frontend (the tools and APIs for deploying apps, such as the ‘cf’ gem); services (database, message queues, and related resources); and Cloud Foundry BOSH, the installer and deployment tool, which has different plugins targeting infrastructures like AWS, OpenStack and vSphere. In the future, we would love to see even more Cloud Provider Interfaces (CPIs) for BOSH to allow Cloud Foundry to be deployed onto additional clouds.

One of the best ways to get involved with the community and the codebase is to start with the Github repositories and the mailing lists. If you are not sure where particular functionality resides within the project as a whole, and you’ve had a good look at Github already, then we have a number of mailing lists where you can ask for help. vcap-dev is for those working on the PaaS itself; bosh-users is for those who want to understand how to use BOSH to deploy Cloud Foundry; and bosh-dev is for the elite hackers (like Dr Nic Williams!) who want to help us make BOSH even more awesome. If you participate in the mailing lists you will also be able to keep up with what others are working on, and learn who some of the leading developers on the project are. If you want to get an idea of the general direction of development, you’ll find that in our roadmap.

Once you are up-and-running with Cloud Foundry, or if you know to which part of the project  you want to contribute, then consider the size of an initial contribution. If you are new to the project you might want to start with something small (some Open Source projects call these kind of small changes to smooth out any rough edges “paper cuts”). If you have something larger, we are always keen to work with you to understand how we can integrate your code. Before sending a pull request, take a look at our OSS contribution information in the project readme, which includes details on the Contributor License Agreement for individuals and corporations.

We thought it would be good to highlight a recent pull request which was a superb example of a major addition to the project. Recently we received a contribution via a detailed Github pull request, adding Oracle support to some of the major components inside Cloud Foundry: the User Account and Authentication service (UAA) and the Cloud Controller. Originally, these components were built to use Postgres as a backend, and more recently MySQL support was added. Since many enterprises already use Oracle as their main relational data store, it is great to give them this additional storage option.

Taking a look at the specific request for the Cloud Controller, we were really struck by a few things. The first one is that the pull request itself is very detailed, and walks through the various changes required in order to replace the database with Oracle.

This pull request is a lot to digest. If you want you can review the single feature PR that lead to this PR for some more concise context into some of the decisions I made in creating this PR. Here is a summary of the more notable changes I had to make and some context for why I made those changes:

This level of detail is not always required with every patch, of course, but for something this extensive it was very welcome. Another aspect of this patch is that was was made of up several individual changes (things like tweaks to the database schema, differences between Oracle datatypes and those used by other databases, etc), and they were broken down into separate commits which made it easier to consume. It also helped that this set of changes was extensively discussed on the vcap-dev mailing list before this larger pull request was submitted, so the engineering team were aware of some of the other impacts it would have.

Although the resulting pull request was detailed and clear, it has taken a few days to make all of the changes, as the core code was still being worked on. This was actually one of the rarer cases where we had to do more work to get the patches integrated – and that shows how willing we are to work with contributions. Smaller changes are extremely welcome too, and often much quicker to digest. Don’t be put off by this larger example – come and start hacking with us!

We hope this post highlights some of the things that help to make it smoother to contribute to the project. To recap:

  1. review the contribution guidelines and complete the CLA;
  2. if you want to submit a major code change, discuss it on the relevant mailing list beforehand;
  3. think about how the pull request is structured, and submit changes in separate consumable commits (rather than as one monolithic change) where appropriate;
  4. the patch should be well-tested, should include tests if possible, and should pass our Travis CI process;
  5. the changes should be clearly documented in the request, especially when the updates are more extensive than correcting a few typos.

The past few months have seen the Cloud Foundry Open Source community grow hugely, and mailing list activity continues to be at an all-time high – so we’re really looking forward to continuing to work with other developers to make the platform even more awesome! Thanks for being on this journey with us.

Andy Piper @andypiper

Developer Advocate, Cloud Foundry

Facebook Twitter Linkedin Digg Delicious Reddit Stumbleupon Email

Cloud Foundry and Open PaaS at OSCON

The Cloud Foundry team is at the premier Open Source conference, O’Reilly OSCON this week. What a difference a year makes! This time last year, the Cloud Foundry Open Source project and the idea of an open Platform as a Service (and PaaS generally) was a new concept to many developers. This year, there has been a clear buzz around clouds – particularly open cloud platforms –and sessions on these topics have been very busy.

Cloud Foundry had a number of sessions: Josh Long has been as popular as ever, talking about Spring and Cloud Foundry topics; Raja Rao DV delivered a masterclass in node.js on Cloud Foundry; and I hosted a birds-of-a-feather group to discuss the idea of messaging and integration in the cloud using technologies like RabbitMQ. We also had some of the developers talking about and demonstrating BOSH, the deployment tool that was released to the community a couple of months ago. The exciting part here was that Vadim Spivak and Oleg Shaldybin showed BOSH deploying a full Cloud Foundry environment onto PistonCloud’s OpenStack-based cloud!

Deploying Cloud Foundry to PistonCloud

The SpringSource and Cloud Foundry expo hall booth has been busy, too. Everyone picked up a Micro Cloud Foundry USB stick in their conference schwag bags. Lots of people stopped by to show us their apps running on CloudFoundry.com and had the opportunity to earn a great hoodie.

The Cloud Foundry and SpringSource booth

For me as a Developer Advocate, it has also been fantastic to meet up with many of our partners in the Cloud Foundry ecosystem to see where they are taking their own offerings. I had the pleasure of spending time with Adron Hall talking about Tier 3Iron Foundry, and all kinds of other topics around the evolution of the Cloud Foundry community. If you are not familiar with Iron Foundry, it’s an exciting project that extends Cloud Foundry to the .NET environment.

Our partners over at AppFog brought some “No Vendor Lock-in” placards to the show, and handed out free ice cream outside the front of the Oregon Convention Center. Now, the draw of ice cream is always a good one, but for me it was a great opportunity to chat with the team and talk about what they are up to. AppFog are based locally in Portland, so it was nice to get to see them on “home turf.” I’m a big fan of their nice web console and the fact that they offer EC2, OpenStack and other options for deployment. AppFog have also been running a contest enabling developers to wish the OpenStack project a Happy Birthday, which looks like a lot of fun.

The ActiveState team are here too talking about Stackato, their private enterprise PaaS based on Cloud Foundry. A few months ago we posted that FeedHenry can deploy mobile apps to CloudFoundry.com, but some organisations might prefer to deploy those apps behind an enterprise firewall. Diane Mueller showed me a great example of Stackato and FeedHenry working together, delivering secure mobile webapps (see the sneak peek in the screenshot here).

Apart from all of these Cloud Foundry-based ecosystem partners, it has also been great to chat with our friends on the team at MongoDB, and get feedback from developers at the sessions and on the show floor about what they thought of Cloud Foundry and how I can help them move forward to a PaaS environment.

What a great event. I hope to be back here next year!

Watch our Facebook and Google+ pages for peeks at images from OSCON 2012.

Andy Piper, Cloud Foundry Team

Facebook Twitter Linkedin Digg Delicious Reddit Stumbleupon Email

Administer Cloud Foundry with Mobile Apps

One of the neat things about Cloud Foundry is that, because the code is open source, it’s easy to see how the administration tools (such as the command line-based vmc) work. The Cloud Controller component has a REST API, which provides the ability to query and modify the Cloud Foundry environment. That means it is relatively straightforward to build a management user interface tailored to the platform you are using, or to the requirements and needs of a specific set of users.

To illustrate this, I made a really brief video which I tend to use when I’m speaking about the Cloud Foundry platform and ecosystem. What you see here are two iOS apps - CF Mobile Admin (App Store link) and the AppFog app (App Store Link) – which have the ability to connect to Cloud Foundry instances, list deployed apps, modify instances, stop or start applications and query detailed information about the available resources. These kinds of tools are useful if you don’t have vmc handy, and are obviously great for mobile usage. Note that both of these tools are provided by third parties, and not by the Cloud Foundry development team.

Several developers have asked me if there are equivalent apps for Android or Windows Phone. If there are, I haven’t found them yet. One other example of a custom third-party-provided administration UI–in this case, a desktop-based one–is the Microsoft Management Console (MMC) snap-in, Uhuru Cloud Manager, that Uhuru Software provides as a tool alongside its own PaaS offering. There’s clearly an opportunity to build user interfaces and tools to target platforms such as Android and Windows Phone, or indeed your choice of mobile or desktop OS.

If you come up with anything of your own, do let us know by commenting here on the blog, or by talking to us on Twitter: @cloudfoundry or via the hashtag #cloudfoundry.

Andy Piper, Cloud Foundry Team

Sign up for Cloud Foundry today to try out these mobile administration tools

Facebook Twitter Linkedin Digg Delicious Reddit Stumbleupon Email