down with markup

<i>good</i>

Markup languages are useful for adding structure to text, such as with XML. Unfortunately, it's just too much to add a bunch of opening and closing tags for every little thing. Especially for text formatting. HTML 1 already taught us that.

*better*

So people have come up with a handy dandy little way to deal with this without having to resort to those atrocious WYSWIG editors for the forums, blogs, and wikis that they visit. They're called lightweight markup languages. All of the languages of this general type very closely resemble Setext which predates HTML. The thing that makes it neat is that it looks like you'd expect.

it's all about the data (text)

Though not the first, one of the most popular, Markdown, is used by the likes of Github, Stack Exchange, OpenStreetMap, reddit, SourceForge, and Coursera forums. While many lightweight markup languages exist for very specific purposes, like documenting programs, Markdown was created to write content and look good doing it. HTML sucks because of how difficult and terrible looking it is to include some simple formatted text.

character confusion

I use Markdown a lot. I use it for this blog. when I look at my text, it makes sense. It looks how it should. I write notes in it. I'm used to it. When I have to switch to some other markup language, it's not easy. It's not easy because, unlike HTML and other heavyweight markup languages, the lightweight markup languages use syntactic sugar. It's concise and pretty. That's why we like them. But it's not intuitive. This is a problem.

~+worst+~

This is especially a problem with wikis. There are so many different wiki markups, it's not even funny. Wikipedia has MediaWiki and the Ubuntu Wiki uses MoinMoin, to name a couple. The worst offender is the likes of trac's wiki markup which is a hybrid of a bunch of different wiki formatting tools.

not eating its own dog food

But let me get back to MoinMoin. I have a particular gripe with it. Built in Python, you would think that they would use reStructuredText, the tool built by the Python community for technical documentation, as the preferred markup language. Nope. They have their own weird thing which deviates from every other thing out there. Sure, they support reST, but they don't make it a standard. I once asked one of their developers why they have their own markup and he said that's just the way it's always been.

moin moin is African, but not Ubuntu

My major issue is that I have to use it. As someone who greatly values documentation, I am constantly adding and revising pages on the Ubuntu Wiki. I cannot tell you how many times I have the consult the documentation to remind me how MoinMoin's syntax is particularly sweetened.

There is a Markdown parser for MoinMoin but it includes the original specification's ability to include HTML, which makes it unsuitable for public wikis. Additionally, it can be used in addition to the MoinMoin markup. This makes it an unsustainable solution, since folks used to MoinMoin markup won't know what to do with the Markdown bits and vice versa.

Ubuntu has a history of building upon the shoulders of giants. Sure, they've had their cases of doing their own thing, but only in an attempt to make something better. How is MoinMoin markup making the world of lightweight markup languages better?

[Mark(down]falls)

There are some edge cases with Markdown that should be fixed. There are also some bigger issues, like no tables otuside of HTML. This is pretty common in about every other markup language. Given that it's supposed to take after plain text emails, it's surprising there isn't something like:

|| Thing || Other Thing ||
||=======||=============||
||   1   ||      2      ||
||   3   ||      4      ||

Have we not composed similar things in emails? It's a serious problem.

Comments are also missing which can be valuable thing for wikis where multiple people are working on the code, if you will.

Anchors are missing, too. They're a good thing to have when you want to reference a particular part of another document. Again, on wikis, very valuable.

We could probably fix this, but there is an enormous problem Markdown has: no specification.

fly united

Still, there is a reason why the IETF is considering making a text/markdown media type. It sees a lot of use across the web. There's no reason why it can't be used for wikis and MarkdownWiki agrees.

The unfortunate thing is that Markdown itself is without its standards. Markdown is considered to be abandonware and the various offshoots of it have gone all sorts of different directions. Babelmark 2 exists to illustrate the differences between implemnentations. It's really ridiculous. Luckily, the CommonMark project exists to make a standard. It's not there yet, but I look forward to it and its adoption by the various writing tools out there on the web.

There is an attempt to standardize wiki markup called Creole and though many wiki engines have included parts of it, it's still not necessarily the default. Which is to say there's no standard. Nothing is standard unless people accept it it.

