Canonical Voices

Posts tagged with 'planet'

admin

Hello MAASters! The MAAS development summaries are back!

The past three weeks the team has been made good progress on three main areas, the development of 2.3, maintenance for 2.2, and out new and improved python library (libmaas).

MAAS 2.3 (current development release)

The first official MAAS 2.3 release has been prepared. It is currently undergoing a heavy round of testing and will be announced separately once completed. In the past three weeks, the team has:

  • Completed Upstream Proxy UI
    • Improve the UI to better configure the different proxy modes.
    • Added the ability to configure an upstream proxy.
  • Network beaconing & better network discovery
  • Started Hardware Testing Phase 2
      • UX team has completed the initial wireframes and gathered feedback.
      • Started changes to collect and gather better test results.
  • Started Switch modeling
      • Started changes to support switch and switch port modeling.
  • Bug fixes
    • LP: #1703403 – regiond workers can use too many postgres connections
    • LP: #1651165 – Unable to change disk name using maas gui
    • LP: #1702690 – [2.2] Commissioning a machine prefers minimum kernel over commissioning global
    • LP: #1700802 – [2.x] maas cli allocate interfaces=<label>:ip=<ADDRESS> errors with Unknown interfaces constraint Edit
    • LP: #1703713 – [2.3] Devices don’t have a link from the DNS page
    • LP: #1702976 – Cavium ThunderX lacks power settings after enlistment apparently due to missing kernel
    • LP: #1664822 – Enable IPMI over LAN if disabled
    • LP: #1703713 – Fix missing link on domain details page
    • LP: #1702669 – Add index on family(ip) for each StaticIPAddress to improve execution time of the maasserver_routable_pairs view.
    • LP: #1703845 – Set the re-check interval for rack to region RPC connections to the lowest value when a RPC connection is closed or lost.

MAAS 2.2 (current stable release)

  • Last week, MAAS 2.2 was SRU’d into the Ubuntu Archives and to our latest LTS release, Ubuntu Xenial, replacing the MAAS 2.1 series.
  • This week, a new MAAS 2.2 point release has also been prepared. It is currently undergoing heavy testing. Once testing is completed, it will be released in a separate announcement.

Libmaas

Last week, the team has worked on increasing the level

  • Added ability to create machines.
  • Added ability to commission machines.
  • Added ability to manage MAAS networking definitions. Including Subnet, Fabrics, Spaces, vlans, IP Ranges, Static Routes and DHCP.

Read more
admin

Hello MAASters!

The purpose of this update is to keep our community engaged and informed about the work the team is doing. We’ll cover important announcements, work-in-progress for the next release of MAAS and bugs fixes in release MAAS versions.

MAAS 2.3 (current development release)

  • Completed Django 1.11 transition
      • MAAS 2.3 snap will use Django 1.11 by default.
      • Ubuntu package will use Django 1.11 in Artful+
  • Network beaconing & better network discovery
      • MAAS now listens for [unicast and multicast] beacons on UDP port 5240. Beacons are encrypted and authenticated using a key derived from the MAAS shared secret. Upon receiving certain types of beacons, MAAS will reply, confirming the sender that existing MAAS on the network has the same shared key. In addition, records are kept about which interface each beacon was received on, and what VLAN tag (if any) was in use on that interface. This allows MAAS to determine which interfaces observed the same beacon (and thus must be on the same fabric). This information can also determine if [what would previously have been assumed to be] a separate fabric is actually an alternate VLAN in an existing fabric.
      • The maas-rack send-beacons command is now available to test the beacon protocol. (This command is intended for testing and support, not general use.) The MAAS shared secret must be installed before the command can be used. By default, it will send multicast beacons out all possible interfaces, but it can also be used in unicast mode.
      • Note that while IPv6 support is planned, support for receiving IPv6 beacons in MAAS is not yet available. The maas-rack send-beacons command, however, is already capable of sending IPv6 beacons. (Full IPv6 support is expected to make beacons more flexible, since IPv6 multicast can be sent out on interfaces without a specific IP address assignment, and without resorting to raw sockets.)
      • Improvements to rack registration are now under development, so that users will see a more accurate representation of fabrics upon initial installation or registration of a MAAS rack controller.
  • Bug fixes
    • LP: #1701056: Show correct information for a device details page as a normal user
    • LP: #1701052: Do not show the controllers tab as a normal user
    • LP: #1683765: Fix format when devices/controllers are selected to match those of machines
    • LP: #1684216 – Update button label from ‘Save selection’ to ‘Update selection’
    • LP: #1682489 – Fix Cancel button on add user dialog, which caused the user to be added anyway
    • LP: #1682387 – Unassigned should be (Unassigned)

MAAS 2.2.1

The past week the team was also focused on preparing and QA’ing the new MAAS 2.2.1 point release, which was released on Friday June the 30th. For more information about the bug fixes please visit the following https://launchpad.net/maas/+milestone/2.2.1 .

MAAS 2.2.1 is available in:

  • ppa:maas/stable

Read more
admin

Announcements

  • Transition to Git in Launchpad
    The MAAS team is happy to announce that we have moved our code repositories away from Bazaar. We are now using Git in Launchpad.[1]

MAAS 2.3 (current development release)

This week, the team has worked on the following features and improvements:

  • Codebase transition from bzr to git – This week the team has focused efforts on updating all processes to the upcoming transition to Git. The progress involved:
    • Updated Jenkins job configuration to run CI tests from Git instead of bzr.
    • Created new Jenkins jobs to test older releases via Git instead of bzr.
    • Update Jenkins job triggering mechanism from using Tarmac to using the Jenkins Git plugin.
    • Replaced the maas code lander (based on tarmac) with a Jenkins job to automatically land approved branches.
      • This also includes a mechanism to automatically set milestones and close Launchpad bugs.
    • Updated Snap building recipe to build from Git. 
  • Removal of ‘tgt’ as a dependency behind a feature flag – This week we have landed the ability to load ephemeral images via HTTP from the initrd, instead of doing it via iSCSI (served by ‘tgt’). While the use of ‘tgt’ is still default, the ability to not use it is hidden behind a feature flag (http_boot). This is only available in trunk. 
  • Django 1.11 transition – We are down to the latest items of the transition, and we are targeting it to be completed by the upcoming week. 
  • Network Beaconing & better network discovery – The team is continuing to make progress on beacons. Following a thorough review, the beaconing packet format has been optimized; beacon packets are now simpler and more compact. We are targeting rack registration improvements for next week, so that newly-registered rack controllers do not create new fabrics if an interface can be determined to be on an existing fabric.

