Make your Gnome title bar smaller – Fedora 24 update

I wrote similar post before about making the massive title bar in Gnome smaller. But it doesn’t work anymore in Fedora 24!

Don’t worry, I have created an update for you – so you can enjoy more space on your desktop again!

gnome-window-title-barAll you need to do is to put the following css code into ~/.config/gtk-3.0/gtk.css

window.ssd headerbar.titlebar {
    padding-top: 4px;
    padding-bottom: 4px;
    min-height: 0;
}

window.ssd headerbar.titlebar button.titlebutton {
    padding: 0px;
    min-height: 0;
    min-width: 0;
}

Refreshed Look of Fedora Developer Portal

I have just deployed a new version of Fedora Developer Portal. The most visible part is refreshed look with more uniform layout. I have also compressed all the images in titles (from ~1.2MB to ~50kB in average) – so the loading should be much faster.

There is also new section called Start a project. This section contains/will contain content from a problem-to-be-solved perspective like ‘Create a Website’ or ‘Work with Arduino’. This new section is the opposite of Languages and Databases, which is a ‘language-specific’ section.

As I have already mentioned, the new section is partly empty. This is another new feature – we have also published a selection of unfinished/empty pages, that we would like to include. And this is your turn! You can help us by contributing content. All information is about contributing is on our new site for contributors – also linked from the portal.

If you would like to get involved, get in touch with us on our mailing list or ping us on irc #developer-portal at freenode.

Copr is a great place for contributors

We have recently moved our code to GitHub, and we support a local development environment using Vagrant – which means, that collaboration have never been easier. Even if you’re very new to the world of open source, this might be a good place for you to start. For example, an easy fix of a typo might be a great opportunity for you to make your first open source contribution! :-)

What is Copr?

Copr is a community build service in Fedora that builds your code and provides you with your own RPM repository.

Source code is builded in copr and an RPM repository is created.

So, if you are a developer, you can build your application in Copr and make it available for everyone. Or you might be packager – a person, who creates packages of open source software, which are easy to install in Fedora. Then you have two options:

  1. Make the package a part of the Fedora distribution using Fedora Packaging Guidelines. If your package passes a review and all the formal requirements, the package will be added to Fedora and you will become an owner of the package. This means, that you will be responsible for making updates and reporting issues to the upstream, or fixing them. You will become an appreciated member of the Fedora community! :-)
  2. Build the package in Copr. This option requires less commitment, and it is also suitable for testing or quick and dirty solutions. In fact, it’s totally up to you to decide the quality of your packages and how often you will update them. Copr is a build service for everyone. Learn more about using Copr.

Local development environment with Vagrant

Vagrant can create a local development environment on your workstation. It is very easy to use and will not break your environment, as it installs everything in virtual machines.

Starting the environment

$ git clone https://github.com/fedora-copr/copr.git
$ cd git
$ vagrant up

This spawns two virtual machines on your workstation:

  1. Copr Frontend – including the web interface and database – http://localhost:5000
  2. Copr Dist Git – storage for the source code – http://localhost:5001

(optional) If you want to start only one specific virtual machine, run one of these commands:

$ vagrant up frontend
$ vagrant up distgit

Testing your changes

To test your changes, commit them to your local repository and reload the virtual machines.

Example:

$ git add .
$ git commit -m "changed something really important"
$ vagrant reload frontend

This will restart the Copr Frontend virtual machine, rebuild your package and install it.

Accessing the virtual machines

If you need to access the virtual machines, you can use either:

$ vagrant ssh frontend
$ vagrant ssh distgit

Rebuilding broken virtual machines

Have you destroyed one of the machines completely? That’s fine! To delete it and install it again from the scratch, use:

$ vagrant destroy frontend
$ vagrant up frontend

You can do the same for distgit as well.

Stopping the virtual machines

$ vagrant halt

Contributing

Now, when you know what Copr is, how to make changes, and you maybe did some experiments, you are ready to change the world! Well, make a pull-request to the Copr project.

To find out what specifically needs to be done, visit our bugzilla. Or ask on our mailing list.

