← Back to team overview

elementary-dev-community team mailing list archive

Re: Go-like build tools for Vala


Hey Guys,

While I don't have vast technical knowledge around build systems, I did
talk to Robert Ancell a while back and he shared with me that he was
working on a new modern build system called "bake". If someone wants to
examine bake, try it out in a project, and then share with the list it's
pros and cons that would be awesome!

you can get bake from here: https://launchpad.net/bake

On Tue, Feb 5, 2013 at 2:24 PM, Craig <weberc2@xxxxxxxxx> wrote:

> 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
> projects).
> 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
> --
> 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

Best Regards,

Daniel Foré


Follow ups