Bug Fixes

The following issues have been fixed and backported to MAAS 2.2 branch. This will be available in the next point release of MAAS 2.2 (2.2.1). The MAAS team is currently targeting a new 2.2.1 release for the upcoming week.

  • LP #1687305 – Fix virsh pods reporting wrong storage
  • LP #1699479 – A couple of unstable tests failing when using IPv6 in LXC containers

[1]: https://git.launchpad.net/maas

Read more
admin

The purpose of this update is to keep our community engaged and informed about the work the team is doing. We’ll cover important announcements, work-in-progress for the next release of MAAS and bugs fixes in release MAAS versions.

MAAS Sprint

The Canonical MAAS team sprinted at Canonical’s London offices this week. The purpose was to review the previous development cycle & release (MAAS 2.2), as well as discuss and finalize the plans and goals for the next development release cycle (MAAS 2.3).

MAAS 2.3 (current development release)

The team has been working on the following features and improvements:

  • New Feature – support for ‘upstream’ proxy (API only)Support for upstream proxies has landed in trunk. This iteration contains API only support. The team continues to work on the matching UI support for this feature.
  • Codebase transition from bzr to git – This week the team has focused efforts on updating all processes to the upcoming transition to Git. The progress so far is:
    • Prepared the MAAS CI infrastructure to fully support Git once the transition is complete.
    • Started working on creating new processes for PR’s auto-testing and landing.
  • Django 1.11 transition – The team continues to work through the Django 1.11 transition; we’re down to 130 unittest failures!
  • Network Beaconing & better network discovery – Prototype beacons have now been sent and received! The next steps will be to work on the full protocol implementation, followed by making use of beaconing to enhance rack registration. This will provide a better out-of-the-box experience for MAAS; interfaces which share network connectivity will no longer be assumed to be on separate fabrics.
  • Started the removal of ‘tgt’ as a dependency – We have started the removal of ‘tgt’ as a dependency. This simplies the boot process by not loading ephemeral images from tgt, but rather, having the initrd download and load the ephemeral environment.
  • UI Improvements
    • Performance Improvements – Improved the loading of elements in the Device Discovery, Node listing and Events page, which greatly improve UI performance.
    • LP #1695312 – The button to edit dynamic range says ‘Edit’ while it should say ‘Edit reserved range’
    • Remove auto-save on blur for the Fabric details summary row. Applied static content when not in edit mode.

Bug Fixes

The following issues have been fixed and backported to MAAS 2.2 branch. This will be available in the next point release of MAAS 2.2 (2.2.1) in the coming weeks:

  • LP: #1678339 – allow physical (and bond) interfaces to be placed on VLANs with a known 802.1q tag.
  • LP: #1652298 – Improve loading of elements in the device discovery page

Read more
admin

Thursday June 8th, 2017

The MAAS team is happy to announce the introduction of development summaries. We hope this helps to keep our community engaged and informed about the work the team is doing. We’ll cover important announcements, work-in-progress for the next release of MAAS, and bugs fixed in released MAAS versions.

Announcements

With the MAAS 2.2 release out of the door, we are happy to announce that:

  • MAAS 2.3 is now opened for development.
  • MAAS is moving to GIT in Launchpad – In the coming weeks, MAAS source will now be hosted under a GIT repository in Launchpad, once we complete the work of updating all our internal processes (e.g. CI, Landers, etc).

MAAS 2.3 (current development release)

With the team now focusing efforts on the new development release, MAAS 2.3, the team has been working on the following features and improvements:

  • Started adding support for Django 1.11 – MAAS will continue to be backward compatible with Django 1.8.
  • Adding support for ‘upstream’ proxy – MAAS deployed machines will continue to use MAAS’ internal proxy, while allowing MAAS ‘ proxy to communicate with an upstream proxy.
  • Started adding network beaconing – New feature to support better network (subnet’s, vlans) discovery and allow fabric deduplication.
    • Officially registered IPv4 and IPv6 multicast groups for MAAS beaconing (224.0.0.118 and ff02::15a, respectively).
    • Implemented a mechanism to provide authenticated encryption using the MAAS shared secret.
    • Prototyped initial beaconing multicast join mechanism and receive path.

Libmaas (python-libmaas)

With the continuous improvement of the new MAAS Python Library (python-libmaas), we have focused our efforts on the following improvements the past week:

  • Add support to be able to provide nested objects and object sets.
  • Add support to be able to update any object accessible via the library.
  • Add ability to read interfaces (nested) under Machines, Devices, Rack Controllers and Region Controllers.
  • Add ability to read VLAN’s (nested) under Fabrics.

Bug Fixes

The following issues have been fixed and backported to MAAS 2.2 branch. This will be available in the next point release of MAAS 2.2 (2.2.1) in the coming weeks:

  • Bug #1694767: RSD composition not setting local disk tags
  • Bug #1694759: RSD Pod refresh shows ComposedNodeState is “Failed”
  • Bug #1695083: Improve NTP IP address selection for MAAS DHCP clients.

Questions?

IRC – Find as on #maas @ freenode.

ML – https://lists.ubuntu.com/mailman/listinfo/maas-devel

Read more
admin

I’m happy to announce that MAAS 2.2.0 (final) has now been released, and it introduces quite a few exciting features:

  • MAAS Pods – Ability to dynamically create a machine on demand. This is reflected in MAAS’ support for Intel Rack Scale Design.
  • Hardware Testing
  • DHCP Relay Support
  • Unmanaged Subnets
  • Switch discovery and deployment on Facebook’s Wedge 40 & 100.
  • Various improvements and minor features.
  • MAAS Client Library
  • Intel Rack Scale Design support.