You should also familiarize yourself with pull-requests. You will need to:

  1. fork our project
  2. create a pull-request

And that’s it! If you have any questions about Copr, contributing, or anything related to this article, please leave a comment in the comment section below. I’m looking forward to hear from you!

Useful resources

Fedora 24 chroots in Copr + bonus

Yesterday, Miroslav added fedora-24-i386 and fedora-24-x86_64 chroots to Copr. Chroot for powerPC will be added soon and will be announced on the copr-devel mailing list.

And what is the bonus? We have added the fedora-24-* chroots to every project which had fedora-rawhide-* enabled, and we have copied the repositories as well. In another words, all projects with fedora rawhide should support fedora 24 automatically. You can thank to Jakub, who wrote the script, for that.

Make your Gnome title bars smaller

Update: See the updated version for Gnome 3.20 and Fedora 24.

I don’t like the size of title bars in the stock Gnome 3. They are big and take to much space on my tiny 12″ screen! But I’ve found an easy solution to this.

gnome-window-title-barAll you need to do is to put the following css code into ~/.config/gtk-3.0/gtk.css

.header-bar.default-decoration {
 padding-top: 3px;
 padding-bottom: 3px;
 font-size: 0.8em;
}

.header-bar.default-decoration .button.titlebutton {
 padding: 0px;
}

Fedora Developer Portal – prototype

I wanted to try an interesting project called Jekyll – a static page generator. It consumes content in textual form like Markdown or Textile, Liquid templates, and HTML and CSS to generate static pages and blogs.

I should be able to install it with simple command:

$ gem install jekyll

But it wasn’t successful. What I’m going to do?

Good news for me is that I work on a project called Fedora Developer Portal! And there is a repo for content with the Ruby section already created. It explains how to install Ruby, Gems, etc. I used that information and successfully installed Jekyll on my machine.

That’s one of the purposes of our new portal – to help people start with new (new for them) technology on Fedora.

First Prototype is Here!

As you might have figured out from the introduction, and from the heading as well, the development slowly started! I just finished a prototype which is running on developer-phracek.rhcloud.com.

Please keep in mind that this is just a prototype that offers very limited content and functionality. The content is not final and will change according to your feedback and ideas :-)

Project Resources

General Information

  • Wiki page – The main project page with description, links to resources, planning etc.

Code & Development

  • Content repo – Repo with all the content in a textual form with Markdown syntax. (Ruby content already created)
  • Website repo – Repo for Jekyll templates that would define the visual look and layout of the website.
  • Design mockups repo – Repo for layout sketches and mockups.
  • Prototype – Prototype of the website with limited content and functionality.

Communication

  • Taiga Project – Project tracking and planning
  • IRC channel #developer-portal on Freenode
  • Issue Trackers in the GitHub projects above

Copr, Dist Git and Patternfly

As in the last year, July, for some reason, happened to be a great time to post some news about our Copr Build Service. At this time, it’s about integrating Copr with:

  • Patternfly – an open interface project
  • Dist Git – a remote Git repository designed to hold RPM package sources

If you can’t wait to see it, you can check the development server that is hopefully running on copr-fe-dev.cloud.fedoraproject.org. But please, remember, it’s a development server – so all the projects built here are a subject of deletion, destruction and all kinds of randomization without notice.

Dist Git for Copr

It all started with a need of uploading sources to the Copr itself – as the only way of building your package was to provide a URL pointing to it. That, however, required all users to have their own public file storage.

We decided to go the Fedora way and use Dist Git – a combination of git repository to store spec files, lookaside cache to store sources, and Gitolite to manage access permissions. Each package will be stored in a repo named as ‘username/project/package’. Each repo will contain branches that represent a target platform. For example: ‘f22′ for Fedora 22, ‘epel7′ for Epel for Centos 7, etc.

It will be gradually deployed in production. The first step is to enable users to upload their .src.rpm files into Copr. At this step, Dist Git will be used as a storage only. Direct access to the repositories will come afterwards.

New User Interface  Patternfly

