Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 2 Apr 2017 13:12:11 -0700
From:      Kyle Kneitinger <kneit@pdx.edu>
To:        freebsd-hackers@freebsd.org
Subject:   GSoC 2017: Introduction and Draft Proposal [beadm replacement]
Message-ID:  <3a191979-d925-c7bd-0de5-389d82abb21d@pdx.edu>

next in thread | raw e-mail | index | archive | help
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
--AiFNpH6VJWE4J6SPPvnhDCC72ms55v76h
Content-Type: multipart/mixed; boundary="br7Prr8V6Mgwg8vFNRDEKidWCKmwb9R1q";
 protected-headers="v1"
From: Kyle Kneitinger <kneit@pdx.edu>
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] <bootenv>
          create [-r] [-e nonActiveBe | -e bootenv@snapshot] <bootenv>
                    create  =E2=9F=A8beName@snapshot=E2=9F=A9
          destroy [-F] <bootenv|bootenv@snapshot>
[bootenv|bootenv@snapshot]*
          list [-a] [-D] [-H] [-s]
          rename <bootenv> <bootenv>
          mount <bootenv> [mountpoint]
          unmount|umount [-f] <bootenv>
          jail <jailid|jailname> <bootenv>
          unjail <jailid|jailname> <bootenv>

  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--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3a191979-d925-c7bd-0de5-389d82abb21d>