For more information, please read the release notes are available here.

Availability
MAAS 2.2.0 is currently available in the following MAAS team PPA.
ppa:maas/next
Please note that MAAS 2.2 will replace the MAAS 2.1 series, which will go out of support. We are holding MAAS 2.2 in the above PPA for a week, to provide enough notice to users that it will replace 2.1 series. In the following weeks, MAAS 2.2 will be backported into Ubuntu Xenial.

Read more
Michael Hall

With all of the new documentation coming to support the development of Unity Scopes, it’s time for us to have another development shodown! Contestants will have five (5) weeks to develop a project, from scratch, and submit it to the Ubuntu Store. But this time all of the entries must be Scopes.

Be sure to update to the latest SDK packages to ensure that you have the correct template and tools. You should also create a new Click chroot to get the latest build and runtime packages.

Prizes

prizesWe’ve got some great prizes lined up for the winners of this competition.

  • 1st place will win a new Dell XPS 13 Laptop, Developer Edition (preloaded with Ubuntu)
  • Runners up will receive one of:
    • Logitech UE Boom Bluetooth speakers
    • Nexus 7 running Ubuntu
    • An Ubuntu bundle, featuring:
      • Ubuntu messenger bag
      • Ubuntu Touch Infographic T-shirt
      • Ubuntu Neoprene Laptop Sleeve
    • An Ubuntu bundle, featuring:
      • Ubuntu backpack
      • Ubuntu Circle of Friends Dot Design T-shirt
      • Ubuntu Neoprene Laptop Sleeve

Judging

Scope entries will be reviewed by a panel of judges from a variety of backgrounds and specialties, all of whom will evaluate the scope based on the following criteria:

  • General Interest – Scopes that are of more interest to general phone users will be scored higher. We recommend identifying what kind of content phone users want to have fast, easy access to and then finding an online source where you can query for it
  • Creativity – Scopes are a unique way of bringing content and information to a user, and we’ve only scratched the surface of what they can do. Thinking outside the box and providing something new and exciting will lead to a higher score for your Scope
  • Features – There’s more to scopes than basic searching, take advantage of the departments, categories and settings APIs to enhance the functionality of your Scope
  • Design – Scopes offer a variety of ways to customize the way content is displayed, from different layouts to visual styling. Take full advantage of what’s possible to provide a beautiful presentation of your results.
  • Awareness / Promotion – we will award extra points to those of you who blog, tweet, facebook, Google+, reddit, and otherwise share updates and information about your scope as it progresses.

The judges for this contest are:

  • Chris Wayne developer behind a number of current pre-installed Scopes
  • Joey-Elijah Sneddon Author and editor of Omg!Ubuntu!
  • Victor Thompson Ubuntu Core Apps developer
  • Jouni Helminen Designer at Canonical
  • Alan Pope from the Ubuntu Community Team at Canonical

Learn how to write Ubuntu Scopes

