Builder. Improving GNOME's Developer Story. Christian Hergert builder.pdf

Similar documents
HTML5 Applications Made Easy on Tizen IVI. Brian Jones / Jimmy Huang

GUI Programming with GTK+

Requirements Analysis (big part of Software Engineering) defines. Audience. Purpose. Constraints (e.g. download time limits, browsers to support)

Software. CPU implements "machine code" instructions. --Each machine code instruction is extremely simple. --To run, expanded to about 10 machine code

Blog post on updates yesterday and today:

The goal of this book is to teach you how to use Adobe Integrated

Wednesday. Wednesday, September 17, CS 1251 Page 1

This tool is actually pretty unique and has evolved over the last 7 years. I have been working with Adobe Connect for quite awhile now and one of the

Lesson 4 - Basic Text Formatting

Sample Online Survey Report: Complex Software Application

What is the Best Way for Children to Learn Computer Programming?

Canvas. Walter Goodwater, Software Development Manager

Windows 7 Will Not Install On My Computer Says I'm

Chapter 1 Getting Started

Hello World! Computer Programming for Kids and Other Beginners. Chapter 1. by Warren Sande and Carter Sande. Copyright 2009 Manning Publications

I'm Andy Glover and this is the Java Technical Series of. the developerworks podcasts. My guest is Brian Jakovich. He is the

GRITS AJAX & GWT. Trey Roby. GRITS 5/14/09 Roby - 1

Page Topic 02 Log In to KidKare 02 Using the Navigation Menu 02 Change the Language

MEAP Edition Manning Early Access Program Get Programming with Java Version 1

Out for Shopping-Understanding Linear Data Structures English

Chrome if I want to. What that should do, is have my specifications run against four different instances of Chrome, in parallel.

1. Navigation and menus

Getting Started. Excerpted from Hello World! Computer Programming for Kids and Other Beginners

Software Compare and Contrast

Integrated Software Environment. Part 2

Introducing Extreme Rapid Application Development for Oracle E-Business Suite. A CaoSys White Paper November 2008

Programming in the Real World. Dr. Baldassano Yu s Elite Education

Flatpak and your distribution. Simon McVittie

mismatch between what is maybe possible today and what is going on in many of today's IDEs.

Preview from Notesale.co.uk Page 3 of 79

Windows 10 assigned access chrome

Knative: Building serverless platforms on top of Kubernetes

============================================================================

PYTHON PROGRAMMING FOR BEGINNERS: AN INTRODUCTION TO THE PYTHON COMPUTER LANGUAGE AND COMPUTER PROGRAMMING BY JASON CANNON

In today s video I'm going show you how you can set up your own online business using marketing and affiliate marketing.

News in RSA-RTE 10.1 updated for sprint Mattias Mohlin, July 2017

The Challenges for Software Developers with Modern App Delivery

Lesson 3 Transcript: Part 1 of 2 - Tools & Scripting

With IBM BPM 8.5.5, the features needed to express both BPM solutions and case management oriented solutions comes together in one offering.

Computers for the whole world: An intro to GNOME and free software. Nuritzi Sanchez GNOME Foundation President, Board of Directors

Think like an Elm developer

The 9 Tools That Helped. Collect 30,236 s In 6 Months

Exercise 1: Assigning Responsibilities to Delegates (This was called Proxy in GroupWise)

TRAINING GUIDE. ArcGIS Online and Lucity

MITOCW ocw f99-lec07_300k

Using Quickbooks. This tutorial will show you how to do the things you will need to in Quickbooks.

Introduction to Mobile Development

7 Tips for Raising The Quality Bar With Visual Studio 2012

University co-operation with Maemo SW FRUCT seminar Tampere Nokia V1-Filename.ppt / YYYY-MM-DD / Initials

Using Windows Explorer and Libraries in Windows 7

Yup, left blank on purpose. You can use it to draw whatever you want :-)

trevor.bramwell.net Documentation

UI, Graphics & EFL. Carsten Haitzler Principal Engineer Samsung Electronics Korea Founder/Leader Enlightenment / EFL

