I had the chance to sit down and chat with the lead Maya developer, Maxwell Barvian, about himself, Maya, and some other developer bits regarding elementary. He covers what he's been up to, what's coming in Maya, and teases some awesome features.
Cassidy James: So, Maxwell, tell me a bit about yourself!
Maxwell Barvian: My name's Maxwell Barvian, and I'm a 17-year-old aspiring computer scientist and UI/UX designer. When I'm not perusing through code snippets on forrst or launchpad, I'm usually hacking away at some personal and business-related projects (which primarily consist of both design and development work), or updating my twitter account (@mbarvian).
Cassidy James: How did you hear about elementary?
Maxwell Barvian: I first saw the elementary theme on a "share your desktop"-esque post on neowin.net, and I eventually downloaded it from deviantart.com. I fell in love with it immediately, as most of the Linux themes out there either gave me a headache after staring at them for too long or had terrible color schemes, etc.
Eventually, I stumbled across elementaryos.org and joined the IRC channel about a year and a half ago. I took it upon myself to contribute to this project, as I felt it had great potential, so I created the plymouth theme seen in Jupiter with graphics supplied by Daniel Foré himself. Afterwards, I took a break from the Linux world for a bit after becoming frustrated with some parts of it, but returned a few months later with some more programming and design experience. Then I started to work on the first version of Maya with Jaap, and the rest is history. ;)
Cassidy James: What projects do you work on for elementary?
Maxwell Barvian: Currently I'm working on Maya - a very lightweight, connected calendar written in Vala.
Cassidy James: Awesome. So what exactly are the origins of Maya?
Maxwell Barvian: Well, Maya was actually the first app I wanted to write for elementary. I came from a background of web development, but I had never done anything on the desktop. I looked at Dexter (which at the time was elementary's newest app) and saw how manageable the python syntax and object model looked. I originally started writing the calendar with Jaap Broekhuizen (IRC nickname: jaapz) in PyGTK. It wasn't long until I made the switch to Genie, a language with most of Vala's features, but a unique Python-esque syntax, after a push to go with a compiled language for speed from some of elementary's head developers.
Before I really got anywhere worth mentioning with Maya, though, I became very busy with schoolwork and other development work, so I left the project to Jaap, who was also very busy with a new job. Now that it's summer, I've picked the app up again, but this time it's better than ever! I re-used a bit of Jaap's code, but the app is now entirely written in Vala, with plans of using Evolution Data Server for a backend to provide syncing with many popular online services like Google Calendar and Ubuntu One. Jaap is still a big contributer, so I feel like I need to give him credit for his contributions. I'm happy to say that Maya is progressing quite well as of recently, and we're all hoping for an inclusion in Luna, the version of elementary after Jupiter.
Cassidy James: What are some features in development or planned for Maya?
Maxwell Barvian: Well, Daniel Foré came up with a really neat idea of an agenda-based view. Basically, this lets you see all your upcoming appointments in one location just by clicking a day. This eliminates the need for different week/day/month/year views, and makes Maya unique from most other calendars out there. I think it'll be a great feature to have.
Additionally, because the backend will be powered by Evolution Data Server, we will be able to take advantage of multiple syncing technologies, making Maya a very connected calendar.
Cassidy James: Cool, so we're talking Google Sync, Ubuntu One integration, etc.?
Maxwell Barvian: Exactly.
Cassidy James: Wow, that's a pretty big deal. Will Maya integrate with other elementary apps, and how so?
Maxwell Barvian: Why of course! Maya will have Contractor integration for quickly sharing appointments with friends, as well as Dexter integration for adding guests to events. However, just like all other elementary apps, modularity is key, so Maya will not depend on any other application to be installed in order to work. ;)
Cassidy James: And for those who don't know, what is Contractor?
Maxwell Barvian: Contractor is a neat little utility developed by Allen Lowe (the developer of Dexter) which allows applications to communicate very easily. Like most things, however, Contractor is best explained through an example. Let's say I have a photo I'm viewing with a photo sharing application. Using Contractor, I can simply ask for all the applications or services (called contracts) that can handle the type of file I'm working with (in this case, a picture). Contractor returns a list based on MIME type or file extension, which can then be used to share the photo.
Cassidy James: So kind of like Android's universal "Share with..." feature.
Maxwell Barvian: Right, so instead of having different libraries or interfaces to deal with the same types of services or applications, developers are encouraged to write .contracts to allow all applications to utilize a particular service. For example, a .contract might be an interface to upload a .jpg to Facebook. After adding the .contract, all applications that feed the .jpg extension to Contractor can then upload the .jpg to Facebook, very easily. This is something that I haven't seen on another desktop operating system, but one that is very neat to have in my opinion!
Cassidy James: I've been playing around with the Maya code, and I've seen that Maya is built using GTK3. How is that different from GTK2 apps?
Maxwell Barvian: Well, for starters, GTK3 is now powered exclusively by the excellent Cairo graphics library, which brings a new theming engine, among other benefits. Now developers can use CSS (a standard web technology for styling content) to theme their applications and system. What would have required overriding an expose event signal and manually drawing onto the Gdk.Window's surface with Cairo in GTK2 is now just a few lines of very-readable CSS. This is actually one of my favorite new features in GTK3, albeit being somewhat limited by a small number of CSS properties. It'll only improve, though. Currently in Maya I still have to draw the borders with Cairo, but hopefully I'll be able to do it exclusively with CSS in the near future.
Other changes include the new Gtk.Application class, a subclass of Glib.Application, which provides "uniqueness" for application and cleans up code and unnecessary dependencies like libunique quite well. Gtk.Application is also the superclass of Granite.Application, in our Granite framework.
Cassidy James: Nice, it sounds like GTK3 will help out developers and themers alike. What is the Granite framework?
Maxwell Barvian: The Granite framework is something we have cooking for developers to really make it easy to develop applications on elementary. Right now it's very much a work-in-progress, but in the future we hope it will provide useful libraries for storing settings and communicating with other applications, among other things. Basically, the lead elementary developers noticed a lot of redundancy and unnecessary complications in writing applications for elementary, so Granite is our solution to these issues. Right now it is an amalgamation of some widgets and libraries whipped up by elementary developers, and some taken from the fantastic Docky/Plank projects.
Cassidy James: It really sounds like some awesome stuff is coming to elementary soon. I'm about ready to wrap up, but before we do, let's hear your three favorite things about elementary.
Maxwell Barvian: I really love elementary's HIG (Human Interface Guidelines) and the overall feel of elementary applications. For example, elementary developers are encouraged to use an AppMenu instead of a typical menubar. AppMenus are easily identifiable in elementary applications (the little gear icon in the top right corner in Dexter and Postler), and with good design decisions, menubars become very much unnecessary and obsolete.
My second favorite thing about this project is the team: I think we have an outstanding group of enthusiastic, friendly developers and designers who all share the same goal: make the computing experience as enjoyable as possible.
Finally, as I mentioned before, I'm a big fan of the elementary theme and icon set, so working directly with the people that created them is always a plus. ;)
Cassidy James: Thanks for your time and thorough discussion, Maxwell! It was a pleasure interviewing you.
So! That's Maxwell Barvian, ladies and gentlemen. It really sounds like some exciting things are happening both with Maya and the wider elementary project! What are some things you'd like to learn about elementary? Sound off in the comments and either I or another elementary team member will likely be able to answer you.