To get things started we’ve recently introduced a new Unity Scope project template into the Ubuntu SDK, you can use this to get a working foundation for your code right away. Then you can follow along with our new SoundCloud scope tutorial to learn how to tailor your code to a remote data source and give your scope a unique look and feel that highlights both the content and the source. To help you out along the way, we’ll be scheduling a series of online Workshops that will cover how to use the Ubuntu SDK and the Scope APIs. In the last weeks of the contest we will also be hosting a hackathon on our IRC channel (#ubuntu-app-devel on Freenode) to answer any last questions and help you get your c If you cannot join those, you can still find everything you need to know in our scope developer documentation.

How to participate

If you are not a programmer and want to share some ideas for cool scopes, be sure to add and vote for scopes on our reddit page. The contest is free to enter and open to everyone. The five week period starts on the Thursday 30th October and runs until Wednesday 3rd December 2014! Enter the Ubuntu Scope Showdown >

Read more
Michael Hall

It was less than a month that we announced crossing the 10,000 users milestone for Ubuntu phones and tablets, and we’ve already reached another: 100,000 app downloads!

Downloads

10k_downloads_by_countryThe new Ubuntu store used by phones, tablets, and soon the desktop as well, provides app developers with some useful statistics about how many times their app was downloaded, which version was downloaded, and what country the download originated from. This is very useful as it it lets the developer gauge how many users they currently have for their app, and how quickly they are updating to new versions.  One side-effect of these statistics is that we can see how many total downloads there have been across all of the apps in the store, and this week we reached (and quickly passed) the 100,000th download.

Users

app_storeWe’re getting close to having Ubuntu phones go on sale from our partners at Bq and Meizu, but there are still no devices on the market that came with Ubuntu.  This means that we’ve reached this milestone solely from developers and enthusiasts who have installed Ubuntu on one of their own devices (probably a Nexus device) or the device emulator.  

The continued growth in the download number validates the earlier milestone of 10,000 users, a large number of them are clearly still using Ubuntu on their device (or emulator) and keeping their apps up to date (the number represents new app installs and updates). This means that not only are people trying Ubuntu already, many of them are sticking with it too.  Yet another datapoint in support of this is the 600 new unique users who have been using the store since the last milestone announcement.

Pioneers

pioneers_shirtTo supply all of these users with the apps they want, we’re continuing to build our community of app developers around Ubuntu. The first of these have already received their limited edition t-shirts, and are listed on the Ubuntu Pioneers page of the developer portal.

There is still time to get your app published, and claim your place on that page and your t-shirt, but they’re filling up fast so don’t delay. Go to our Developer Portal and get started today, you could be only a few hours away from publishing your first app in the store!

Read more
Michael Hall

ubuntu-phone-three-1As we enter the final months before the first Ubuntu phones ship from our partners Meizu and Bq, the numbers of apps, users and downloads continues to grow at a steady pace. Today I’m excited to announce that we have more than ten thousand unique users of Ubuntu on phones or tablets!

Users

Ubuntu phone (and tablet) users sign into their Ubuntu One account on their device in order to download or update the applications on their phone. This allows us to provide many useful features that users expect coming from Android or iOS, such as being able to re-install their collection of apps on a new phone or after resetting their current one, or browsing the store’s website (coming soon) and having the option to install an app directly to their device from there. As a side effect, it means we know how many unique Ubuntu One accounts have connected to the store to in order to download an app, and that number has this week passed the 10,000 mark.

Excitement

Meizu-MX3Not only is this a milestone, but it’s down right amazing when you consider that there are currently no phones available to purchase with Ubuntu on them. The first phones from OEMs will be shipping later this year, but for now there isn’t a phone or tablet that comes with the new Ubuntu device OS on it. That means that each of these 10,000 people have purchased (or already had) either a supported Nexus device, or are using one of the community ports, and either wiped Android off them in favor of Ubuntu, or are dual booting. If this many people are willing to install the beta release of Ubuntu phone on their device, just imagine how many more will want to purchase a phone with Ubuntu pre-installed and with full support from the manufacturer.

Pioneers

In addition to users of Ubuntu phone, we’ve also seen a steady growth in the number of applications and application developers targeting Ubuntu phone and using the Ubuntu SDK. To celebrate them, we created Ubuntu App Pioneers page, and the first batch of Pioneers t-shirts are being sent out to those intrepid developers who, again, are so excited about a platform that isn’t even available to consumers yet that they’ve dedicated their time and energy into making it better for everyone.

Read more
albertomilone@gmail.com

Here’s a short list of the new features concerning hybrid graphics in Ubuntu 14.04:

  • External displays connected to the NVIDIA GPU can now be used through the “nvidia-settings” panel. We used to disable them but this is no longer the case (also there’s a fix pending for LP: #1296020, in case your BIOS provides a fake output)
  • We have a more robust system to detect and enable hybrid graphics, thanks to the new gpu-manager (I’ll write a more technical article with all the details soon).
  • We now fall back on the open Intel driver if any of the required components is missing (e.g. the kernel module was not built for the newly installed kernel, or a key package was accidentally removed).
  • Installing the nvidia or the fglrx driver should allow hybrid graphics to work with no further action required. Switching from a power profile to another can be done using the relevant control panels (either AMD’s or NVIDIA’s), as usual.
  • A direct benefit of using a recent kernel is that tearing on Intel/NVIDIA systems, while still an issue, should be a little reduced.

My special thanks go to Maarten Lankhorst (of Nouveau fame), who helped a lot by providing guidance, testing, and debugging X issues.

Known issues

Instructions

Read more
James Westby

We’ve recently rolled out some changes to the submission process for Click Applications that should make it easier for you to submit new applications, and allow them to be approved more quickly.

Previously when submitting an application you would have to enter all the information about that application on the website, even when some of that information was already included in the package itself. This was firstly an irritation, but sometimes developers would make a mistake when re-entering this information, meaning that the app was rejected from review and they would have to go back and correct the mistake.

With the new changes, when you submit an application you will wait a few seconds while the package is examined by the system, and you will then be redirected to the same process as before. However this time some of the fields will be pre-filled with information from the package. You won’t have to type in the application name, as it will already be there. This will speed up the process, and should reduce the number of mistakes that happen at that stage.

We’ve also been working on a command-line interface for submitting applications. It’s not polished yet, but if you are intrepid you can try out click-toolbelt.

Read more
Jono Bacon

So, we have announced the Ubuntu App Showdown where you can build some awesome Ubuntu apps and win prizes such as the Nexus 7 (2013) tablet and the Meizu MX3, we have provided an update on lots of great updates going on such as refined HTML5 support and a raft of developer.ubuntu.com updates, we have revised and improved how the dash and scopes work (more developer docs on this coming soon!), we have simplified how apps are uploaded to the store, and of course, Ubuntu handsets are hitting the market later this year so our app devs will have plenty of new users to consume their apps. But, why stop there?

We are not here to build a good app developer community, we are here to build the most empowering, rewarding, and fun app developer community there is, all powered by openness and collaboration.

As such, I am delighted to announce that next week Ubuntu App Developer Week beginning on Monday 3rd March at 2pm UTC and running all week

This is a week with a range of tutorial sessions for how to build apps for Ubuntu across QML, HTML5 and more. All of these sessions take place online in a series of Google Hangouts, complete with embedded chat channels where you can interact with the speaker and ask questions.

This includes sessions such as the following for QML apps:

  • Game Development with QML and Box2D
  • Internationalize your apps
  • Extending QML with a C++ Plugin
  • Ubuntu UI Toolkit tips and tricks for beginners
  • Responsive Layouts
  • Testing with qmltestrunner
  • Making the perfect user acceptance test
  • Integrating U1DB in your app
  • Content Exchange in a confined world
  • Add download capabilities to your apps

and the following for HTML5 apps:

  • Building HTML5 apps with Ubuntu
  • Cordova in HTML5 Apps
  • Platform APIs for HTML5 Apps
  • HTML5 UbuntuUI Components
  • Debugging HTML5 apps

We also have a few other sessions such as a feedback session on the software store and how to get compiled code into click packages.

How Do I Join?

Ubuntu App Developer Week is available freely to anyone who chooses to join. You don’t have to be an expert, and you don’t have to know how to write apps with the Ubuntu SDK yet. Beginners are very welcome!

All of the sessions, their times, and how to join them are available on the Ubuntu App Developer Week schedule. Just show up at the right time, click a session, and you are ready to go!

We still have some slots free if you want to volunteer to run a session. If you would like to, please email Michael Hall.

The fun starts next week on Monday 3rd March at 2pm UTC and runs all week. We hope to see you there!

Read more
Jono Bacon

The focus on content is a core principle that drives how we build Ubuntu. This not only includes getting the clutter out of the way and maximizing your view on your content (such as integrated window borders and overlay scroll-bars), but it also includes searching for, browsing, and consuming content as easily as possible.

At the core of this latter approach to content is the Ubuntu dash and the scopes that power it. For those unfamiliar with this technology, when you tap or click the Ubuntu button on your Ubuntu computer, smart-phone, or tablet you currently see a number of different views such as Home, Apps, Music, and Videos.

Within these views we have a series of “scopes” that deliver both online and offline content. As an example, in our music scope we show music on your computer/device as well as music available to download or purchase online too.

All of this integrates search right into the heart of Ubuntu; no longer do you need to open up a software store, music app, or video app to access content you either own or would like to aquire…it is all integrated into the core of Ubuntu.

Ever since we released this technology we have been evaluating the feedback from our users, through formalized user testing, as well as input from content providers who are keen to deliver content via these services. We have reviewed all of this feedback and made a set of changes that improve and refine how the dash and scopes work, and we want to share some of those updates here.

This post does not summarize all improvements we are making; we have other refinements in store, and we will provide those updates closer to the time.

All screenshots in this post are of working code on the phone and tablet, much of which you can see at MWC this week. This technology will also be coming to the desktop at a later date.

The Core of the Dash

One of the constraining aspects about our previous dash was some of the limitations in terms of how scope results are presented to the user. Ubuntu users will be very familiar with a search resulting in the same visual structure of how results appear, which you can then click a result to see a preview view with more details.

We have refined and improved this by building a “dash toolkit” that can be used to customize how results are displayed now.

As an example, here are some screenshots of the dash displaying different types of results:

The Scopes Store

In our previous dash the notion of scopes were something that the Ubuntu development team were primarily involved in – we would ship a number of scopes switched on by default and the user could enable/disable those scopes where appropriate.

In our new dash we are treating scopes almost like in-dash apps; that is, a scope is something a provider can ship to users and the user can enable or disable the scopes that are of most interest to them. This makes the dash infinitely pluggable, more tuned to the user’s needs, and combined with the customization of how results are displayed, it makes the dash far more compelling for both users and content providers.

This range of scopes is delivered by the Scopes store which provides a range of categories and available scopes.

As an example, if you are a Grooveshark fan you can head into the Scopes store and add the Grooveshark scope and now your search will return Grooveshark content.
In action

Let’s take this new technology for a spin to demonstrate how it works.

In the screenshot below we can see the familiar apps scope. Here we can see apps that are installed, apps available to download, and we can search for apps too:

Let’s now see a more customized scope in the form of a guide to Barcelona:

Here you can see a combination of recommended places to visit, transport information, weather and more:

This scope is pulling together a variety of online components in a customized view and can be shipped as a scope that you can install on your computer or device.

Let’s look at another example. Here we have a scope for World Cup information:

Finally, let’s take a look at how we browse and install scopes. This is the scopes store:

Here we can select a scope easily and install it by tapping it.

When will I get this?

This technology is going to be arriving for Ubuntu for smart-phones and tablets in the next few weeks. Those of you using Ubuntu for devices can expect to find it as part of a norma system update.

For the desktop this technology will arrive at a later date when converge our Unity 8 platform on the desktop. We expect this to be around the time of Ubuntu 14.10 – Ubuntu 15.04.

The Developer Story

This new technology opens up a wealth of opportunities for developers. Over the coming weeks we will be providing a full tutorial, API documentation, quick-start guides, and more on developer.ubuntu.com to help you get stared building and deliver scopes to users.

We will announce when this content has been released on this blog.

FAQ

Why did you change the dash and scopes?

Based on feedback from our users, through formalized user testing, and input from content providers, we wanted to make a series of improvements to refine how the dash and scopes work.

When can we expect this technology to arrive?

We expect these improvements to be landing in the Ubuntu for phones and tablets images in the next few weeks.

How can I enable/disable scopes?

You determine which scopes are searched by adding them to (or removing them from) your favourites list. Even if a scope is not in your favourites list, you can explicitly navigate to that scope and start a search, without adding that scope to your favourites list. So, you are in complete control at all times of which scopes are searched.

What security/privacy measures are you putting in place with this technology?

While we will ship with a set of default scopes, the user can switch of any scopes if they choose to do so.

Each scope runs as a separate process in its own sandbox, secure via AppArmor. The sandbox is enforced at the kernel level, so it is impossible for a scope implementation to break out of the sandbox (for example, by making system calls directly).

Scopes that are installed in the device have exactly one of two possible AppArmor profiles: network access or file system access. If a scope can access the network (for example, to retrieve email headers from a remote imap account), that scope cannot access the file system. Conversely, if a scope can access the file system (for example, to search for locally-installed media files), it cannot access the network. This prevents a scope from retrieving sensitive information from the file system and then shipping it out via the network to some remote server.

Scopes are also prevented from accessing each others’ network endpoints. This means that a scope installed on the device cannot send queries to other scopes on the device in an attempt to collect private information.

What languages can I write these scopes in?

C++, Javascript, and Go.

Read more
albertomilone@gmail.com

GPG key transition


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1,SHA512

Sun, 01 Dec 2013 16:11:29 +0100

For a number of reasons, I've recently set up a new OpenPGP key, and
will be transitioning away from my old one.

The old key will continue to be valid for some time, but I prefer all
future correspondence to come to the new one. I would also like this
new key to be re-integrated into the web of trust. This message is
signed by both keys to certify the transition.

The old key was:

pub 1024D/8EB26AF1 2006-05-22
Key fingerprint: 9C4E 6858 CFD9 41F5 5937 F717 1592 49E9 8EB2 6AF1

And the new key is:

pub 4096R/B3C98EDD 2013-12-01
Key fingerprint: F6AF C513 FCB0 A3AC DFD0 B930 937D 6BFE B3C9 8EDD

To fetch my new key from a public key server, you can do:

gpg --keyserver pgp.mit.edu --recv-key B3C98EDD

If you already know my old key, you can now verify that the new key is
signed by the old one:

gpg --check-sigs B3C98EDD

If you don't already know my old key, or you just want to be double
extra paranoid, you can check the fingerprint against the one above:

gpg --fingerprint B3C98EDD

If you are satisfied that you've got the right key, and the UIDs match
what you expect, I'd appreciate it if you would sign my key:

gpg --sign-key B3C98EDD

Lastly, if you could upload these signatures, I would appreciate it.
You can just upload the signatures to a public keyserver directly:

gpg --keyserver pgp.mit.edu --send-key B3C98EDD

You can also find this signed message at:

http://www.albertomilone.com/tseliot/key-transition-2013-12-01-tseliot.txt

Please let me know if there is any trouble, and sorry for the
inconvenience.

Alberto Milone
IRC: tseliot

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iEYEARECAAYFAlKbV2AACgkQFZJJ6Y6yavFrUACdE7SKNtdpesxA+Y00PYE09j+j
gToAoMLdl8dak6NWzZZEvr8uLRq6JUfTiQIcBAEBCgAGBQJSm1dgAAoJEJN9a/6z
yY7dp3QP/jcUm5SLFfuad1D7otDNLvbxsOKnK7qF2KwEL5cc3J71mup88qeT2DcW
VUhCIOnirNAW1OddlJJZ9XCK9T8B8hneZDOJ/D9xPTCvfVcpl9lXzVpll6R8KZoY
U4yZHajdU8YzM0Zfzgvq7VWyi6KrE6yYRHo6pF2TkS1/BoWse/n3583ODnx12b9/
kP3pYFauk48kpDWOHciuB1GQOOOy7EC+Dxd59wWW32MyAadFq83pqSx9VlTD/EpX
30jpsp1ymh5fxPY7rsNwRoTfhmb4IZ+WbM4QDtQtq45Y6geDijxy1YSnh8VIjsrq
6fwDtFdKbJUViin5W+o+siXvQc2STflcQ/hLBKUO7yvwBIKWPimRtEAgVm/K2P9M
Pa3Nmrs7BbQcmRL5QRUiyk0b91SNgnetNo5M6QIQvzHpITTghBBj6jMkfEmHevKd
KJVyq6p6pz3/NMaKFpuP2rLkIiLeQVOPouvJ2zDFbsjCD50MUm4JqpKsI8ss/pzh
4KXLVewV5yhLVdX9HhKwU/HxhBmJxAPr6ZUeI1r11BxwgRsbBNbNfSe9Wn+MTs0E
CbdJ7KYscyHVdY6BiKIjnP9WxGwqqTCkDfPnxA65/pXh/MJE4yb1BRfg4uKvs0VU
94D2g2LYhYGeX1TMB8QKmVGG9nPMb3ZI2GKRyrU4gCqwi464BUUR
=9P7Y
-----END PGP SIGNATURE-----

Read more
albertomilone@gmail.com

On Heated Technical Discussions

In the light of the (relatively) recent heated technical discussions on display servers and init systems, I thought I would weigh in on how to handle this kind of discussions which, honestly, I find kind of annoying (at least their “heated” side).

I do not represent my employer in any way and I base the following considerations only on what I deem sensible and respectful behaviour.

Flamewars have always existed (in their different forms) and they will not certainly end today but we can (and should) all avoid them by simply not taking part in them.

Here are some points that I consider the minimum requirements for a civil debate.

1. Mutual Respect

It is never ok to insult others. No matter what they said to upset us, we should always do our best to keep it civil. Usually developers write their responses on their blogs, in mailing lists, chat rooms, and one of the benefits of written language is that, differently from spoken language, you have the time to calm down, think carefully about the message you want to convey, re-read the text and edit out the parts you perhaps wrote out of anger and frustration. Please think twice about what you write, before you send it out.

2. Offending Others

Name-calling is not the only way to be perceived as rude or to hurt other people’s feelings. Let’s face it, if I said that you are not reliable, you change your mind every other day, your project is badly designed, etc. or if I made silly jokes about you and your software, you would not be pleased about my assessment of your work or of your personality. Furthermore please pay attention to the overall tone of what you write. There is always a respectful way to say no or to dismiss other people’s claims. Passive-aggressive behaviour1 should never be an option.

Always ask yourself if what you wrote and how phrased it were 100% appropriate and necessary. Also try to see it from the perspective of the other side. Would you consider it acceptable if others said the same to you?

And no, being rude to the people who have been rude to you will not make you any better than them. Do not let them drag you down to their level.

3. Taking Responsibility

Whatever you said, as an adult, you should take responsibility for it. If you think you are right and that you were respectful (see point 2), stand your ground and do not pay too much attention to hostile responses, as unpleasant as they can be. If you think you crossed the line, then simply put your ego aside, and apologise.

4. Playing the Victim vs Being the Victim

Do not necessarily consider yourself a victim if people react the way they do to what you said. For example, the passive-aggressive are known to see themselves as some kinds of martyrs, innocent victims attacked for no apparent reason. This way they do not have to take responsibility for their actions (see point 3).

If you are not sure as to whether this applies to you or not, go through what you wrote – see point 2 and be honest to yourself about it – and then move on to point 3. Victims do exist but are you really one?

5. Disagreeing

Sometimes it is not possible to come to an agreement. Either side will not do what the other side asked, or even meet halfway. If you feel you have done everything in your power to come to an agreement and it was not enough, then simply give up and leave the discussion. Insulting the other side will not do you (or anybody else) any good. The world will not cease to exist if there is no solution to a discussion, no matter the consequences. After all, we are still talking about software, right?

 

 


  1. Passive-aggressive behavior is the indirect expression of hostility, such as through procrastination, hostile jokes, stubbornness, resentment, sullenness, or deliberate/repeated failure to accomplish requested tasks for which one is (often explicitly) responsible.” (Wikipedia)  

Read more
albertomilone@gmail.com

In this Ubuntu release cycle I worked, among other things, on improving user experience with hybrid systems and proprietary graphics drivers. The aim was to make it easier to enable the discrete card when in need of better performance i.e. when the integrated card wouldn’t be enough.

In 13.10 I focused mainly on enablement, making sure that by installing one extra package together with the driver, users would end up with a fully working system with no additional configuration required on their end.

As for 12.04.3, I backported my work from 13.10 and I also made sure that Jockey (the restricted drivers manager in Precise) detects systems with hybrid graphics, recommends the correct driver – hiding any drivers which may support the card but not in a hybrid graphics context – and installs the extra package when users decide to enable the discrete card. The installation process is very straightforward, however, if you’re still using the old kernel/X stack, Jockey won’t show any drivers. The backported stack from Raring (which comes by default with 12.04.3) is required.

There are some known issues, which will be fixed in a near future.

If you would like to try this work on your system, you can find the instructions here.

 

Read more
albertomilone@gmail.com

In this Ubuntu release cycle I worked, among other things, on improving user experience with hybrid systems and proprietary graphics drivers. The aim was to make it easier to enable the discrete card when in need of better performance i.e. when the integrated card wouldn’t be enough.

In 13.10 I focused mainly on enablement, making sure that by installing one extra package together with the driver, users would end up with a fully working system with no additional configuration required on their end.

As for 12.04.3, I backported my work from 13.10 and I also made sure that Jockey (the restricted drivers manager in Precise) detects systems with hybrid graphics, recommends the correct driver – hiding any drivers which may support the card but not in a hybrid graphics context – and installs the extra package when users decide to enable the discrete card. The installation process is very straightforward, however, if you’re still using the old kernel/X stack, Jockey won’t show any drivers. The backported stack from Raring (which comes by default with 12.04.3) is required.

There are some known issues, which will be fixed in a near future.

If you would like to try this work on your system, you can find the instructions here.

 

Read more
albertomilone@gmail.com

Apparently Android >= 4.1.2 breaks tethering in some cases.

Basically you can connect to your phone but you will get no data whatsoever.

This may be fair (at least from Google’s point of view) if your mobile phone operator doesn’t allow tethering and Google wants to respect that. If, like me, you’re using a virtual operator (such as Coopvoce, which relies on TIM’s network) which clearly allows tethering (it’s written on their website), this new “feature” will break tethering for no reason and I’m not sure if such operators can or will actually do anything to fix the issue on their side.

The main reason I have an Internet connection on my phone is because my ADSL at home has poor upstream bandwidth, therefore (for lack of alternatives) I use my phone’s HSUPA connection to upload stuff for work. Breaking tethering for me means making my life more difficult.

Fortunately, in that bug report in the link above I also found part of the solution which helped me get Wireless tethering. Then I managed to enable USB tethering by myself.

This tutorial will require rooting your phone, which you will do at your own risk and googling how to do it.

Requirements:

  • Grab the Android SDK
  • Make a backup of your data (as unlocking the bootloader will erase everything)
  • Unlock your bootloader
  • Root your phone (install Superuser.apk)
  • Install “Scripts Manager” (SManager)
  • Install a Text editor

Follow these steps:

Connect your phone to your PC using the USB cable

Check your devices and their IP addresses:

(Make sure that tethering is disabled and that your 3G/2G/HSUPA connection is enabled and running)

sudo adb kill-server
sudo adb start-server
adb shell
su
netcfg

Which will give you something like the following:

lo       UP           127.0.0.1/8   0x00000049 00:00:00:00:00:00
ifb0     DOWN           0.0.0.0/0   0x00000082 22:b3:ab:4e:2b:0c
ifb1     DOWN           0.0.0.0/0   0x00000082 6e:67:b2:6f:8d:6c
sit0     DOWN           0.0.0.0/0   0x00000080 00:00:00:00:00:00
ip6tnl0  DOWN           0.0.0.0/0   0x00000080 00:00:00:00:00:00
rmnet0   UP      217.202.140.0/24   0x000010d1 00:00:00:00:00:00
rmnet1   DOWN           0.0.0.0/0   0x00001090 00:00:00:00:00:00
rmnet2   DOWN           0.0.0.0/0   0x00001090 00:00:00:00:00:00
p2p0     DOWN           0.0.0.0/0   0x00001002 a2:0b:ba:21:d1:fe
wlan0    DOWN           0.0.0.0/0   0x00001002 a0:0b:ba:21:d1:fe

In this case the interesting device is “rmnet0” (let’s call it the 3G device). Write down its name and its IP address.

Now enable USB tethering and run “netcfg” again:

lo       UP           127.0.0.1/8   0x00000049 00:00:00:00:00:00
ifb0     DOWN           0.0.0.0/0   0x00000082 22:b3:ab:4e:2b:0c
ifb1     DOWN           0.0.0.0/0   0x00000082 6e:67:b2:6f:8d:6c
sit0     DOWN           0.0.0.0/0   0x00000080 00:00:00:00:00:00
ip6tnl0  DOWN           0.0.0.0/0   0x00000080 00:00:00:00:00:00
rmnet0   UP      217.202.140.0/24   0x000010d1 00:00:00:00:00:00
rmnet1   DOWN           0.0.0.0/0   0x00001090 00:00:00:00:00:00
rmnet2   DOWN           0.0.0.0/0   0x00001090 00:00:00:00:00:00
p2p0     DOWN           0.0.0.0/0   0x00001002 a2:0b:ba:21:d1:fe
wlan0    DOWN           0.0.0.0/0   0x00001002 a0:0b:ba:21:d1:fe
rndis0   UP      192.168.42.129/24  0x00001043 c2:09:33:df:45:64

You will notice the presence of a new device (in this case “rndis0” which is the USB device). Again take note of its name and IP address (which will vary but it’s not a problem).

We can now try to route traffic using iptables.

So, for Wireless tethering (use the name of the 3G device and leave the IP address as it is):

iptables -tnat -A natctrl_nat_POSTROUTING -s 192.168.0.0/16 -o rmnet0 -j MASQUERADE

And for USB tethering (use the name of the USB device and use the IP address of the 3G device):

iptables -tnat -A natctrl_nat_POSTROUTING -s 217.202.140.0/24 -o rndis0 -j MASQUERADE

Note: I’m not very familiar with iptables but I’ve found these commands to solve the problem here.

Test tethering using a PC. If it works, then we can save the two lines above in a script.

Open a text editor from your phone and type (or you can write it on your PC and then push it to your phone using adb push):

#!/system/bin/sh
iptables -tnat -A natctrl_nat_POSTROUTING -s 192.168.0.0/16 -o rmnet0 -j MASQUERADE
iptables -tnat -A natctrl_nat_POSTROUTING -s 217.202.140.0/24 -o rndis0 -j MASQUERADE

 

Then save the file, open it using SManager and tap on the “Boot” and on the “Su” labels (since we want this to run on boot and it requires root privileges).

Note: Make sure to give SManager root permissions when the Superuser app asks you.

And that’s it, restart your phone and everything should work flawlessly from now on.

Read more
roaksoax

Filming Fast & Furious 7…

Note: The car is what we call a Combi in Peru, which is a form of public transportation. While I didn’t create the FF7 original pic, it is mock to peruvian combi drivers because those are one of the most reckless drivers in the world.

Read more
roaksoax

For a while, I have been wanting to write about MAAS and how it can easily deploy workloads (specially OpenStack) with Juju, and the time has finally come. This will be the first of a series of posts where I’ll provide an Overview of how to quickly get started with MAAS and Juju.

What is MAAS?

I think that MAAS does not require introduction, but if people really need to know, this awesome video will provide a far better explanation than the one I can give in this blog post.

http://youtu.be/J1XH0SQARgo

 

Components and Architecture

MAAS have been designed in such a way that it can be deployed in different architectures and network environments. MAAS can be deployed as both, a Single-Node or Multi-Node Architecture. This allows MAAS to be a scalable deployment system to meet your needs. It has two basic components, the MAAS Region Controller and the MAAS Cluster Controller.

MAAS Architectures

Region Controller

The MAAS Region Controller is the component the users interface with, and is the one that controls the Cluster Controllers. It is the place of the WebUI and API. The Region Controller is also the place for the MAAS meta-data server for cloud-init, as well as the place where the DNS server runs. The region controller also configures a rsyslogd server to log the installation process, as well as a proxy (squid-deb-proxy) that is used to cache the debian packages. The preseeds used for the different stages of the process are also being stored here.

Cluster Controller

The MAAS Cluster Controller only interfaces with the Region controller and is the one in charge of provisioning in general. The Cluster Controller is the place the TFTP and DHCP server(s) are located. This is the place where both the PXE files and ephemeral images are being stored. It is also the Cluster Controller’s job to power on/off the managed nodes (if configured).

The Architecture

As you can see in the image above, MAAS can be deployed in both a single node or multi-node. The way MAAS has being designed makes MAAS highly scalable allowing to add more Cluster Controllers that will manage a different pool of machines. A single-node scenario can become in a multi-node scenario by simply adding more Cluster Controllers. Each Cluster Controller has to register with the Region Controller, and each can be configured to manage a different Network. The way has this is intended to work is that each Cluster Controller will manage a different pool of machines in different networks (for provisioning), allowing MAAS to manage hundreds of machines. This is completely transparent to users because MAAS makes the machines available to them as a single pool of machines, which can all be used for deploying/orchestrating your services with juju.

How Does It Work?

MAAS has 3 basic stages. These are Enlistment, Commissioning and Deployment which are explained below:

MAAS Process

Enlistment

The enlistment process is the process on which a new machine is registered to MAAS. When a new machine is started, it will obtain an IP address and PXE boot from the MAAS Cluster Controller. The PXE boot process will instruct the machine to load an ephemeral image that will run and perform an initial discovery process (via a preseed fed to cloud-init). This discovery process will obtain basic information such as network interfaces, MAC addresses and the machine’s architecture. Once this information is gathered, a request to register the machine is made to the MAAS Region Controller. Once this happens, the machine will appear in MAAS with a Declared state.

Commissioning

The commissioning process is the process where MAAS collects hardware information, such as the number of CPU cores, RAM memory, disk size, etc, which can be later used as constraints. Once the machine has been enlisted (Declared State), the machine must be accepted into the MAAS in order for the commissioning processes to begin and for it to be ready for deployment. For example, in the WebUI, an “Accept & Commission” button will be present. Once the machine gets accepted into MAAS, the machine will PXE boot from the MAAS Cluster Controller and will be instructed to run the same ephemeral image (again). This time, however, the commissioning process will be instructed to gather more information about the machine, which will be sent back to the MAAS region controller (via cloud-init from MAAS meta-data server). Once this process has finished, the machine information will be updated it will change to Ready state. This status means that the machine is ready for deployment.

Deployment

Once the machines are in Ready state, they can be used for deployment. Deployment can happen with both juju or the maas-cli (or even the WebUI). The maas-cli will only allow you to install Ubuntu on the machine, while juju will not only allow you to deploy Ubuntu on them, but will allow you to orchestrate services. When a machine has been deployed, its state will change to Allocated to <user>. This state means that the machine is in use by the user who requested its deployment.

Releasing Machines

Once a user doesn’t need the machine anymore, it can be released and its status will change from Allocated to <user> back to Ready. This means that the machine will be turned off and will be made available for later use.

But… How do Machines Turn On/Off?

Now, you might be wondering how are the machines being turned on/off or who is the one in charge of that. MAAS can manage power devices, such as IPMI/iLO, Sentry Switch CDU’s, or even virsh. By default, we expect that all the machines being controlled by MAAS have IPMI/iLO cards. So if your machines do, MAAS will attempt to auto-detect and auto-configure your IPMI/iLO cards during the Enlistment and Commissioning processes. Once the machines are Accepted into MAAS (after enlistment) they will be turned on automatically and they will be Commissioned (that is if IPMI was discovered and configured correctly).. This also means that every time a machine is being deployed, they will be turned on automatically.

Note that MAAS not only handles physical machines, it can also handle Virtual Machines, hence the virsh power management type. However, you will have to manually configure the details in order for MAAS to manage these virtual machines and turn them on/off automatically.

Read more