← Back to team overview

elementary-dev-community team mailing list archive

Re: Go-like build tools for Vala


Thanks David,

I agree, compiling an existing CMake project is fairly straight forward;
however, adding files or starting a project from scratch has been an
exercise in frustration. Moreover, while I would love to have the time to
learn CMake, I really shouldn't have to as it provides no benefit (as far
as I can tell) compared against the "go build" solution.

Generally speaking, the modern development environment is sufficiently
complex between IDEs, version control systems, online code hosting, bug
management, distribution systems, test servers, build servers, etc.,
(that's not to mention the complexities of the actual problems for which a
developer is trying to write solutions)--it just seems like the unnecessary
complexities of metadata-based build systems aren't worth learning when
automatic systems should (and often do) exist. Personally, I can't spare
the time to learn another tool that will be obsolete soon.

And while CMake and the like _are_ broadly applicable, most languages have
IDEs capable of managing the complexities internally (Vala is the only
language that's required me to learn CMake or Autotools). Of all the Vala
IDEs I've found that claim to be able to support CMake or Autotools, none
are able to handle more than a small fraction of the conceivable project
structures (if memory serves, Anjuta couldn't even handle most Elementary

Finally, rest assured, I haven't been actively working on Elementary for
lack of time; however, when I had the time to contribute, the project
management (or lackthereof) was a huge buzzkill.

Thanks for your response,

Craig :)

On Tue, Feb 5, 2013 at 3:16 PM, David Gomes <david@xxxxxxxxxxxxxxxx> wrote:

> If by "Elementary", you mean elementary OS, I'd like to say that I've been
> doing desktop development there for almost a year now and only rarely did I
> have to use CMake to its full extent. All I have to do is fetch a project,
> "mkdir build; cd build; cmake ..;make;", and after I've fetched a project,
> I really only have to write some code "cd build;make;". I really hope CMake
> isn't the reason you aren't helping us, because right now we could really
> use some help!
> However, I did learn how to write CMakeLists.txt files on side projects,
> which came in handy later on for elementary OS development, but to help us,
> there's no need to struggle with CMak. If you need to write anything, I
> encourage you to learn because it's really easy -
> https://github.com/davidgomes/2dplatformer/blob/master/CMakeLists.txt,
> that is the CMakeLists.txt I had to write for a side project, and it was
> quite simple (also, I do realize it's pretty badly-written, from what I've
> been told on #cmake).
> Those Go build tools you're talking about look cool and easy to use, but
> they are go-only. I think you should learn CMake or Autotools because you
> can use them with every language/library/framework that needs building
> (even Go!). Anyways, "go build" is probably not too hard to write for Vala
> projects that don't use any external libraries.
> Oh, and I just remembered, autotools, CMake and the likes help you A LOT
> with packaging your applications. They handle lots of stuff that would be a
> PITA to do yourself.
> David "Munchor" Gomes
> On Tue, Feb 5, 2013 at 9:05 PM, Craig <weberc2@xxxxxxxxx> wrote:
>> Firstly, let me just say that CMake and Make are a pain to learn. I'm a
>> professional software developer and I still can't figure them out. In my
>> job, we use tools that automate the nightmare that is project management
>> (usually IDEs) and it's usually still unpleasant. The tedium of these
>> "tools" is the one thing keeping me from using Vala as a primary
>> programming language and otherwise contributing to Elementary.
>> That said, lately I've been getting into Go (golang), and I'm finding it
>> to be an AMAZING language; however, it's only 3 years old, thus it doesn't
>> have an extensive collection of libraries. The only prominent GTK library
>> is very immature and (I believe) it only supports some features from
>> GTK+2.0 (none from 3.0). Among the more amazing features of Go are its
>> build environment tools.
>> `go build [app-name]` is all that is needed to build an entire
>> application--no messing with CMakeLists or makefiles (no project metadata
>> of any kind, in fact). Furthermore, `go install [app-name]` will build and
>> install the application to a location in your PATH, making it instantly
>> executable. Go also comes with an awesome test suite out of the box, and
>> `go get [http://path.to.online/repository]`<http://path.to.online/repository%5D>will automatically fetch a package from a public code repository (it works
>> with git and several other repo types) and store the files alongside your
>> own source code.
>> I think it would be a huge help to elementary developers if we at least
>> created a Vala version of (at least) the `go build` tools to facilitate
>> project management. This would dramatically lower the entry barrier to
>> Elementary development, and it would encourage an organized structure for
>> application source code across applications.
>> At this point, I'm not proposing spending time and resources working on
>> this, but I'd like to get some discussion going about the merits of this
>> idea, particularly from people with Go and Vala experience.
>> Sound off!
>> -Craig Weber
>> --
>> Mailing list: https://launchpad.net/~elementary-dev-community
>> Post to     : elementary-dev-community@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~elementary-dev-community
>> More help   : https://help.launchpad.net/ListHelp

Follow ups