COPYRIGHTED MATERIAL. Starting Strong with Visual C# 2005 Express Edition

feel free to poke around and change things. It's hard to break anything in a Moodle course, and even if you do it's usually easy to fix it.

Hello, and welcome to a searchsecurity.com. podcast: How Security is Well Suited for Agile Development.

Keyboard With Reason 5

Why are there so many programming languages? Why do we have programming languages? What is a language for? What makes a language successful?

BASE Object: This will have the text objects a children as well as run the script.

CS 153 Design of Operating Systems

E-BOOK // INSTALL TOUCHSCREEN DRIVER WINDOWS 10 EBOOK

INTRODUCTION BACKGROUND DISCOVERER. Dan Vlamis, Vlamis Software Solutions, Inc. DISCOVERER PORTLET

Windows 7 Will Not Load On My Computer Says I'm

Organizing your Outlook Inbox

Computer Science II Lab 3 Testing and Debugging

1 Getting used to Python

Arduino IDE Friday, 26 October 2018

Interactive PDFs Start

Usability Test Report: Homepage / Search Interface 1

Wakanda Architecture. Wakanda is made up of three main components: Wakanda Server Wakanda Studio Wakanda Client Framework

Report Commander 2 User Guide

Connect with Remedy: SmartIT: Social Event Manager Webinar Q&A

Installing VMware Player to Run Ubuntu Linux on a Windows Machine

What about when it s down? An Application for the Enhancement of the SAS Middle Tier User Experience

THE PRAGMATIC INTRO TO REACT. Clayton Anderson thebhwgroup.com WEB AND MOBILE APP DEVELOPMENT AUSTIN, TX

Victor has added the link in the notes box:

Your message in Outlook will look something like the illustration below. Begin by right-clicking on the name of the attachment.

Implementation of F# language support in JetBrains Rider IDE

Promoting Component Architectures in a Dysfunctional Organization

Introduction to Concurrent Software Systems. CSCI 5828: Foundations of Software Engineering Lecture 12 09/29/2016

Instructor: Craig Duckett. Lecture 04: Thursday, April 5, Relationships

Website minute read. Understand the business implications, tactics, costs, and creation process of an effective website.

12 Follow-up Templates

The following content is provided under a Creative Commons license. Your support

Data Management CS 4720 Mobile Application Development

HTML5 and CSS3 for Web Designers & Developers

The official TYPO3 partner program

Online Video Playbook. Written by: Johnny Beirne

Developing the Roadmap - Director Next Survey

News in RSA-RTE 10.1 updated for sprint Mattias Mohlin, November 2017

SLACK. What is it? How do I use It?

Dynamic Languages Toolkit. Presented by Andrey Tarantsov

with TestComplete 12 Desktop, Web, and Mobile Testing Tutorials

How to Improve Your Campaign Conversion Rates

Chat Activity. Moodle: Collaborative Activities & Blocks. Creating Chats

LECTURE 3 ADMINISTRATION SECTION -A

OpenACC Course. Office Hour #2 Q&A

The Stack, Free Store, and Global Namespace

Azon Master Class. By Ryan Stevenson Guidebook #5 WordPress Usage

Download Beginning ASP.NET E-Commerce In C#: From Novice To Professional (Expert's Voice In.NET) PDF

Transcription:

Builder Improving GNOME's Developer Story Christian Hergert <christian@hergert.me> http://hergert.me/talks/scale13x builder.pdf Scale 13x February 2015

What's GNOME?

A Free Software Desktop Focused on UX

We tend to expose bugs in the stack

And then we go fix them

Graphics Drivers and Display Servers Network Configuration Audio Subsystems Message Passing and RPCs Settings Race free Application Launching Init Systems Application Sandboxing

Who am I? Long time Free Software hacker Glib/GObject/Gtk+ @ GNOME Databases @ MongoDB Virtual Machines @ VMware JIT/GC/Language Runtime Geek @ Mono

I quit my job to focus on Free Software.

In particular, GNOME

And even more specifically, Builder

