jewelfox: A portrait of a female anthropomorphic fox, with a pink jewelled pendant and a cute overbite. (Default)
[personal profile] jewelfox
GNOME's developer website is shiny and ambitious. There are a variety of "10-minute tutorials" available for each programming language which GNOME supports, which let you do fun activities like create a guitar tuner or messageboard. And a "Beginner's tutorials" section for each language contains useful code samples, which show how to implement many Gtk widgets.

There are a few problems with the existing docs, though.
  1. They're out-of-date. Many, if not all, of the existing 10-minute tutorials for JavaScript are in need of editing. The guitar tuner one even has a terminal command randomly sandwiched inside the text (yelp-check validate *page). More than that, the code is outdated because of how GNOME JavaScript development has advanced in the last couple of years.

  2. They're incomplete. Each 10-minute tutorial does a good job of explaining the basics of one aspect of GNOME development, like using Gstreamer for audio or Libsoup to pull things from the web. But none of them answers the question "Where do I go from here?"

  3. They're disorganized. Shaun McCance explained to me on IRC that the current developer page was a project at a 2010 hackfest, which never got completed. So the pictures of each tutorial don't link to the actual tutorials, and there's no clear starting point.
Tiffany Antopolski has some plans for redesigning the site at this year's OpenHelp hackfest, which I will hopefully be helping with. That should take care of the "disorganized" part. In the meantime, here's my idea for how to fix those first two points:

A complete modern JavaScript tutorial

It will have a clear beginning point, which will assume only that you know the basics of JavaScript programming and using GNOME. From there, it will teach you how to get started with writing for GNOME, and will show you how to build a complete, functional application, step by step.
Sample application: "Persona Creator"

This application lets you create, collect, and organize people's "Personas," or personal profiles. If you've ever played pen-and-paper roleplaying games, think of your profile as like a character sheet for your involvement with GNOME, or with free culture and software in general.

You'll have an avatar icon, a "class" that shows how you contribute, and "attributes" that explain things like what applications or programming languages you use the most. A personal quote and bio will let you tell the world what you're up to, and built-in sharing features will let you send your profile to your instant messaging contacts, publish it to your blog or journal, or create a messageboard signature based on it.

Ideally, this would tie in to the Contacts application somehow. It's not necessary, though, and either way it'll be a fun project that will show people how they can express themselves using code.
Here's a tentative lesson plan:
  1. Hello, GNOME! Explains how we're going to build GNOME applications with JavaScript, and shows you how to get Gedit and Terminal set up for coding.

  2. Your First GNOME Application: Explains the basic boilerplate code that you'll use for each application, and walks you through creating an ApplicationWindow containing a Webkit view with a JavaScript web app inside. This is so people who are used to web programming can have an immediate starting point.

  3. Going Native: A multipart chapter that shows the basics of how to use native GNOME widgets and concepts, including:

    • The application menu

    • Modal dialogs, including MessageDialog and the AboutDialog

    • Buttons, Labels, and other basic UI elements

    • Toolbars with tooltips

    • The TreeView widget and underlying ListStore

  4. Keeping Things Organized: How to use Libgda to store our profiles in an SQLite database.

  5. GNOME Live, Starring You: How to use Gstreamer to capture input from the webcam and microphone, as well as to play back sounds.

  6. Sharing Is Caring: How to use Telepathy to send our profiles to instant messaging contacts (as well as receive theirs), and Libsoup to publish them online.

  7. Making It Shiny: The basics of Clutter animations.

  8. Packing It Up: How to use autotools and create a complete application, along with links to guides that explain the basics of packaging for various distros.

  9. BONUS: How to Write GNOME Shell Extensions: The other thing you can do with JavaScript!

  10. BONUS: Git-ting Involved With GNOME: A very basic overview of sharing your code online and checking out others', with links to more detailed tutorials.
As an appendix, the tutorials would contain the detailed code samples that Tiffany and I have already been working on. Another possible "bonus" tutorial would explain how to use Glade to visually design the UI, with a quick discussion of the pros and cons of doing so.

These new tutorials will be added to the "Beginner's tutorials and samples" page with the code samples, for now, and at OpenHelp we can decide how exactly everything ought to be arranged. I may need to help with modernizing the 10-minute tutorials some, which would also help me to understand the libraries used in them.

Anyway, I'm open to any suggestions, concerns, or offers to help!

About us

~ Fox | Gem | Rei ~

We tell stories, paint minis, collect identity words, and share them all with our readers. If something we write helps you, let us know.

~ She / her ~

Tags

Style Credit

Page generated Oct. 20th, 2017 08:32 am
Powered by Dreamwidth Studios