Enabling Dist Git required some changes to the user interface as well. We didn’t use any framework, that would help us to easily create new elements in the UI. Instead, we had a custom CSS that received new lines of code with each change. As you can imagine, each change took a bit longer than desired, the CSS became messy, and yes, the interface itself became messy as well. At this point, I decided that we need to do a step forward and we finally agreed to rewrite the user interface to Patternfly! Yay!

The Old Copr UI

The old Copr interface

The New Copr UI

The new Copr interface

We need your feedback!

I would like to make Copr as friendly as possible. If you want to help me with that, please provide a feedback as a comment. Do you like it? Do you hate it? Is there anything you miss in the interface? Your feedback is much appreciated!

Software Collections 2.0 available

I finally finished the builds of Software Collections 2.0 and released them on www.softwarecollections.org.

Software Collections bring new versions of software to stable platforms like CentOS without affecting the system or other packages that are installed. Software Collections have their own life cycle that is independent of the system. For example, that allows you to run your application on CentOS 6 and CentOS 7 with the same version of stack underneath.

There are plenty of new components as well as updates of the current ones. Description of each component can be found in the Software Collections Directory.

Components New in Software Collections 2.0
Component Name Software Collection
Perl 5.20.1 rh-perl520
PHP 5.6.5 rh-php56
Python 3.4.2 rh-python34
Ruby 2.2.2 rh-ruby22
Ruby on Rails 4.1.5 rh-ror41
MariaDB 10.0.17 rh-mariadb100
MongoDB 2.6.9 rh-mongodb26
MySQL 5.6.24 rh-mysql56
PostgreSQL 9.4.1 rh-postgresql94
Passenger 4.0.50 rh-passenger40
Common Java Packages 1.1 rh-java-common
Components Updated in Software Collections 2.0
Component Software Collection
PHP 5.4.40 php54
PHP 5.5.21 php55
Python 2.7.8 python27
Node.js 0.10 nodejs010
nginx 1.6.2 nginx16
Apache httpd 2.4.12 httpd24
Thermostat 1.2.0 thermostat1
DevAssistant 0.9.3 devassist09
Maven 3.0.5 maven30
V8 3.14.5.10 v8314

Fedora Developer Portal

I’m starting a new project called Fedora Developer Portal. It would be a new place for developers looking for information about stuff that is packaged in Fedora or searching new features and projects they haven’t heard about. And there are some really great! For example, do you know about Developer Assistant, Vagrant or Copr?

There would be two main types of information that you will get from the website:

The first will help you to explore. Imagine that you are a student of computer science or an existing developer. You might be looking for the best Linux distribution that will fit your needs or you have already chosen Fedora, but you don’t know every feature it might offer for you as a developer. There are great tools, technology and resources that will help you to have your project done, running and distributed to the users.

The second will help you understand how things are packaged. There are plenty of components, libraries and frameworks already packaged in Fedora for languages like Python, Ruby, Perl or PHP. This might be the reason why you chose Fedora, because the collection is quite nice. You will learn how to install them and how to use and include them in your creations.

Both would be divided into five main categories:

  1. Developer Tools
    • Developer Assistant, Vagrant, Docker, …
    • What tool could help you to develop?
  2. Technology
    • Python, Ruby, Perl, PHP, …
    • Which technology should you use?
  3. Deployment
    • Copr, Docker, Openshift, …
    • How to get it running and distribute it to users?
  4. Docker Images and Vagrant Boxes
    • Virtual environments based on Fedora
  5. Blogs

Each section about every project would explain WHAT the project is about and HOW to use it/get it running. If there are some differences between the packaged version and upstream, it will explain what they are and why is that. It may also provide some examples or links to other useful resources.

The whole idea about this project is to provide a single place for new or existing Fedora developers that would help them to discover new projects and features they didn’t know before and to provide them with information about how things are packaged and how to use them on Fedora.

Have a look at the project’s wiki page: https://fedoraproject.org/wiki/Websites/Developer

Any ideas, opinions and feedback are welcome! Just leave a comment here. I’m looking forward to hearing from you!