Lessons Learned from Growing an Open Source Project Too Fast
Drudge Bot last edited by
Focusing on teamwork is important to open source projects. :undefined:“:undefined:It:undefined:’:undefined:s a collaborative effort,:undefined:”:undefined: says Matt Butcher.
Are you managing an open source project or considering launching one? If so, it may come as a surprise that one of the challenges you can face is rapid growth. Matt Butcher, Principal Software Development Engineer at Microsoft, addressed this issue in a presentation at Open Source Summit North America. His talk covered everything from teamwork to the importance of knowing your goals and sticking to them.
Butcher is no stranger to managing open source projects. AsMicrosoft invests more deeply into open source, Butcher has been involved with many projects, including toolkits for Kubernetes and QueryPath, the jQuery-like library for PHP.
Butcher described a case study involving Kubernetes Helm, a package system for Kubernetes. Helm arose from a company team-building hackathon, with an original team of three people giving birth to it. Within 18 months, the project had hundreds of contributors and thousands of active users.
:undefined:“:undefined:We were stretched to our limits as we learned to grow,:undefined:”:undefined: Butcher said. :undefined:“:undefined:When you:undefined:’:undefined:re trying to set up your team of core maintainers and they:undefined:’:undefined:re all trying to work together, you want to spend some actual time trying to optimize for a process that lets you be cooperative. You have to adjust some expectations regarding how you treat each other. When you:undefined:’:undefined:re working as a group of open source collaborators, the relationship is not employer/employee necessarily. It:undefined:’:undefined:s a collaborative effort.:undefined:”:undefined:
In addition to focusing on the right kinds of teamwork, Butcher and his collaborators learned that managing governance and standards is an ongoing challenge. :undefined:“:undefined:You want people to understand who makes decisions, how they make decisions and why they make the decisions that they make,:undefined:”:undefined: he said. :undefined:“:undefined:When we were a small project, there might have been two paragraphs in one of our documents on standards, but as a project grows and you get growing pains, these documented things gain a life of their own. They get their very own repositories, and they just keep getting bigger along with the project.:undefined:”:undefined:
Should all discussion surrounding a open source project go on in public, bathed in the hot lights of community scrutiny? Not necessarily, Butcher noted. :undefined:“:undefined:A minor thing can get blown into catastrophic proportions in a short time because of misunderstandings and because something that should have been done in private ended up being public,:undefined:”:undefined: he said. :undefined:“:undefined:Sometimes we actually make architectural recommendations as a closed group. The reason we do this is that we don:undefined:’:undefined:t want to miscue the community. The people who are your core maintainers are core maintainers because they:undefined:’:undefined:re experts, right? These are the people that have been selected from the community because they understand the project. They understand what people are trying to do with it. They understand the frustrations and concerns of users.:undefined:”:undefined:
Butcher added that it is essential to acknowledge people:undefined:’:undefined:s contributions to keep the environment surrounding a fast-growing project from becoming toxic. :undefined:“:undefined:We actually have an internal rule in our core maintainers guide that says, :undefined:‘:undefined:Make sure that at least one comment that you leave on a code review, if you:undefined:’:undefined:re asking for changes, is a positive one,:undefined:”:undefined: he said. :undefined:“:undefined:It sounds really juvenile, right? But it serves a specific purpose. It lets somebody know, :undefined:‘:undefined:I acknowledge that you just made a gift of your time and your resources.:undefined:”:undefined:
Want more tips on successfully launching and managing open source projects? Stay tuned for more insight from Matt Butcher:undefined:’:undefined:s talk, in which he provides specific project management issues faced by Kubernetes Helm.
For more information, be sure to check outThe Linux Foundation:undefined:’:undefined:s growing list of Open Source Guides for the Enterprise, covering topics such as starting an open source project, improving your open source impact, and participating in open source communities.
The postLessons Learned from Growing an Open Source Project Too Fast appeared first onThe Linux Foundation.
Make ISO from DVD
In this case I had an OS install disk which was required to be on a virtual node with no optical drive, so I needed to transfer an image to the server to create a VM
Find out which device the DVD is:lsblk
Output:NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 465.8G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 464.8G 0 part ├─centos-root 253:0 0 50G 0 lvm / ├─centos-swap 253:1 0 11.8G 0 lvm [SWAP] └─centos-home 253:2 0 403G 0 lvm /home sdb 8:16 1 14.5G 0 disk /mnt sr0 11:0 1 4.1G 0 rom /run/media/rick/CCSA_X64FRE_EN-US_DV5
Therefore /dev/sr0 is the location , or disk to be made into an ISO
I prefer simplicity, and sometimes deal with the fallout after the fact, however Ive repeated this countless times with success.dd if=/dev/sr0 of=win10.iso
Where if=Input file and of=output file
I chill out and do something else while the image is being copied/created, and the final output:8555456+0 records in 8555456+0 records out 4380393472 bytes (4.4 GB) copied, 331.937 s, 13.2 MB/s
Recreate postrgresql database template encode to ASCIIUPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';
Now we can drop it:DROP DATABASE template1;
Create database from template0, with a new default encoding:CREATE DATABASE template1 WITH TEMPLATE = template0 ENCODING = 'UNICODE'; UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1'; \c template1 VACUUM FREEZE;