From owner-freebsd-hackers@freebsd.org Sun Apr 2 20:12:14 2017 Return-Path: Delivered-To: freebsd-hackers@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 50668D2B7DB for ; Sun, 2 Apr 2017 20:12:14 +0000 (UTC) (envelope-from kneit@pdx.edu) Received: from mail-pg0-x244.google.com (mail-pg0-x244.google.com [IPv6:2607:f8b0:400e:c05::244]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 25D2D2A5 for ; Sun, 2 Apr 2017 20:12:13 +0000 (UTC) (envelope-from kneit@pdx.edu) Received: by mail-pg0-x244.google.com with SMTP id g2so25203692pge.2 for ; Sun, 02 Apr 2017 13:12:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pdx-edu.20150623.gappssmtp.com; s=20150623; h=to:from:subject:message-id:date:user-agent:mime-version; bh=ZM5mYF00R5y79kbiB6rIZFiR0mooinUkTxTQ5ngq/Mc=; b=fUO3p9qa0+wm7kEqYRC1kulMac0A/MkmQbIRKu05BNdivD++bG1WYAysCWyaXXJ8nh 4nZ4R8G/IBCNQATHJey4wDNku/ZGEQDSOWHhysv+TWuEt24fJTT2K2U2CMFdsUpGqu02 OLu/jiARNyOjUcdoYUkeFP9ly4Cwf11hoG3UAoOn6Ao8I+2wPqd6VVBe+6/hF6PUEej7 HEPKpGWRM1ptEB+OEENDVp7P5qxr0NqQ5GPtTNPjQF4lYTb1EWi9c18gKTV4wU6Z0/iB HgHw1oeKuKFFcXP0SZ61G8cVkT9ixpoX/caEsZGH67rLZJk4aAmdELmRAPPGxiBFNlvl 9Ryg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:to:from:subject:message-id:date:user-agent :mime-version; bh=ZM5mYF00R5y79kbiB6rIZFiR0mooinUkTxTQ5ngq/Mc=; b=suI/Tv4vPfj1QqnKUv4bzBlukY+WnqnouP9wE/XIC5Yr1d8yBlH4eybLQkoPLB81EV lB1Nq0gsle4HAj+Ev4e/zvHPD66Ob3h0pDpoj9/JNiFRHU9rdLa3c7KJIn9E/H8eJtjx Sc1vsUuxQ4TymqvJZxM2g93fPTNikYsfDj5RgGemFBNEzwQ9cIsHuu+3oRmtexwKIz5n M0ZFwNDTAHolu6FK2tHeCScfxXvo//ZHkD9QVsldthZI5whvhA9cKlEXPW1KO0CxCiYv ENEjin+8iRfgw4zfggO4ScdX4hcoh47ztSxUqyfIlLcUiRMETUWu2cQqNSnX6FaqAU7/ CzYg== X-Gm-Message-State: AFeK/H1EwW3qOKzc+HXjh9t/QKKsXvhawA0D9N6S+oRLYTA9NcglcpNiljBV0Mu7Kl1RWv/l X-Received: by 10.99.151.18 with SMTP id n18mr2767597pge.199.1491163933087; Sun, 02 Apr 2017 13:12:13 -0700 (PDT) Received: from ?IPv6:2601:1c2:1302:6d10::8? ([2601:1c2:1302:6d10::8]) by smtp.gmail.com with ESMTPSA id t6sm21543938pgo.42.2017.04.02.13.12.12 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 02 Apr 2017 13:12:12 -0700 (PDT) To: freebsd-hackers@freebsd.org From: Kyle Kneitinger Subject: GSoC 2017: Introduction and Draft Proposal [beadm replacement] Message-ID: <3a191979-d925-c7bd-0de5-389d82abb21d@pdx.edu> Date: Sun, 2 Apr 2017 13:12:11 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="AiFNpH6VJWE4J6SPPvnhDCC72ms55v76h" X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 02 Apr 2017 20:12:14 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --AiFNpH6VJWE4J6SPPvnhDCC72ms55v76h Content-Type: multipart/mixed; boundary="br7Prr8V6Mgwg8vFNRDEKidWCKmwb9R1q"; protected-headers="v1" From: Kyle Kneitinger To: freebsd-hackers@freebsd.org Message-ID: <3a191979-d925-c7bd-0de5-389d82abb21d@pdx.edu> Subject: GSoC 2017: Introduction and Draft Proposal [beadm replacement] --br7Prr8V6Mgwg8vFNRDEKidWCKmwb9R1q Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello All, First, I'd like to introduce myself. I'm Kyle Kneitinger, a senior at Portland State University, in Portland, OR, US. I've been user of FreeBSD for a couple of years now, so since I finally had a summer in which my work/life/schoo= l schedule is compatible with GSoC, I was extremely pleased to browse through the FreeBSD ideas. I strongly gravitated towards the beadm replacement project. I really enj= oy writing libraries and system utilities, and the opportunity to do this fo= r something as important to me as ZFS was very appealing. I corresponded wi= th Allan Jude a few times for clarification about the intended idea and requirements, but I would like to give anyone else the opportunity to weigh in on features, clarifications, or just general feedback on my draft proposa= l. Thank you in advance, Kyle Kneitinger Google Summer of Code 2017 Proposal: A New ZFS Boot Environment Management Library & Tool For FreeBSD Student: Kyle J. Kneitinger Mentor: Allan Jude [[ contact info redacted on draft proposal ]] Synopsis The purpose of this project is to build a convenient framework for managing ZFS boot environments in =3D=3D=3D=3DSynopsis=3D=3D=3D=3D The purpose of this project is to build a convenient framework for managing ZFS boot environments in FreeBSD. Currently, boot environments are managed manually, or with scripts such as `beadm`. The approach that this projec= t will take is to first create a boot environment library to offer simplifi= ed boot environment interaction to userspace applications (for example, True= OS' SysAdm perhaps), and then write an application that provides users with a= command (tentatively referred to as `bootenvmgr` for the remainder of thi= s proposal) that retains all of the features of `beadm`, with some added functionality. Among the new features are: the ability to recursively cre= ate boot environments containing child datasets, the ability to activate an environment for the next boot only, and the ability to attach/detach a bo= ot environment to a jail. =3D=3D=3D=3DTimeline and Deliverables=3D=3D=3D=3D ----Final Deliverable---- The final deliverable is the `bootenvmgr`: a command with a superset of `beadm` features (illustrated below in the usage and clarifying examples), and the library, tentatively referred to as libzfs_bootenv that provides the features to the command, and the userspace ecosystem. $ bootenvmgr -h usage: bootenvmgr command args ... where 'command' is one of the following: activate [-t] create [-r] [-e nonActiveBe | -e bootenv@snapshot] create =E2=9F=A8beName@snapshot=E2=9F=A9 destroy [-F] [bootenv|bootenv@snapshot]* list [-a] [-D] [-H] [-s] rename mount [mountpoint] unmount|umount [-f] jail unjail Each bootenv is a name of a dataset in (or to be created in $POOLNAME/bootenv/ Examples illustrating optional arguments and flags that extend from `bead= m`: -- `bootenvmgr create -r foo` recursively creates a boot environment of= / -- `bootenvmgr activate -t foo` uses the zpool_nextboot function (originally implemented for `zfsbootcfg`) to boot into the foo environment on the next boot only. -- `bootenvmgr jail bars foo` attaches the foo boot environment to the jail named bars. See `man beadm` for extended descriptions of remaining options ----Milestones---- *May 4 - May 30, 2017: Community Bonding Period* Tasks: -- In addition to all usual community bonding tasks, solicit feedback f= rom users of boot environments and `beadm` on features and user experien= ce of the command. -- Replicate various boot environment use cases. Deliverables: -- All items on FreeBSD GSoC Student Checklist Community Bonding sectio= n completed (accounts, pages, repos, etc. created). -- Final requirements solidified in the form of a preliminary man page.= *May 30 - June 30, 2017: By 1st Evaluation* Note: My University is on a term-based system as opposed to semesters, and therefore I am still in classes for the first 2 weeks of June Focus: Design and research. Tasks: -- Prototype recursive boot environment mechanics. -- Craft detailed design. -- Begin Coding library component. Deliverables: -- Makefile and headers for library complete. Skeleton, documented, implementation files created (and if time permits, coding has begun)= =2E *June 30 - July 28, 2017: By 2nd Evaluation* Focus: Completion of library, design of user command. Tasks: -- Complete library implementation. -- Complete all non-functional requirements for library (developer documentation, testing). -- Create detailed design of user command. Deliverables: -- Completed library implementation and documentation. -- User command headers, Makefile, and Skeleton implementation file. *June 28 - August 29, 2017: By Code Submission and Final Evaluation* Focus: Completion of user command Deliverables: -- User command, updated manpage, and thus all project requirements =3D=3D=3D=3DAbout Me & Experience=3D=3D=3D=3D I am currently a Senior at Portland State University in Portland, OR, US,= focusing my studies on operating systems, language design and implementat= ion (especially grammars and parsers), and when the opportunity arises, digit= al music creation. I believe to some extent, my dedication to school is a la= rge factor in why I use FreeBSD on my personal computers, as I wouldn't trust= my in-progress assignments to anything else. With my free time I enjoy playing music, gardening, creating software synthesizers and hardware to control them, hiking, and going to the various OSS events and meetups that I am fortunate enough to live near. Throughout my studies over the past three years, I had the opportunity to grow as a developer in ways both conceptually and practically. In the context = of this project, I would say my most relevant experiences have been my time = as team lead on one of the CS program's final projects, my time participating in an 18-month cooperative learning program with 3 different companies, and = of course, some of my open source work. ---Senior Project Team Lead--- I led a team of 6 other students through our task of reimplementing the Cairo vector graphics library in rust, with Cairo's creator, Carl Worth, as the= project sponsor. This was an invaluable experience that allowed my team and I to grow as developers, communicators, and collaborators. We focused heavily= on design, with the main goal of creating an interface that is familiar and comfortable to those with experience using Cairo, balanced with crafting = an idiomatic, 'rustic', feel to those who write a lot of rust. In the 14 we= eks we had, we surpassed all goals and stretch goals defined by Mr. Worth. T= he academic project wrapped up just a week and half before the writing of th= is proposal, and now myself and a subset of the team are working on outreach and infrastructure to turn this into an educational open source project for n= ew developers, or just those new to rust programming. ---Cooperative Education Program--- I am a month away from completing my 18 months of my participation in Portland State University's PCEP (PSU/Portland Cooperative Education Program). Through this program I worked 20-hours a week at 3 different Portland-based tech companies in three different roles: Quality Engineer, Developer, and DevO= ps Engineer. [[ JOB DETAILS REDACTED FOR DRAFT PROPOSAL ]] ---Open Source--- -- i3wm window manager: Numerous bug fixes in the configuration file parser's handling of variables, documentation corrections, a new feature to allow the passing of a new config file path on soft reloads.=20 Technologies and themes: c, perl, yacc, flex, domain-specific languages, user documentation. -- liblo lightweight OSC (Open Sound Control) library: participated in discussion and drafted proof of concept code to implement a feature for control path discovery. Technologies and themes: c, networking, UDP, API design. -- stk Synthesis Toolkit library: Updates to Makefile after update brok= e compatibility with certain distributions. Technologies and themes: Makefiles, build tools. ---Personal Open Source Projects--- -- RPiShift: A python module for interfacing a Raspberry Pi with an HC5= 95 shift register. Provides simplified API, as well as advanced interaction. Technologies and themes: Python, hardware, documentation, packaging.= -- markoff/slackov/gramov: A library for simple novelty text generation from an updatable corpus and Markov chains, and 2 example applications for popular messaging services. Technologies and themes: Python, API design, API use, packaging. --br7Prr8V6Mgwg8vFNRDEKidWCKmwb9R1q-- --AiFNpH6VJWE4J6SPPvnhDCC72ms55v76h Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQFCBAEBCAAsFiEEJGjKTob84Jt6mBwZrtJnrVK0txEFAljhWxsOHGtuZWl0QHBk eC5lZHUACgkQrtJnrVK0txHZNQf+IA9Jje840BI7IbtsKkQjPmg7NCQFzQeShQod ThY4AY1Ysn8YSnHA0HMY8jQKTErhg6R8Z8mbeA0AmBda6HahFREN9S48hqmGnOme TStmtHZJAJ6elIcK1eX1qIIAtP+2iUR8IRBQF6WHHZ+e3GPdo7/3wR1Y6LCEtwMq 45tLctA5xMGTgDJGK0wn15PplbPEYWsflwjyV16+4u8ko6DBOgR2NdHXYET3UAqs /rCmk7F3J5yKWMqEFuN3oBRlZ1DeT9D0dKn8M2sKnlvzgxsqu3Xq+FyOQ4EIp3TA /Ni1VbiZV6Sa3eBWPrYOnHaay6yUfuZcBl1nbT16nDA57jbeXA== =UmOk -----END PGP SIGNATURE----- --AiFNpH6VJWE4J6SPPvnhDCC72ms55v76h--