Planet Ubuntu is a window into the world, work and lives of Ubuntu developers and contributors
I have just released procenv version 0.46. Although this is a very minor release for the existing platforms (essentially 1 bug fix), this release now introduces support for a new platform...DarwinYup - OS X now joins the ranks of supported platforms.Although adding support for Darwin was made significantly easier as a result of the recent internal restructure of the procenv code, it did present a challenge: I don't own any Apple hardware. I could have borrowed a Macbook, but instead I decided to see this as a challenge:Could I port procenv to Darwin without actually having a local Apple system? Well, you've just read the answer, but how did I do this?Stage 1: Docker Whilst surfing around I came across this interesting docker image:https://hub.docker.com/r/andrewd/osxcross/ It provides a Darwin toolchain that I could run under Linux. It didn't take very long to follow my own instructions on porting procenv to a new platform. But although I ended up with a binary, I couldn't actually run it, partly because Darwin uses a different binary file format to Linux: rather than ELF, it uses the Mach-O format.Stage 2: TravisThe final piece of the puzzle for me was solved by Travis. I'd read the very good documentation on their site, but had initially assumed that you could only build Objective-C based projects on OSX with Travis. But a quick test proved my assumption to be incorrect: it didn't take much more than adding "osx" to the os list and "clang" to the compiler list in procenv's .travis.yml to have procenv building and running (it runs itself as part of its build) on OSX under Travis!Essentially, the following YAML snippet from procenv's .travis.yml did most of the work:language: ccompiler: - gcc - clangos: - linux - osxAll that remained was to install the build-time dependencies to the same file with this additional snippet:before_install: - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; fi - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install expat check perl; fi(Note that it seems Travis is rather picky about before_install - all code must be on a single line, hence the rather awkward-to-read "if; then ....; fi" tests).SummaryAlthough I've never personally run procenv under OSX, I have got a good degree of confidence that it does actually work.That said, it would be useful if someone could independently verify this claim on a real system!) Feel free to raise bugs, send code (or even Apple hardware :-) my way!
New Ubuntu release, then new awesome Ubucon Paris party!The Ubuntu Hour, as pre-event of the Ubucon was in the night, then I rented a city bike and I visited Paris in a new way.I already visited Paris in the past, but this city is always surprised you every time :))12345678In the afternoon, started the Ubuntu Hour. Finally Ines and Gonzalzo come too from Spain.Ubuntu Hour ParisIt was a great small event, with good beer and food, but an unique and amazing company :DFirefox for ever :))And this weekend... the Ubucon!! :))All pictures were done with a Meizu MX4 Ubuntu Edition, without edits.
If you are a Yokadi user or if you have used other todo list systems, you might have encountered this situation where you wanted to quickly add a set of tasks to a project. Using Yokadi you would repeatedly write t_add <project> <task title>. History and auto-completion on command and project names makes entering tasks faster, but it is still slower than the good old TODO file where you just write down one task per line.
t_medit is a command to get the best of both worlds. It takes the name of a project as an argument and starts the default editor with a text file containing a line for each task of the project.
Suppose you have a "birthday" project like this:
yokadi> t_list birthday
ID|Title |U |S|Age |Due date
1 |Buy food (grocery) |0 |N|2m |
2 |Buy drinks (grocery)|0 |N|2m |
3 |Invite Bob (phone) |0 |N|2m |
4 |Invite Wendy (phone)|0 |N|2m |
5 |Bake a yummy cake |0 |N|2m |
6 |Decorate living-room|0 |N|2m |
Running t_medit birthday will start your editor with this content:
1 N @grocery Buy food
2 N @grocery Buy drinks
3 N @phone Invite Bob
4 N @phone Invite Wendy
5 N Bake a yummy cake
6 N Decorate living-room
By editing this file you can do a lot of things:
Change task titles, including adding or removing keywords
Change task status by changing the character in the second column to S (started) or D (done)
Remove tasks by removing their lines
Reorder tasks by reordering lines, this will change the task urgency so that they are listed in the defined order
Add new tasks by entering them prefixed with -
Let's say you modify the text like this:
2 N @grocery Buy drinks
1 N @grocery Buy food
3 D @phone Invite Bob
4 N @phone Invite Wendy & David
- @phone Invite Charly
5 N Bake a yummy cake
- S Decorate table
- Decorate walls
Then Yokadi will:
Give the "Buy drinks" task a more important urgency because it moved to the first line
Mark the "Invite Bob" task as done because its status changed from N to D
Change the title of task 4 to "@phone Invite Wendy & David"
Add a new task titled: "@phone Invite Charly"
Remove task 6 "Decorate living-room"
Add a started task titled: "Decorate table" (note the S after -)
Add a new task titled: "Decorate walls"
You can even quickly create a project, for example if you want to plan your holidays you can type t_medit holidays. This creates the "holidays" project and open an empty editor. Just type new tasks, one per line, prefixed with -. When you save and quit, Yokadi creates the tasks you entered.
One last bonus: if you use Vim, Yokadi ships with a syntax highlight file for t_medit:
This should be in the upcoming 1.1.0 version, which I plan to release soon. If you want to play with it earlier, you can grab the code from the git repository. Hope you like it!
Come and join us for a most excellent Gathering of Halflings at Kubuntu Party 4, Friday 17th June 19:00 UTC.
The party theme is all about digging out those half finished projects we’ve all got lying around our Geekdoms, and fetching them along for a Show ‘n’ Tell. As ever, there will be party fun and games, an opportunity to kick back from all the contributing that we do, so join us and enjoy good company and laughter.
Our last party Kubuntu party 3 proved to be another success, with further improvement and refinement upon the previous Kubuntu Party.
New to the Kubuntu Party scene? Fear not my intrepid guests, new friendships are merely but a few clicks away. Check out our previous story trail.
The lessons learned from party 2 had been implemented in party 3. Our main focus is on our guests and their topics of conversation. We didn’t try to incorporate too many things, but simply just let things flow and develop un-conference style. We kept to our plan of closing the party at 22:00 UTC, with a 30 minute over-run to allow people to finish up. This worked really well and the feedback from the guests was really positive. For the next party we will tighten this over-time further to 15 minutes for close.
We had fun discussing many aspects of computing, including of course lots about Kubuntu. As the party progressed we got into a keyboard geek war, with various gaming keyboards, bluetooth devices, and some amazing back lighting. However, there simply was nothing to compete with the bluetooth Laser projected keyboard and Mouse that Jim produced, it was awesome!
We also had great fun playing with an IRC Controlled Sphero Robot, a project that Rick Timmis has been working on. The party folks got chance to issue various motion and lighting commands to the Sphero spherical robot. Party goers were able to watch the Robot respond via Rick’s webcam in Big Blue Button.
“It was also Awesome seeing that brightly coloured little ball, dashing back and forth at the behest of the party revelers.“
It all got rather surreal when Marius broke out his VR Headset, a sophisticated version of the Google Cardboard. The headset enabled Marius to place one of his many (and I mean bags full) of mobile devices in the headset aperture, and vanish into an immersive 3D world.
What are you waiting for ? Book the party in your diary now.
Friday 17th June 19:00 UTC.
Details of our conference server will be posted to #kubuntu-podcast on irc.freenode.net at 18:30 UTC. Or you can follow us on Google+ Kubuntu Podcast and check in on the events page.
The latest Ubuntu LTS is out, so it’s time for an updated memory usage comparison.
Boots means it will boot to a desktop that you can move the mouse on and is fully loaded. While Browser and Smooth means we can load my website in a reasonable amount of time.
Lubuntu is super efficient
Lubuntu is amazing in how much less memory it can boot in. I believe it is still the only one with ZRam enabled by default, which certainly helps a bit.
I actually did the memory usage for ZRam to the nearest MB for fun.
The 32 bit version boots in 224 MB, and is smooth with Firefox at only 240MB! The 64 bit boots at only 25 MB more (251), but is needs 384 MB to be smooth.
If you are memory limited, change flavors first, 32-bit won’t help that much
Looking just at “Browser and Smooth” because that’s a more clear use-case. There is no significant memory difference between the 32 and 64 bit varients of: Xubuntu, Ubuntu Gnome, Ubuntu (Unity).
Lubuntu, Kubuntu, and Ubuntu Mate do have significant deltas, which let’s explore:
Kubuntu – If you are worried about memory requirements do not use.
Ubuntu Mate – It’s at most a 128MB loss, likely less. (We did that to 128MB accuracy).
Lubuntu 64 bit is smooth at 384MB. 32 bit saves almost 144 MB! If you are severally memory limited 32-bit Lubuntu becomes your only choice.
Hard Memory Limit
The 32-bit hard memory requirement is 224 MB. (Below that is panics)
The 64-bit hard memory requirement is 251 MB. Both of these were tested with Lubuntu.
Check out the 14.04 Post. I used Virt-Manager/KVM instead of Virtualbox for the 16.04 test.
Extras: Testing Notes, Spreadsheet
It’s Episode Thirteen of Season Nine of the Ubuntu Podcast! Alan Pope, Laura Cowen and Martin Wimpress are connected and speaking to your brain.
We’re here again, but one of us is not!
In this week’s show:
We discuss the news.
Linux is the largest software development project on the planet
Google to block Flash on Chrome, only 10 websites exempt
Qualcomm flaw puts millions of Android devices at risk
After years of hard work, ZFS for Linux finally lands in Debian GNU/Linux repos
Yubico has replaced all open-source components with proprietary closed-source code in Yubikey 4s
Firefox lets users try new features with ‘Test Pilot’
Amazon targets YouTube with new online video posting service
We discuss the community news:
Ubuntu France LoCo rocked out at the music Festival Papillons de Nuit
Byobu Hollywood Melodrama and Ubuntu featured on NBCNews!
Aaron Honeycutt talks about his experience using Ubuntu Touch on his Nexus 7 2013 WiFi Edition.
Ubuntu Touch OTA-12 will be more about fixes than features For more info, see Launchpad.
And some events:
SouthEast LinuxFest (SELF) – 10-12 June – Charlotte, NC, US
Red Hat Summit – 28 June – 1 July – San Francisco, CA, US
Texas Linux Fest – 8-9 July – Austin, TX, US
LinuxCon Japan – 13-15 July – Tokyo, Japan
We discuss using Android Pay in the UK to buy some crisps.
This weeks cover image was made by us.
That’s all for this week! If there’s a topic you’d like us to discuss, or you have any feedback on previous shows, please send your comments and suggestions to firstname.lastname@example.org or Tweet us or Comment on our Facebook page or comment on our Google+ page or comment on our sub-Reddit.
Join us on IRC in #ubuntu-podcast on Freenode
Yes, like Jos, Lukas and Björn I (mostly known for my work on and maintenance of the LDAP backend) am leaving ownCloud Inc. Actually, the 20th of May was already my last day.
Flashback. In late 2011, Frank asked me whether I would like to join a new company that would back the ownCloud project. Back then, I was already contributing to the open source project. Being a passionate Linux user and an active member of the Kubuntu community, I got an amazing opportunity to work on free software on a full time basis. Eventually, my first day at ownCloud Inc. was in February 2012.
Belonging to Generation Y, I value most in work an opportunity to support the common good and make something sustainable. With ownCloud it is possible to give important benefit back to the world. With ownCloud being
an important component of a mesh network in Somaliland, Somalia
in use (to my knowledge) by some local asylum-related NGOs
also in use by a variety of small businesses
a solution favoured by the Free Software Foundation Europe against proprietary services
we empower everyone to be an owner and stay in control of their data and concentrate on their main goals.
These 4 years with ownCloud Inc. were a great ride for me. Working in a distributed and international setup is not always an easy job, but nevertheless exciting and an extraordinarily fascinating one. I came to be a far better software developer, met fabulous people (with many of whom I became good friends), and together we made the ownCloud project and community grow vastly. Also, it's simply great to work side by side with people like Danimo, Jos and Frank who I met and befriended long before there was any bit of ownCloud.
Ka works and the world moves on– Wolves of the Calla, Stephen King
I decided to quit because not everything in the ownCloud Inc. company world evolved as I imagined. It's not necessarily bad, only it became clear that for me it is time for a change. No regrets, I have had a splendid time at ownCloud Inc. and am proud to have it as a part of my life and identity.
Leaving the job does not mean leaving the community. I will still be around and help out, for example mentoring the LDAP Provider enhancement. My owncloud.com email address is no longer valid, please see the imprint for my personal one in case you want to contact me there.
Thank you, dear colleagues, and all the best!
My Plasma Wayland ISOs are building nicely fresh each day. I asked Betty the fuzzy Guinea Pig to gave one a try today and there’s still obvious bugs like no text on task bar and the blue window bars are back but she’s generally impressed at how this is likely to be a good replacement for X in the near future.
Download 1.0GB ISO
Betty the Fuzzpig Tries Plasma Wayland
There was a time when mobile applications were geared towards entertainment to help pass the time. Mobile apps have come a long way over the past few years with apps that can change your life for the better. Apps can help improve your health, some can help you manage your money, and there are some that can help you manage your business more efficiently. Mobile apps are much more than just silly games, so take a look at some things apps can help you with in your life.
If you run your own business, you know things can be overwhelming sometimes. There are many great mobile apps designed to make running your business easier. Some business related apps can assist with:
Offering easy-to-use design options
Collecting activity reports
Scheduling email campaigns
Storing and sharing presentations
Scanning and uploading business card details
Assigning assignments to staff
Time tracking for employees
If you need a well-designed mobile app for your business, choose a company such as Y media Labs that will deliver a quality product.
If you’ve ever wondered how well you really sleep at night, there’s an app for that. With a sleep tracker app, you’ll be able to get a better idea about your sleeping habits, how well you sleep, alertness levels, and monitoring the impact of sleep loss. Some sleep trackers have features such as motion-tracking, smart alarm, and a sound recorder that detects snoring and sleep talking. A lot of sleep tracker apps connect to your activity tracker and will also count your steps and show you how active you are during the day.
Some people would like to be more organized with their money, but sometimes that’s easier said then done. Money management apps assist with keeping a balanced budget and staying on top of your finances. If you’re looking for the most organization, choose one that will sync all of your accounts including your 401k, bank account, mutual funds, and IRA. With these apps, you can get account totals, budget your money, transactions, and expenses.
Most people want to become more active to live a healthy life and there are numerous apps to assist with helping you get back on track. Fitness apps are great for people that need a little extra encouragement to walk extra steps or find easy-to-do workouts they can do at home. Certain apps allow you to log everything you eat during the day and calculate the amount of calories you’ve consumed. Other apps have very short workouts you can do each day that will easily fit into your schedule. Pair your favorite fitness apps with your activity tracker for a more detailed report of your overall fitness.
Navigation apps are great because you won’t be required to have a separate GPS system in your car anymore. GPS apps aren’t just good for driving: they also provide great assistance on hikes as well. GPS apps will give you directions, show you maps all over the world, and allow you to customize places you frequent often so you can access them quickly.
Business can ho a long way by staying on top of modern technology and popular apps. You can also organize your life with popular apps and determine the best ways to get healthier. Apps are more than just games these days, so browse your app store and find the best ones that fit into your lifestyle.
The post Mobile Apps: Not Just for Games Anymore appeared first on deshack.
I've been a bit quiet online lately. A few weeks back, my father had a stroke, from which he seemed to at least partly recover. However, last week we found that he could not recover, and was in fact dying.He died 12 May 2016. I wrote about that a bit here: http://genweblog.blogspot.com/2016/05/rest-in-peace-ted-cowan-1926-2016.html . I was holding his hand as he passed, as was my sister. We're both happy that he is free of his pain, but are both grieving that both our parents are now dead.Grieving is strange. Sometimes life seems normal, but sometimes not. So I will help out when I have the energy and interest, and at other times, withdraw and recharge. Talking about this is fine in open channels or privately, if you want. This is not a sensitive subject; we'll all die in the end after all.
Need some Ubuntu decoration? Unixstickers, the largest e-commerce for Free Software and Open Source stickers and merchandise have partnered with Canonical, to start offering Ubuntu stickers!
They are currently among the very few authorized sellers of Ubuntu swag in the world.
Throughout June, Unixstickers are offering Full Circle readers a 15% discount by using the code UBUNTU15
FULL DISCLAIMER: We make nothing from this. We’re just passing the offer along.
OpenStack is the leading open cloud platform, and Ubuntu is the world’s most popular operating system for OpenStack. Over the past two years we have created a tool that allows users to build an Ubuntu OpenStack cloud on their own hardware in a few simple steps: Autopilot.
This post covers the design process we followed on our journey from alpha to beta to release.
Alpha release: getting the basics right
We started by mapping out a basic Autopilot journey based on stakeholder requirements and designed a first cut of all the necessary steps to build a cloud:
Choose the cloud configuration from a range of OpenStack options
Select the hardware the cloud should be built on
View deployment status while the cloud is being built
Monitor the status and usage of the cloud
After the initial design phase Autopilot was developed and released as an alpha and a beta. This means that for over a year, there was a product to play around with, test and improve before it was made generally available.
Beta release: feedback and improvements
Providing a better overview: increased clarity in the dashboard
Almost immediately after the engineering team started building our new designs, we discovered that we needed to display an additional set of data on the storage graphs. On top of that, some guerilla testing sessions with Canonical engineers brought to light that the CPU and the storage graphs were easily misinterpreted.
After some more competitive research and exploratory sketching, we decided to merge the graphs for each section by putting the utilisation on a vertical axis and the time on the horizontal axis. This seemed to improve the experience for our engineers, but we also wanted to validate with users in usability testing, so we tested the designs with eight participants that were potential Autopilot users. From this testing we learned to include more information on the axes and to include detailed information on hover.
The current graphs are quite an evolution compared to what we started with:
Setting users up for success: information and help before the process begins
Before a user gets to the Autopilot wizard, they have to configure their hardware, install an application called MAAS to register machines and install Landscape to get access to Autopilot. A third tool called Juju is installed to help Autopilot behind the scenes.
All these bits of software work together to allow users to build their clouds; however, they are all developed as stand-alone products by different teams. This means that during the initial design phase, it was a challenge to map out the entire journey and get a good idea of how the different components work together.
Only when the Autopilot beta was released, was it finally possible for us to find some hardware and go through the entire journey ourselves, step by step. This really helped us to identify common roadblocks and points in the journey where more documentation or in-app explanation was required.
Increasing transparency of the process: helping users anticipate what they need and when configuration is complete
Following our walk-through, we identified a number of points in the Autopilot journey where contextual help was required. In collaboration with the engineering team we gathered definitions of technical concepts, technical requirement, and system restrictions.
Based on this info, we made adjustments to the UI. We designed a landing page with a checklist and introduction copy, and we added headings, help text, and tooltips to the installation and dashboard page. We also included a summary panel on the configuration page, to guide users through the journey and provide instant feedback.
GA release: getting Autopilot ready for the general public
Perhaps the most rewarding type of feedback we gathered from the beta release — our early customers liked Autopilot but wanted more features. From the first designs Autopilot has aimed to help users quickly set up a test cloud. But to use Autopilot to build a production cloud, additional features were required.
Testing without the hardware: try Autopilot on VMware
One of the biggest improvements for GA release was making it easy to try Autopilot, even for people that don’t have enough spare hardware to build a cloud. Our solution: try Autopilot using VMware!
Supporting customisation: user-defined roles for selected hardware
In the alpha version a user could already select nodes, but in most enterprises users want more flexibility. Often there are different types of hardware for different roles in the cloud, so users don’t always want to automatically distribute all the OpenStack services over all the machines. We designed the ability to choose specific roles like storage or compute for machines, to allow users to make the most of their hardware.
Allowing users more control: a scalable cloud on monitored hardware
The first feature we added was the ability to add hardware to the cloud. This makes it possible to grow a small test cloud into a production sized solution. We also added the ability to integrate the cloud with Nagios, a common monitoring tool. This means if something happens on any of the cloud hardware, users would receive a notification through their existing monitoring system.
The benefits of early release
This month we are celebrating another release of OpenStack Autopilot. In the two years since we started designing Autopilot, we have been able to add many improvements and it has been a great experience for us as designers to contribute to a maturing product.
We will continue to iterate and refine the features that are launched and we’re currently mapping the roadmap for the months ahead. Our goal remains for Autopilot to be a tool for users to maintain and upgrade an enterprise grade cloud that can be at the core of their operations.
Like many Ubuntu users, I drooled all over getting a System 76 laptop or desktop. They are built by Ubuntu users for Ubuntu users. I finally decided to buy one a few weeks ago.
Two Fridays ago, I ordered a System 76 Lemur and it finally came yesterday just 15 minutes before I had to go to work. I only had time to photograph the unboxing and put it to charge.
The specs on this Lemur are:
A few upgrades from the base.
The unopened box. I love the fact that it says, “Unleash your potential”. And about the sharp objects to open the packaging is true, you only need to use a sharp object to get the box itself open.
The packaging See I mean?
The box I simply love how they designed in the inside. It makes me want to create!
Below are some of the images from the unboxing and all the images are here:
Initial Use Review
Just before I went to sleep, I started it up. The first time installation is simpler because Ubuntu is already installed and the laptop only needs to know what you need to have it they way you want. I also ran my restore script from the backup that I created from my desktop. I allowed it to run when I was sleeping.
Today when I logged in, I found an error in my script, fixed it, committed it, and pushed it on GitHub. Because of this error, I had to install the needed programs, but that was no biggie. I haven’t used so much yet (I’m writing this on my desktop) but it runs very smoothly and quietly.
Keyboard and Trackpad
I like the keyboard, it’s sized perfectly for the laptop and my hands. Typing on it is very smooth. The only bad thing is that it is not backlit.
Using the trackpad is also smooth and it’s prefect fit. I also like that there is buttons for left and right click.
The fans are very, very quiet. No other comment needed.
It’s weight is 3 pounds, but I have no comment. I love the finish on the laptop. It’s a gray finish and I thought it was brighter. I also love how the System 76 logo is raised a bit and centered. The only problem that I have is that (to me) there is a bit too much flex on the top.
Hopefully in a week, I will have a post after one week of usage in order for me to talk about how the laptop runs.
With each moment that passes the technology industry becomes bigger and more integral to the fabric of daily life; there’s not a sector that hasn’t benefitted from it. Most people rely on technology every time they require entertainment, or to answer a question. One aspect of the tech industry that many could do without, though, is its apparent gender bias, and while there are more women undertaking roles than in previous years, there is still a long way to go before quotas are fulfilled, and women feel as though they’re truly a part of the tech sector.
The issue of diversity in the tech industry
There’s little getting around it; the tech industry is still frequently considered a male dominated sector, perhaps not helped by the fact that less women today then 20 years ago are choosing to join the profession, and some 56% are choosing to leave the profession within ten years.
While it’s certainly true that there are still a great many women choosing, and gaining, high-powered positions ranking above their male counterparts, many consider their appointment to be too little, too late. So, what is it that’s putting women off from applying for positions within the tech industry? There are certainly more than enough women that are qualified to undertake such roles, after all. Perhaps the biggest factor discouraging women from applying for jobs within the technology industry is its male dominated image; gender stereotypes have an incredible power over young girls choosing to study certain subjects, and they’re often put off so-called male courses such as math, science, and engineering. In addition, many women already believe that the industry is a sexist one, with 52% claiming that they’re aware of the gender pay-gap, and 73% discouraged from working in a typically sexist environment. These statistics are staggering, but the stereotype needn’t exist at all.
Regardless of the reasons why women are put off working within the technology industry one thing is for sure; the tech sector is quickly becoming the world’s top industry, with numerous careers branching out from its humble beginnings. Diversity is, and should be, a major concern for the industry moving forward. Is it possible to attract more women to work with technology?
An asset to the industry: Attracting women to the tech sector
While women may not be at the fore of the technology sector there are some incredibly strong and talented females heading the field, and inspiring young women to follow their dreams regardless of the odds seemingly stacked against them. Ginni Rometty, the CEO of IBM, for example, is an incredible role model for young girls hoping to break into formation technology and engineering, while the co-founder and chair of technology giant HTC is a woman, named Cher Wang. The truth is that women bring a whole range of assets to the technology industry, including the assurance of future talent, diversity and empowerment, and skills that may otherwise be overlooked. Technology impacts everybody, so surely it makes sense for women to hold the same power as men within the industry?
Much is being done to change the ways in which the technology sector operates, with improved education and training for employees, championed role models, the public challenging of negative stereotypes, and better mentoring opportunities being offered by a number of companies; this ensures that younger women, and school-aged girls, are encouraged into the industry from their youth, and inspired to do everything they can to achieve success. Indeed, there are a great many organizations currently raising concerns surrounding diversity in the tech industry, including Diversity Inc., which champions the rights of women and minority groups, as wel as celebrating their importance in a variety of sectors. CEO Luke Visconti is often quick to highlight industry failings and successness in his column, ‘Ask the White Guy’, while carefully unpicking arguments against the inclusion of certain groups in the workplace, and championing those inspirational few. Now is also the time to take note of the big companies pledging to make changes, including social media platform Pinterest, which very publically addressed its commitment to minorities, and pledged to increase its numbers of female and underrepresented employees during 2016. Such influence and dedication to change is difficult to ignore, but will it make any difference?
WHile much is being done to address the issue of gender-bias in the technology industry it is clear that there’s still a long way to go; women are still too easily discouraged from choosing ‘male dominated’ subjects that lead into such careers, and are under-supported in the roles they do manage to claim. Thanks to the influence of the women currently succeeding in the field, as well as organizations such as Diversity Inc., though, it is hoped that more women will pick up the mantle and make a name for themselves in the sector; their inclusion is long overdue, and most welcome.
The post Why more women are needed in the tech industry appeared first on deshack.
In the recent days there was lots of discussion about the versioning of the Ubuntu UI Toolkit. Finally we thought that the topic deserves a dedicated blog post to clarify the situation and resolve some misunderstandings.
Let’s start with the background story.
The UITK releases, before we opened the 1.3 branch for development, was mainly targeting touch devices and their main objective was to offer more or less a complete API set for mobile application development. The versions prior to 1.3 were working on the desktop too, but they were clearly suboptimal for those use cases because for example they were missing mouse and keyboard capabilities
With the 1.3 development branch we set on a single goal. With this release the UITK will offer a feature complete API set for devices of all form factors with all kinds of capabilities. It means that applications built for the 1.3 UITK will work on a touchscreen device with a small display just as on a large screen with mouse and keyboard. It was a very ambitious plan, but absolutely realistic.
We have decided that we follow the "release early and release often" principle so developers will have time to adapt their applications to the new APIs. At the same time we promised that whatever API we release will be supported for at least one minor revision and we will follow a strict and developer friendly deprecation process if needed.
It means that even if the source code of the 1.3 UITK is not frozen, all APIs released in it are stable and safe to use.
So far we did keep our promise. There was not a single application in the store or in the archive that suffered functional regression due to an intentional API break in the UITK. True, UITK has bugs. True, one can argue about if changing the color palette classifies to be an API change or not. Not to mention the awkward situation when an application takes advantage of a bug in the UITK and loses that advantage when the bug gets fixed. Also we have seen broken applications because they were using private APIs and properties.
It is absolutely true that using a frozen API set is the safest for application developers. No doubt about it and I do hear the opinions that some developers wish to see a fully frozen 1.3 UITK. We do wish the same.
Now, let us visit this idea and check a bit around. I do promise that folding out the big picture will help everyoneunderstand why the UITK is developed in the way it is.
So, let us say we freeze the 1.3 UITK today. In that case we need to open the 1.4 branch plus we would certainly open a Labs space. Before going any further let me list what kind of changes we do in the UITK codebase:
Critical bug fixes. Right, I am sure that nobody argues the fact that once we found or reported a critical bug we have to push a fix to the supported releases as soon as possible. At this very moment we have a good number of open bug reports. About 80% of the merged branches and patches to the UITK code are bug fixes. With every OTA release we push out 10-20 critical bug fixes. It means that each bugfix needs to target both the frozen and the development branch, plus the labs space. From the point of bug fixes it is important that the supported branches of the UITK do not diverge too much. One may say 1.3 should be frozen, so no bug fixes should go there, eventually some showstoppers. However we have way too many of those fixes which we must land in 1.3 as well. Fragmenting the UITK and so the platform at this early stage might fire back later.
Feature gaps for convergence. As we have stated many times, the convergence features are not yet completely implemented in the UITK. We do wish they were, but sadly they are not. It means that almost every day we push something to the UITK codebase that makes that feature gap smaller. In case we freeze the 1.3 UITK we can push these convergence features only to the 1.4 and the labs space. That would mean that all core applications would need to migrate to the 1.4 UITK because they are the primary consumers of the convergence feature.
UITK uses dynamic styling of components. The styles are loaded from a specified theme matching the version of the UITK module the component is imported from. This is necessary because themes implement UX including behavior and looks, so just like functions in the API developers may rely on theming when designing their apps, or even adding custom components. We are using the property cache to detect the version of the module. As we are not planning any API additions to StyledItem, moving to 1.4 would require us to declare a dummy property just to be able to detect that the component is imported from the 1.4 version. Introducing a property just to be able to differentiate doesn’t sound really professional. Yes, the version could be set in the component itself, but that would immediately break the symlink idea (second time) and beside that, noone guarantees that the version will be set prior to the style document name, so a dual-style loading can be eliminated. We had this API in the first version of the sub-theming, but was removed, and perhaps it was the only API break we did in 1.3 so far.
Unit tests are also affected. They need to be duplicated at the least when components in 1.4 diverge in behavior and features - but even bugs in superclass A altered in 1.4 may affect component B which is not altered and still fail test cases. On the other hand Autopilot is not so flexible. While the CPOs (Custom Proxy Objects, the classes that represent QML components in Python test cases) basically do not care about the import versions, they do have problems with the API differences, and it is not so easy doing differentiation for the same component to detect which API can be used in what context. We’ve been discussing to try to move as many tests as we can to QTest (unit tests), however there are still tons of apps using Autopilot, and we have to provide and maintain CPOs for those.
The upcoming Labs space will hold the components and APIs that we do not promise to be stable and are subject to change even in one minor version. We need this space to experiment with features and ideas that would not be possible in a stable branch.
If we look at this picture we will see immediately that the further we go with closing the feature gaps the more we diverge from the codebase of the frozen 1.3. Note that code change does not mean API change! We are committed to stable APIs not to stable code. Freezing code is a luxurious privilege of very mature products. Implementing new features and fixing critical bugs in two different branches would mean that we need to fork the UITK. And that itself would bring issues which have not been seen by many. A good example for this is the recently discovered incompatibility issue between the old style header and the refactored (to be implemented in C++) AdaptivePageLayout. To gain the performance improvements in 1.3 it’s necessary to change the component completely. Furthermore if only 1.4 started off with a rewritten AdaptivePageLayout fixing bugs would consume considerable time in two entirely different codebases at that point.
It is important to note that the UITK comes in a single package in a single library. Forking the UITK package is clearly not an option. The applications do not have control over their dependencies. Also creating multiple libraries for different versions is not an option either. Providing the UITK in a single plugin has some consequences. Many of the developers asked why there are no more frequent minor version bumps. The answer is simple. As long as all the versions come in a single plugin, each and every minor release will increase the memory consumption of the UITK. Bumping the UITK version 3-4 times a year would end up in a 10-12 times bigger memory footprint in just two years. We do not want that. And most probably when we “release” 1.4, we will need features from Qt 5.6, which means we need to bump imports in all our QML documents to 2.6. So it is a nice theory but it is not a working one.
To summarize the whole story, we are where we are for good reason. The way the UITK is versioned, packaged and provided to the application developers is not accidental. At the same time we do admit that after measuring the costs and benefits of different paths, we had to make compromises. The present so called rolling 1.3 release is safe to use, the APIs provided by the UITK are all stable and supported. But as it is still evolving and improving it is a good idea to follow the news and announcements of the SDK developer team. We are available pretty much 24/7 on the #ubuntu-app-devel Freenode channel, on email@example.com mailing list, on Telegram and on all commonly used public platforms. We are happy to listen to you and answer your questions.