= Ubuntu Make = Ubuntu Make is a command line tool which allows you to download the latest version of popular developer tools on your installation, installing it alongside all of the required dependencies (which will only ask for root access if you don't have all the required dependencies installed already), enable multi-arch on your system if you are on a 64 bit machine, integrate it with the Unity launcher. Basically, one command to get your system ready to develop with! == Our philosophy == First, let's define the core principles around the [[https://github.com/ubuntu/ubuntu-make|Ubuntu Make]] and what we are trying to achieve with this: 1. Ubuntu Make will always download, test and support the latest available upstream developer stack. No version is stuck in stone for 5 years. We get the latest and the best release that upstream delivers to all of us. We are conscious that being able to develop on a freshly updated environment is one of the core values of the developer audience and that's why we want to deliver that experience with Ubuntu Make. 1. We know that developers want stability overall and not have to upgrade or spend time maintaining their machine every 6 months. We agree they shouldn't have to and the platform should "get out of my way, I've got work to do." That's the reason why we focus heavily on the latest LTS release of Ubuntu. All tools will always be backported and supported on the latest Long Term Support release. Tests are running multiple times a day on this platform. In addition to this, we support, of course, the latest available Ubuntu Release for developers who likes to live on the edge! 1. We want to ensure that the supported developer environment is always functional by always downloading the latest version from upstream. The software stack can change its requirements, requiring newer or extra libraries and thus cause breakage. That's why we are running an entire suite of functional tests multiple times a day, on both versions that you can find in distro and on the latest trunk. That way we know if: 1. We broke ourselves in trunk and needs to fix it before releasing. 1. The platform broke one of the developer stack and we can promptly fix it. 1. A third-party application or a website changed and broke the integration. We can then fix this really early on. All of those tests running will ensure the best experience we can deliver, while always fetching the latest release version from upstream. All of this on a very stable platform! == Supported platforms == The list of supported platforms is always evolving. We divided Ubuntu Make in categories so that it's easier for developers to navigate and install what they require. We invite you to look at existing current support using the --list option or shell completion. This list goes from Android (java and native) development, to games, frontend web (javascript and dart), backend (go and dart), and various ide (python, C++ java…). This list might not be up to date, so check the github page for the new contributions! {{{ $ bin/umake --list android: Android Development Environment [not installed] android-ndk: Android NDK android-sdk: Android SDK android-studio: Android Studio (default) eclipse-adt: For removal only (not supported upstream anymore) [not installable on this machine] dart: Dartlang Development Environment [not installed] dart-editor: Dart SDK with editor (not supported upstream anyymore) [not installable on this machine] dart-sdk: Dart SDK (default) games: Games Development Environment [not installed] blender: Very fast and versatile 3D modeller/renderer stencyl: Stencyl game developer IDE superpowers: The HTML5 2D+3D game maker twine: Twine tool for creating interactive and nonlinear stories unity3d: Unity 3D Editor Linux experimental support go: Go language [not installed] go-lang: Google compiler (default) ide: Generic IDEs [not installed] arduino: The Arduino Software Distribution atom: The hackable text editor clion: CLion integrated C/C++ IDE datagrip: DataGrip SQL and databases IDE eclipse: Eclipse Java IDE eclipse-cpp: Eclipse C/C++ IDE eclipse-javascript: Eclipse IDE for JavaScript and Web Developers eclipse-jee: Eclipse JEE IDE eclipse-php: Eclipse PHP IDE gogland: The Drive to Develop idea: IntelliJ IDEA Community Edition idea-ultimate: IntelliJ IDEA lighttable: LightTable code editor netbeans: Netbeans IDE phpstorm: PHP and web development IDE processing: Processing code editor pycharm: PyCharm Community Edition pycharm-educational: PyCharm Educational Edition pycharm-professional: PyCharm Professional Edition rider: The JetBrains cross-platform .NET IDE rubymine: Ruby on Rails IDE sublime-text: Sophisticated text editor for code, markup and prose visual-studio-code: Visual Studio focused on modern web and cloud webstorm: Complex client-side and server-side javascript IDE kotlin: The Kotlin Programming Language [not installed] kotlin-lang: Kotlin language standalone compiler maven: Java software project management and comprehension tool [not installed] maven-lang: Java software project management and comprehension tool nodejs: Nodejs stable [not installed] nodejs-lang: Nodejs stable rust: Rust language [not installed] rust-lang: The official Rust distribution scala: The Scala Programming Language [not installed] scala-lang: Scala compiler and interpreter (default) swift: Swift language [not installed] swift-lang: Swift compiler (default) web: Web Developer Environment [not installed] firefox-dev: Firefox Developer Edition phantomjs: headless WebKit scriptable with a JavaScript API }}} == How to use it == Example: how to install Ubuntu Make and then, Android Studio. === Installing Ubuntu Make === You can install the snap package (not working at the moment on 17.10) {{{ $ snap install ubuntu-make }}} If you run the snap you have to run ubuntu-make.umake If you're running 17.10 or want to run the "traditional" package, you can install from the Ubuntu Make PPA. First, add the PPA to your system: {{{ $ sudo add-apt-repository ppa:lyzardking/ubuntu-make $ sudo apt-get update }}} Then, installing Ubuntu Make: {{{ $ sudo apt-get install ubuntu-make }}} === Example: How to install android-studio === {{{ $ umake android }}} And then, accept the installation path and Google license. It will download, install all requirements alongside Android Studio and latest android SDK itself, then configure and fit it into the system like by adding an Unity launcher icon… And that's it! Happy Android application hacking on Ubuntu. You will find the familiar experience with the android emulator and sdk manager + auto-updater to always be on the latest. == How to contribute == === Reports bugs and propose enhancements === The more direct way of reporting a bug or giving any suggestions is through the [[https://github.com/ubuntu/ubuntu-make/issues|upstream bug tracker]]. The tool is really to help developers, so do not hesitate to help us directing the Ubuntu Developer Tools Center on the way which is the best for you. :) === Help translating === We already had some [[https://translations.launchpad.net/ubuntu-make|good translations contributions]] through launchpad! Thanks to all our translators, we got Basque, Chinese (Hong Kong), Chinese (Simplified), French, Italian and Spanish! There are only few strings up for translations in Ubuntu Make and it should take less than half an hour in total to add a new one. It's a very good and useful way to contribute for people speaking other languages than English! We do look at them and merge them in the mainline automatically. Contribute on the code itself Some people started to offer code contribution and that's a very good and motivating news. Do not hesitate to [[https://github.com/ubuntu/ubuntu-make|fork us on the upstream github repo]]. We'll ensure we keep up to date on all code contributions and pull requests. If you have any questions or for better coordination, [[https://github.com/ubuntu/ubuntu-make/issues/new|open a bug]] to start the discussion around your awesome idea. We'll try to be around and guide you on how to add any framework support! You will not be alone! === Write some documentation === We have some basic documentation (this wiki page!). If you feel there are any gaps or any missing news, feel free to edit the wiki page! You can as well merge some of the documentation of the [[https://github.com/ubuntu/ubuntu-make/blob/master/README.md||README.md]] file or propose some enhancements to it! To give an easy starts to any developers who wants to hack on Ubuntu Make itself, we try to keep the [[https://github.com/ubuntu/ubuntu-make/blob/master/README.md|README.md]] file readable and up to the current code content. However, this one can deviate a little bit, if you think that any part missing/explanation requires, you can propose any modifications to it to help future hackers having an easier start. :) === Spread the word! === Finally, spreading the word that Ubuntu Loves Developers and we mean it! Talk about it on social network, tagging with '''#ubuntulovesdevs''' or in blog posts, or just chatting to your local community! We deeply care about our developer audience on the Ubuntu Desktop and Server and we want this to be known!