That being said, I urge all of you to carefully consider your preferred markup language and for whatever it has that Markdown does not, make sure that piece is compatible with CommonMark and we'll can finally go sugar-free on our web writing.

Read and Post Comments

happy Haul-a-Days

Christmas tree hauling on a Haul-a-Day

Bikes are a lot like open source.

With public source code and development processes, open source software puts the power of your software into your own hands. Additionally, it creates huge communities of support, testing, and development. Once you discover the beauty of open source, you find yourself wanting to use it everywhere. It's gotten to the point with me that I've even sought out open source hardware. Eventually it gets to the point, I think, where you want everything to be open source.

Bikes put the power of transportation into your own hands. Sure, bikes are fun and good for your health, but their mechanical simplicity makes them approachable to everyone. Additionally, their remarkable efficiency and utility make them appropriate for all sorts of things beyond recreation. Once you've experienced the freedom and joy of riding to the grocery store, you want to use your bike everywhere.

Thankfully now, I truly can. Thanks to Bike Friday's new Haul-a-Day cargo bike, I can bring nearly anything with my bike. With a standard cargo capacity of 200 pounds (upgradable, too!), a mere 32 pounds, and adjustability for everyone, it's practical for nearly every situation. Did I mention it's short enough to fit on a standard bus rack, hanging up in a bike train car, and even disassemble to make taking it with you a breeze?

I've hauled a harvest of quince to share (that's no small feat, I might add!). I've taken a huge load of unwanted electronics to the local recycling center. I've taxied my daughter and all of her stuff and my stuff to school. I've carried my spare bike home with me. Most interestingly, because it is so lightweight, I mostly use it as a normal bike.

