HI guys, some of you might have heard about vagrant [0], which is a tool for managing virtual machines. It’s quite useful especially if you are juggling multiple projects because it allows you to keep dependencies and build environments isolated in VMs while you can still use your familiar VCS/editor configuration on the host for coding via a directory that is shared between the host and the VM.
Additionally, vagrant has the notion of a ‘box’: a pre-made virtual environment for a specific task. Using vagrant boxes, you can get up and running with a wordpress installation, an elasticsearch node, a CoreOS cluster, etc. within a matter of minutes because all you have to do is point vagrant at the box you want to use and have it download and launch it for you. That massively reduces the barrier of entry because you can just dip your toe in without learning the intricacies of a new build system and all that stuff. For that reason, I made it my holiday project to create a vagrant box that provides a GNUstep development environment and that has now actually reached a working state. So for the impatient: if you have vagrant, a supported hypervisor (currently that would be VirtualBox or VMware Fusion/Workstation), and an X server, you can get Gorm on your screen by just doing the following in an empty directory: > vagrant init ngrewe/gnustep-gui > vagrant up > vagrant ssh -- -Y Gorm (or just `vagrant ssh` to get a shell in the VM) To provide a bit more detail, you will get the following with the box: * a Debian 8.2 (jessie) base system * clang 3.7 * libobjc2 * libdispatch * gnustep-make * gnustep-base * gnustep-gui * gnustep-back * gorm It’s configured to support all the modern Objective-C features (declared properties, non-fragile ABI, blocks, ARC). There is also a variant of the box called ngrewe/gnustep-headless that omits the GUI parts if you are looking to do some server side Objective-C development. I really hope that this is helpful for people who want to try out GNUstep. The boxes themselves are built using packer [1] and I maintain the repository with the provisioning templates on github [2] if you want to have a closer look at how it works. The process of building the boxes is mostly automated, so I will do my best to update them on a regular basis. There are a few things I’m looking at for the future: * Slimming down the box: Currently the compressed boxes are close to 700MB, and about 2.3GB uncompressed, so I’m looking for things to remove to get he size down. * Support for Parallels Desktop: The boxes already support both VirtualBox and VMware so most people should be able to use them, but at least as far as Mac OS hosts go, Parallels seems to be the third major desktop virtualisation provider. Both packer and vagrant support Parallels, so I would really like to add support for that as well. Unfortunately, I don’t have a license for the software, so I’m hoping that somebody might volunteer to add this provider… * Additional layers/components: I’ve kept the list of things in the image fairly minimal for now. It might make sense to ship things like CoreFoundation, Opal, or DBusKit, though. I’m also not really sure about the deployment story. I think vagrant boxes provide a pretty nice and consistent experience for developers, but for end users providing proper packages are probably much more useful. Still, packer provides a way to build docker images from the template as well, so I’m wondering how difficult it would be to containerize GNUstep apps for easy deployment? Anyways, I encourage y’all to check this out, see how it fits your workflow, and report bugs and suggestions for improvements to me. Cheers, Niels -- [0] https://www.vagrantup.com [1] https://www.packer.io [2] https://github.com/ngrewe/gnustep-boxes _______________________________________________ Gnustep-dev mailing list Gnustep-dev@gnu.org https://lists.gnu.org/mailman/listinfo/gnustep-dev