Builder is my attempt to improve the developer experience on GNU/Linux

So what is this GNOME thing anyway?

GNOME is an ecosystem

Compositor, graphics toolkits, build tools, settings, media pipelines, music players, calendars, file manager, VFS, email systems, maps, locations, input methods, network managers, battery monitors, display configuration, printers, profilers, touchpads, tablets, content sharing, privacy tools, desktop search, hardware integration, color management, key management, phones, tablets, kiosks, etc...

...there is a lot involved in making a modern usable desktop

But every year the workload grows.

In 2012, I made a bold statement.

Email me, and I'll teach you C.

Um, my inbox is still full. We literally have thousands of people that want to contribute to Free Software but don't know how.

And that is for C! Imagine if it was something like Python or JavaScript (or Vala).

Keep in mind, I don't think everyone should learn C. We just have a lot of it in GNOME and we are better off if more people can help maintain that code.

So I tried to teach people C. and failed pretty miserably.

We were lacking the proper tools. And...

Learning how to get started is the number one hurdle in contributing to Free Software.

Let me repeat that for you

Learning how to get started is the number one hurdle in contributing to Free Software.

This is why I'm building Builder.

We need a developer story that is as simple as enabling a Developer Mode switch in GNOME's Control Center.

There exists other IDEs. And some of them even work.

But none of them are focused on making it easy to contribute to GNOME.

We need better tools that will help guide newcomers through the process.

If learning autotools is a pre requisite, we are not in particularly great shape. P.S. I like autotools

So what is the plan for Builder?

We are pre pre alpha, but we have a code base, and we make forward progress almost every day (except when I'm giving talks) Around 50 contributors thus far

1 fulltime engineer I paid for the first 4 months of development. Community has crowdfunded the next half year.

We are building a modern, fully functional IDE for GNOME.

That includes build systems, version control, project management, editors (vim/emacs too), file settings, modelines, auto completion, auto indentation, integrated help, debuggers, UI designer, D Bus, external hardware devices (tablets, dev boards, etc), code search, refactory, IDE scripting, live diagnostics, tutorials, settings, embedded resources, simulators, profilers, etc...

With the same attention to detail that goes into UX.

Developers are people too, and they deserve a great developer experience.

DX

GNOME 3.16 is about 5 weeks away. So don't expect the magic by then.

GNOME 3.18 is a more realistic goal.

So what exists today?

Builder is broken into two pieces. Builder the UI, and LibIDE the shared library.

The UI chrome is practice in minimalism Code is important Toolbar buttons are not

Lots to do. We need to integrate nemiver, gitg, devhelp, glade, project management, etc.

And LibIDE is under heavy development.

Okay then, what does LibIDE do?

Semantic Syntax Highlighting Auto Indentation Auto Completion Symbol Resolution Code Navigation Code Search Debugger Device Management (tablets, odroids, etc) D&D (Deploy and Debug) Live Diagnostics and Error reporting Project Management Build Systems Version Control Buffer Management Editor Settings (modelines, editorconfig, etc) Cross Compiling

And IDE Scripting. Even though LibIDE is written in C, you can inject scripts using JavaScript or Python. (Way better than.vimrc)

For example, to translate a buffer on save...

/* Context is a special variable provided to you */ let BufferManager = Context.get_buffer_manager(); /* upon save request, translate newlines */ BufferManager.connect('save-buffer', function(buffer){ let text = buffer.get_text().replace('\r\n', '\n'); buffer.set_text(text); });

let DeviceManager = Context.get_device_manager(); let BuildSystem = Context.get_build_system(); /* auto-build current project when a new device is connected */ DeviceManager.connect('device-added', function(provider, device){ if (device.get_id()!= 'local') { let builder = BuildSystem.get_builder(null, device); builder.build_async(null, null); } });

You can implement editor hooks, search providers, build extensions, device bring up, refactory tools, etc.

So much of what goes into an IDE isn't visible. If we do our jobs right, you won't even notice.

Questions?

Fin https://wiki.gnome.org/apps/builder