Other people in the community of users have used theirs most for hauling kids (it's a nice alternative to a mini-van!), but there have also been such unique things as generating electricity and showing movies. In fact, those very ideas can now be yours with the Haul-a-Day Kickstarter campaign, along with everything from handmade cards to t-shirts.

We have turned to crowdfunding as a way to integrate the community into the development process and to allow for greater capacity to really stimulate major production. We manufacture in the domestic United States and that is great for our local economy but is not without its challenges. This boost will allow us to really propel the project forward. We met our goal a long time ago, but we're very close to meeting our 3rd stretch goal which will allow us to finish some oft-requested developments, including a trailer bike attachment and an electric assist option. Please contribute anything you can, even $1, as it's going to a good cause!

We don't necessarily have the bike design open sourced, but I believe that Bike Friday is a lot like any other open source community. It's full of users more than happy to volunteer their time to help others. It has an inviting and passionate group of project contributors (even though they all may work for the parent dcompany). It doesn't hide behind some corporate image, but is a real workplace of real people, where you can talk to someone, and where humble hoensty and transparency is a norm. Finally, it listens to its users, who often make their own modifications and experiments and document them for us.

We are also a company that values open source software, using FreeBSD and Ubuntu servers and Kubuntu on most of our workstations. Thunderbird, Firefox, and LibreOffice are all common applications we use on a daily basis.

Indeed, we know that open source can save the world. Bikes can, too. Now what if we put two and two together? What about an open source hardware electric bike kit? Or an open source mobile application that keeps track of your cadence? I'm shocked this isn't out there yet.

Actually, there are a number of open source bike things out there (to name a few):

What's your open source bike idea?

Read and Post Comments

unicorns und Unicode

Certainly you've all noticed by now that Ubuntu Utopic Unicorn has been out for a while. If you haven't it doesn't have a ton of exciting changes relative to the previous release, but it's got some nice little fixes to add on to an otherwise stellar release. It's also not so exciting because there's a lot of effort towards making big changes. Two examples that come to mind are Unity 8 for Ubuntu, Plasma 5 for Kubuntu and LXQt for Lubuntu, to mention a few.

I'm happy to announce that the neat little origami unicorn logo that Canonical came up with for the release (like in Blade Runner) is now available in t-shirt form for both men and women.

It may be interesting to know that despite often referring to a rare item, unicorns are not exactly so special in the open source world. For example, there's Unicorn, the Ruby HTTP server or its port, Green Unicorn aka gunicorn. Or there's the validating Unicorn of the W3C. There's even the unique UDP flooding/DoS utility, UDP Unicorn.

This comparison to rarity has found its way into some more sardonic circles of the open source world. For example there's the Unicorn Law—that if you are a woman in open source, you will eventually give a talk about being a woman in open source. Or consider the Unicorn Model of Open Source—that hoardes of developers and testers are constantly working on open source and problems will be fixed nearly immediately.

One thing that is soon not to be rare on your favorite device is an actual unicorn. Emoji, that is. According to the recent report on Unicode Emoji, there should be a Unicorn Face by the middle of next year in Unicode 8.

Unicode is the "universal character set" that allows the world's languages and many non-textual glyphs to be represented. For example, without Unicode, I'd have to use three periods (...) instead of the actual ellipsis character (…). Or if I wanted to indicate a change in text flow with more strength than a comma but but less than a period, I might use an em dash (—) rather than two en dashes (--). In a more complex example, I might be taking a class on logic and need to use symbols like therefore (∴), not (¬), if and only if (⇔), xor (⊕), for any (∀), etc. For example, I can say there exists a number in the set of natural numbers where the number is even like so: ∃ n ∈ ℕ: n is even. This is simply not possible without Unicode.

Similarly, other languages can be represented. How could one better greet Laotians than through their own language? Without Unicode I wouldn't be able to even say ສະບາຍດີ. Or maybe you've gotten into an altercation in Iceland? Það var misskilningur, of course. Certainly, there's no better way to greet someone in Arabic than السلام عليكم.

But text is not the only way we communicate with one another. In fact, the use of graphical glyphs is so common in Japan, it inspired the Unicode Consortium to inclulde them into the character set. Now you can even reference the Philip K. Dick book that inspired Blade Runner entirely with emoji: 📱💭⚡🐑❓.

It's gone as far as even being able to present diversity through Unicode!

That being said, there's a lot of work to be done when it comes to missing glyphs in fonts. If you're interested in font design, I encourage you to check out Design With FontForge for everything you need to know about font design, as well as the open source tool you need to do it in Linux. Once you've got that figured out, you can start by contributing to existing fonts on the Open Font Library.

Speaking of fonts, the one called Ubuntu has pretty darn good Unicode support, but it is not exhaustive as they might suggest. I recommend the Adobe open source fonts, in particular Source Sans Pro, which is employed here. For the really bleeding edge emoji, I use EmojiSymbols, much to my chagrin, as it comes with rather restrictive licensing. There's Phantom Open Emoji but I struggle to call it open and it's not complete, either. If someone knows of another solution, please let me know!

Now if only there was a "heaven" glyph…

Read and Post Comments

learn anything linux

If there's anything I learned from hack.summit() (more on that soon), it's that we need more mentorship opportunities. The Ubuntu community informally offers mentorship opportunities, but with the loss of the Ubuntu Beginners Team, the amount of mentorship, I believe, has declined. Without a formal and inviting place, I think a lot of people are left to kind of figure it out on their own. With so many documents being written to a more higher level of user, I think we really lose potential contributors.

With the goal of having Linux users also be Linux contributors, a band of friends and I (mostly from the Lubuntu Team) have put together a new project we call Linux Padawan. You might remember that padawans were apprentices to the Jedi Masters in Star Wars. So we seek to unite masters with padawans to be mentored in their learning and contributors to their respective community.

Note that wording. Linux Padawan is distro-agnostic. There are certainly many of us who are from various parts of the Ubuntu community, but not all of us are. Additionally, we don't want to shut the door on people who are not or may not be interested in joining the Ubuntu community. Of course, we'll continue to invite them in. ☺

I've set myself up there with the following areas of expertise: testing & bug squashing, community, programming, Lubuntu, BSD (yes, we're even going to support BSD!). If you need mentoring on any of these, please let me know.

I really want to focus my efforts on programming, though. I'm not the world's greatest programmer (yet), but I know enough that I can help foster people to become programmers. hack.summit() focused on how we need mentorship in programming. I couldn't agree more. Learning how to program is relatively easy. Taking that to the next level and actually making a contribution is a whole different story.

To that end, over the past couple of days, I have developed a fairly general introduction to the subject, with plenty of links. Please take a look at that here and let me know if you know of any other resources that can be added.

Most of all, I encourage you to consider learning programming. It's not as scary as it seems. Additionally, learning some of the tools and processes that programmers use can help you to successfully contribute to things like documentation. An exmaple is the Ubuntu Server Guide which is "programmed" in XML and whose development happens on Launchpad.

I guess I'm taking this a little farther than the Hour of Code which happens next week. I don't just want to contribute an hour to get kids into programming. Instead, I'd like to donate whatever time I need to help everyone find the resources they need to contribute code to open source projects. How can you refuse that offer?

Read and Post Comments

where Mailman and Launchpad memberships meet

Around the time of OSCON this year, it came to my attention (thanks belkinsa!) that Ubuntu Oregon was in need of leadership. They were one of many Local Communities (or to adapt the more common parlance, LoCo) around the world seeking to spread the word of Ubuntu on a local scale. I didn't even know they existed in Oregon or otherwise, so I naturally jumped at the opportunity.

There were some challenges, many of which I discussed at our Ubuntu Online Summit (UOS) session, but I feel like we've got some good momentum going at this point. I think that being the only LoCo worldwide to have a UOS session helped quite a bit.

Much thanks is due to the LoCo Council who have been very friendly and encouraging. They even recently accepted our re-verification which, like Ubuntu Membership, is a recognition of sustained contribution.

After going through the process, it became apparent to me that metrics are good to have. Launchpad provided easy tools to figure out membership numbers and a script existed to use its API to cross reference group membership with Ubuntu Membership. Additionally, Launchpad mailing lists allowed one to easiliy figure out how many of its members were on the list.

However, using Launchpad lists is pretty darn deprecated. Instead, Ubuntu hosts its own series of lists, all using the ever-popular GNU Mailman. A much more full-featured set of tools exists for handling your mailing list this way, so it's a good thing. Additionally, it allows non-members to subscribe, which is not a bad thing.

So this leaves us with one problem: how do you equate Mailman membership to Launchpad membership? Well, your answer can be found in the mailgroupxref repo I created in the ubuntu-locoteams project (which is technically a pseudo-project, but it seemed the most fitting place). It uses a script by Mark Sapiro (included in the repo for your convenience) that can get Mailman subscriber lists and the rest of the code builds upon the aforementioned membership cross referencing script.

It turns out the Launchpad API (in the package python-launchpadlib) is very useful and easy to use. The meat of the code is pretty simple:

from launchpadlib.launchpad import Launchpad

teamemails = []

# login
lp = Launchpad.login_with('testing', 'staging')

# get the people objects of the team
team = lp.people['ubuntu-us-or']

# iterate through people objects
for member in team.members:
if member.hide_email_addresses is False:
teamemails.append(member.preferred_email_address)

# this function just calls mailman-subscribers.py, so nothing exciting
listemails = get_list_emails(hostname, listname)

for email in teamemails:
if email in listemails:
print email

Some things to note:

  • Technically there is no preferred_email_address attribute. It's actually preferred_email_address_link but that needs to be converted from Unicode and parsed. I wanted to avoid these technicalities to show how easy it is to get information from Launchpad.
  • You can login with anything instead of 'testing', but you will get a request for your personal credentials.
  • 'staging' may be down during periodic maintainence, but you can use 'qastaging' if need be.
  • If you get SSL errors, you might look to see if you installed httplib2 from outside the repos.
  • I'm not a Python wizard. Feel free to offer constructive advice, but don't lambast me for not being 'pythonic.' Someday I'll reach enlightenment.

So what is the end result of this? I found that the feature that allows Launchpad users to hide their email address is a bigger problem than I thought. Even my own email address is hidden I discovered! ☺

I think in the future I may have to look at using the name attribute and searching for it within email addresses. If you guys have any suggestions, patches are welcome. Meanwhile, I hope this is useful for your LoCo and/or Launchpad group.

Read and Post Comments

« Previous Page -- Next Page »