public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-dev] College Course in Gentoo Development
@ 2012-12-17 15:32 Anthony G. Basile
  2012-12-17 16:02 ` Rick "Zero_Chaos" Farina
                   ` (7 more replies)
  0 siblings, 8 replies; 20+ messages in thread
From: Anthony G. Basile @ 2012-12-17 15:32 UTC (permalink / raw
  To: gentoo-dev

Hi everyone,

Give the talk on the list about attracting devs, I've should probably 
mention that I'm teaching a College Course on Gentoo Development next 
semester.  I know two students will most likely go through the 
recruitment process, others may at least contribute.  So its like GSoC 
but the focus is not one project but an overview of general gentoo 
development, and I will have to touch on lots of stuff outside of gentoo 
per se, like how autotools and other build systems work.

So what should I teach?  Here's what I've got off the top of my head:

1. Open source communities and Gentoo's internal political structure.

2. Building a gentoo system, ie the handbook.  Gentoo as metadistribution.

3. Delivering the goods: code -> build system -> portage -> compiled 
goodies -> working system

4. How to work with gnu autotools.  Writing a build system.

5.  How to write ebuilds, ie the dev manual.  How to work with cvs and git.

6. Arches, arch testing.  Profiles.

7. Building stages.  Catalyst.

Somewhere in there I'll squeeze in Gentoo's "alt" factor: alternative c 
libs, alternative compilers and hardening, alternative kernels, prefixes.

Please comment.  If it gets systematized enough, it can be a guide to 
future devs too.  Everything will be creative commons.

-- 
Anthony G. Basile, Ph.D.
Gentoo Linux Developer [Hardened]
E-Mail    : blueness@gentoo.org
GnuPG FP  : 8040 5A4D 8709 21B1 1A88  33CE 979C AF40 D045 5535
GnuPG ID  : D0455535



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [gentoo-dev] College Course in Gentoo Development
  2012-12-17 15:32 [gentoo-dev] College Course in Gentoo Development Anthony G. Basile
@ 2012-12-17 16:02 ` Rick "Zero_Chaos" Farina
  2012-12-17 18:09   ` Roy Bamford
                     ` (2 more replies)
  2012-12-17 16:48 ` "Paweł Hajdan, Jr."
                   ` (6 subsequent siblings)
  7 siblings, 3 replies; 20+ messages in thread
From: Rick "Zero_Chaos" Farina @ 2012-12-17 16:02 UTC (permalink / raw
  To: gentoo-dev

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 12/17/2012 10:32 AM, Anthony G. Basile wrote:
> Hi everyone,
> 
> Give the talk on the list about attracting devs, I've should probably
> mention that I'm teaching a College Course on Gentoo Development next
> semester.  I know two students will most likely go through the
> recruitment process, others may at least contribute.  So its like GSoC
> but the focus is not one project but an overview of general gentoo
> development, and I will have to touch on lots of stuff outside of gentoo
> per se, like how autotools and other build systems work.
> 
> So what should I teach?  Here's what I've got off the top of my head:
> 
> 1. Open source communities and Gentoo's internal political structure.
> 
> 2. Building a gentoo system, ie the handbook.  Gentoo as metadistribution.
> 
> 3. Delivering the goods: code -> build system -> portage -> compiled
> goodies -> working system
> 
> 4. How to work with gnu autotools.  Writing a build system.
> 
> 5.  How to write ebuilds, ie the dev manual.  How to work with cvs and git.
> 
> 6. Arches, arch testing.  Profiles.
> 
> 7. Building stages.  Catalyst.
> 
> Somewhere in there I'll squeeze in Gentoo's "alt" factor: alternative c
> libs, alternative compilers and hardening, alternative kernels, prefixes.
> 
> Please comment.  If it gets systematized enough, it can be a guide to
> future devs too.  Everything will be creative commons.
> 
Can I take this course online? Will the lectures be recorded?

- -ZC
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)
Comment: Using GnuPG with undefined - http://www.enigmail.net/

iQIcBAEBAgAGBQJQz0IQAAoJEKXdFCfdEflKikMP/iXGzyM1Bda1hfWa8L9Iby8e
kpRee1N/7+QpjZB/caDVzNm5CWEJn3Vs2LP71Ig/Ybve41EvqGJXGfBDAbF7cfIb
d6kXZqgPfKj480TT2toUAY/fIji3jbmrPxrTYBXigDsIcUxrpiMykgQMifW4esK/
1ZddA5UCI8LQxIjrDDItVQL88PMz7vSBQqgJvobXAPEdHG/xDXLUews4UsgN6z7c
F95220G2DmaPzxnITIuJfFQ1sui1ahkHJRLr4uz1e8BMFcnCbWJOFsQAqNvX8YZV
iAcb4HHTC6EXD5MUKF+OGv+sy1PJy8f4G7/cnERJxdADdyZkOUj8HQGEnuY3znt+
nbvSoCQVGAEkdm0mQY6x7kbZDzQhvztvrP2ovMCLz9FPzai+wcWQ07d00nbQd17v
mUPntVXSYKsXKg+hTPj1rGzh3Nu9zGcw7mwtJwH/z0J3sqPJRSlp88KCWIOP7bro
J+7trObO8c9GYQK6JVAFL7sxBQct9vBO4DETOJ6XxMG7lJ89GLA/zdSIBWbvWPZf
GZ+Z3+ohV//Bf9I28S5AeRVczBdAE13EFUj7VcvsRYTMkTgawHo3jQtU+gzRHfhk
H/16vCDoZ511F4wu4PF9zKWuffiVy25y0PLPewbwlPbvPwAIWiK4hsGt87t2mckr
cerDzNSNBYf9NfbHiMe7
=7Vnh
-----END PGP SIGNATURE-----


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [gentoo-dev] College Course in Gentoo Development
  2012-12-17 15:32 [gentoo-dev] College Course in Gentoo Development Anthony G. Basile
  2012-12-17 16:02 ` Rick "Zero_Chaos" Farina
@ 2012-12-17 16:48 ` "Paweł Hajdan, Jr."
  2012-12-18  7:51   ` [gentoo-dev] " Duncan
  2012-12-17 17:23 ` [gentoo-dev] " Ian Stakenvicius
                   ` (5 subsequent siblings)
  7 siblings, 1 reply; 20+ messages in thread
From: "Paweł Hajdan, Jr." @ 2012-12-17 16:48 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 771 bytes --]

On 12/17/12 7:32 AM, Anthony G. Basile wrote:
> So what should I teach?  Here's what I've got off the top of my head:
> Please comment.  If it gets systematized enough, it can be a guide to
> future devs too.  Everything will be creative commons.

I think it's worth to mention somewhere that although packages take
longer to compile than downloading binaries, people don't have to
_watch_ the compilation, and many things can be done e.g. overnight.

Also, remember that Google's ChromeOS takes a lot of things from Gentoo,
including the package manager and many ebuilds. The idea here is that it
has applications in the industry.

Oh, unbundling libraries _might_ be valuable too. Or automagic
dependencies and other such packaging issues.

Paweł



[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 203 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [gentoo-dev] College Course in Gentoo Development
  2012-12-17 15:32 [gentoo-dev] College Course in Gentoo Development Anthony G. Basile
  2012-12-17 16:02 ` Rick "Zero_Chaos" Farina
  2012-12-17 16:48 ` "Paweł Hajdan, Jr."
@ 2012-12-17 17:23 ` Ian Stakenvicius
  2012-12-17 18:05   ` Anthony G. Basile
  2012-12-17 18:11 ` Maxim Kammerer
                   ` (4 subsequent siblings)
  7 siblings, 1 reply; 20+ messages in thread
From: Ian Stakenvicius @ 2012-12-17 17:23 UTC (permalink / raw
  To: gentoo-dev

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

On 17/12/12 10:32 AM, Anthony G. Basile wrote:
> Hi everyone,
> 
> Give the talk on the list about attracting devs, I've should
> probably mention that I'm teaching a College Course on Gentoo
> Development next semester.  I know two students will most likely go
> through the recruitment process, others may at least contribute.
> So its like GSoC but the focus is not one project but an overview
> of general gentoo development, and I will have to touch on lots of
> stuff outside of gentoo per se, like how autotools and other build
> systems work.
> 
> So what should I teach?  Here's what I've got off the top of my
> head:
> 
> 1. Open source communities and Gentoo's internal political
> structure.
> 
> 2. Building a gentoo system, ie the handbook.  Gentoo as
> metadistribution.
> 
> 3. Delivering the goods: code -> build system -> portage ->
> compiled goodies -> working system
> 
> 4. How to work with gnu autotools.  Writing a build system.
> 
> 5.  How to write ebuilds, ie the dev manual.  How to work with cvs
> and git.
> 

"5.5:  BUGS"

Very appropriate here to include somewhere (perhaps as a precursor to
#4 or as part of #5) how to (A) generate useful patches, (B) apply
patches for testing (overlay ebuild, epatch_user, etc), (C) use
bugzilla (useful submissions, bug-wrangling, herds).  QA related
issues would be good to deal with, also (maybe under arch testing in
#6?).  IE: missing dependencies, automagic dependencies, --as-needed
failures, etc. etc.


> 6. Arches, arch testing.  Profiles.
> 
> 7. Building stages.  Catalyst.
> 
> Somewhere in there I'll squeeze in Gentoo's "alt" factor:
> alternative c libs, alternative compilers and hardening,
> alternative kernels, prefixes.
> 
> Please comment.  If it gets systematized enough, it can be a guide
> to future devs too.  Everything will be creative commons.
> 

The exam isn't going to be the ebuild quiz, is it? :)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)

iF4EAREIAAYFAlDPVP0ACgkQ2ugaI38ACPBxNQD/RvBkMHaJiwds7HpLUXnocWUi
cKXoBLfTMzeWPuVaV7QA/A3tWYw7FSTK6TCMEI68c3INcrFEF5jqjKlXha7rzq0s
=igjU
-----END PGP SIGNATURE-----


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [gentoo-dev] College Course in Gentoo Development
  2012-12-17 17:23 ` [gentoo-dev] " Ian Stakenvicius
@ 2012-12-17 18:05   ` Anthony G. Basile
  0 siblings, 0 replies; 20+ messages in thread
From: Anthony G. Basile @ 2012-12-17 18:05 UTC (permalink / raw
  To: gentoo-dev

On 12/17/2012 12:23 PM, Ian Stakenvicius wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
> On 17/12/12 10:32 AM, Anthony G. Basile wrote:
>> Hi everyone,
>>
>>
>> 5.  How to write ebuilds, ie the dev manual.  How to work with cvs
>> and git.
>>
> "5.5:  BUGS"
>
> Very appropriate here to include somewhere (perhaps as a precursor to
> #4 or as part of #5) how to (A) generate useful patches, (B) apply
> patches for testing (overlay ebuild, epatch_user, etc), (C) use
> bugzilla (useful submissions, bug-wrangling, herds).  QA related
> issues would be good to deal with, also (maybe under arch testing in
> #6?).  IE: missing dependencies, automagic dependencies, --as-needed
> failures, etc. etc.

Yes!  Definitely.


-- 
Anthony G. Basile, Ph.D.
Gentoo Linux Developer [Hardened]
E-Mail    : blueness@gentoo.org
GnuPG FP  : 8040 5A4D 8709 21B1 1A88  33CE 979C AF40 D045 5535
GnuPG ID  : D0455535



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [gentoo-dev] College Course in Gentoo Development
  2012-12-17 16:02 ` Rick "Zero_Chaos" Farina
@ 2012-12-17 18:09   ` Roy Bamford
  2012-12-17 18:13     ` Michael Mol
  2012-12-17 19:56   ` Hinnerk van Bruinehsen
  2012-12-17 21:36   ` Michael Hampicke
  2 siblings, 1 reply; 20+ messages in thread
From: Roy Bamford @ 2012-12-17 18:09 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 526 bytes --]

On 2012.12.17 16:02, Rick "Zero_Chaos" Farina wrote:
> On 12/17/2012 10:32 AM, Anthony G. Basile wrote:
> > Hi everyone,
> >
> > Give the talk on the list about attracting devs, I've should
> > probably mention that I'm teaching a College Course on Gentoo 
> > Development
[snip]

> Can I take this course online? Will the lectures be recorded?
> 
> -ZC
> 

I would be interested in an online version too.

-- 
Regards,

Roy Bamford
(Neddyseagoon) a member of
elections
gentoo-ops
forum-mods
trustees

[-- Attachment #2: Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [gentoo-dev] College Course in Gentoo Development
  2012-12-17 15:32 [gentoo-dev] College Course in Gentoo Development Anthony G. Basile
                   ` (2 preceding siblings ...)
  2012-12-17 17:23 ` [gentoo-dev] " Ian Stakenvicius
@ 2012-12-17 18:11 ` Maxim Kammerer
  2012-12-17 18:18   ` hasufell
  2012-12-18  0:46   ` Anthony G. Basile
  2012-12-17 18:14 ` hasufell
                   ` (3 subsequent siblings)
  7 siblings, 2 replies; 20+ messages in thread
From: Maxim Kammerer @ 2012-12-17 18:11 UTC (permalink / raw
  To: gentoo-dev

On Mon, Dec 17, 2012 at 5:32 PM, Anthony G. Basile <blueness@gentoo.org> wrote:
> Please comment.  If it gets systematized enough, it can be a guide to future
> devs too.

Hi, what is the level of the students, what are the prerequisites
(i.e., have they already seen some systems programming using C?), and
how many weekly hours? Have you already designed some assignments? I
can think of the following:

1. Create a small makefile-based project with a separate shared
library, an executable, and a man page. Determine run-time and
build-time dependencies. Then convert to autotools, update
dependencies. Do it all on GitHub, with a separate branch for
converting to autotools.

2. Write an ebuild for the project above, maintained in an overlay
(also on GitHub), with sources fetched from GitHub. Add some small
patch to configure.ac in the ebuild. Add USE flags. Add "make check"
support to the build system, test with FEATURES=test. Many
ebuild-related tasks can be easily added (e.g. installing init.d
scripts).

3. Take an old-version ebuild for a project with a known bug, fetch
the relevant git tag, and bisect to find the bug. Prepare a patch,
describe patch submission process.

Wrt. subjects covered, will you cover sandboxing, installing to image
vs. merging to live system, etc.? I would expect students to like such
stuff.

-- 
Maxim Kammerer
Liberté Linux: http://dee.su/liberte


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [gentoo-dev] College Course in Gentoo Development
  2012-12-17 18:09   ` Roy Bamford
@ 2012-12-17 18:13     ` Michael Mol
  0 siblings, 0 replies; 20+ messages in thread
From: Michael Mol @ 2012-12-17 18:13 UTC (permalink / raw
  To: gentoo-dev

On Mon, Dec 17, 2012 at 1:09 PM, Roy Bamford <neddyseagoon@gentoo.org> wrote:
> On 2012.12.17 16:02, Rick "Zero_Chaos" Farina wrote:
>> On 12/17/2012 10:32 AM, Anthony G. Basile wrote:
>> > Hi everyone,
>> >
>> > Give the talk on the list about attracting devs, I've should
>> > probably mention that I'm teaching a College Course on Gentoo
>> > Development
> [snip]
>
>> Can I take this course online? Will the lectures be recorded?
>>
>> -ZC
>>
>
> I would be interested in an online version too.

As would I.

(I'd also be very interested in seeing the structure duplicated to
produce similar material for other common distributions...but I'm a
chrestomathy addict.)

--
:wq


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [gentoo-dev] College Course in Gentoo Development
  2012-12-17 15:32 [gentoo-dev] College Course in Gentoo Development Anthony G. Basile
                   ` (3 preceding siblings ...)
  2012-12-17 18:11 ` Maxim Kammerer
@ 2012-12-17 18:14 ` hasufell
  2012-12-17 18:24 ` Ciaran McCreesh
                   ` (2 subsequent siblings)
  7 siblings, 0 replies; 20+ messages in thread
From: hasufell @ 2012-12-17 18:14 UTC (permalink / raw
  To: gentoo-dev

> 
> 4. How to work with gnu autotools.  Writing a build system.

Writing a build system from scratch is actually not a requirement.
However one should understand basics of the most popular build systems
and probably have some advanced understaning of Makefiles and how flags
work, where they should be placed and so on which leads me to what you'v
been missing a bit:

QA

Why we do it and what the most common QA issues are (things like
disrespected CFLAGS/CC/LDFLAGS, bundled libs, broken parallel make,
portage QA notices (i.e. broken strict-aliasing), automagic dependencies
and so on).

That's what seperates us from many other distros.

> 
> 5.  How to write ebuilds, ie the dev manual.  How to work with cvs and git.

a few more specific thoughts on this...

IMO one of the more important points of writing ebuilds is to figure out
the dependencies correctly and how to implement use flags properly.
So figuring out dependencies usually involves reading the build system
and might even involve grepping/reading source files for includes/dlopen
or language specific things (note the differences in ruby, perl and
python...), cause assuming that the information from upstreams
INSTALL/README file suffices is almost always wrong.
Regarding useflags it's important to a) decide whether it makes sense to
offer that useflag/choice at all, b) what name to choose, so we don't
confuse the user, c) give descriptions in metadata.xml if the usecase
differs from the global description and d) test them all (which leads us
to point 6)

And that's exactly how I usually begin writing an ebuild:
- figure out all dependencies
- figure out what useflags to provide and how to implement them
- fix QA issues/patch the build system

Then the next thing is just understanding phase functions and the
regular helpers like econf/cmake-utils.eclass/eutils.eclass which you
can read up quite easily.

I would probably leave a few things behind like java ebuilds, ruby
ebuilds or even python ebuilds (due to the current eclass
conversion/confusion) and focus on autotools, cmake and plain Makefile
related things.

Give a few good and bad examples for each of them, so people understand
that every build system can be messed up.



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [gentoo-dev] College Course in Gentoo Development
  2012-12-17 18:11 ` Maxim Kammerer
@ 2012-12-17 18:18   ` hasufell
  2012-12-17 20:39     ` Maxim Kammerer
  2012-12-18  0:46   ` Anthony G. Basile
  1 sibling, 1 reply; 20+ messages in thread
From: hasufell @ 2012-12-17 18:18 UTC (permalink / raw
  To: gentoo-dev

On 12/17/2012 07:11 PM, Maxim Kammerer wrote:
> Then convert to autotools, update
> dependencies. Do it all on GitHub, with a separate branch for
> converting to autotools.
> 

That's not really a common thing to do for ebuild development (neither
converting nor writing from scratch).

Actually you only do that if you have direct access to the upstream repo
or know that they will accept your patch.

That happened only once to me.


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [gentoo-dev] College Course in Gentoo Development
  2012-12-17 15:32 [gentoo-dev] College Course in Gentoo Development Anthony G. Basile
                   ` (4 preceding siblings ...)
  2012-12-17 18:14 ` hasufell
@ 2012-12-17 18:24 ` Ciaran McCreesh
  2012-12-17 21:34 ` Michael Orlitzky
  2012-12-18  9:36 ` Richard Yao
  7 siblings, 0 replies; 20+ messages in thread
From: Ciaran McCreesh @ 2012-12-17 18:24 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 345 bytes --]

On Mon, 17 Dec 2012 10:32:03 -0500
"Anthony G. Basile" <blueness@gentoo.org> wrote:
> 5.  How to write ebuilds, ie the dev manual.  How to work with cvs
> and git.

An important thing to teach here is how to code to a spec vs how to
code to an implementation. It's also something people should know in
general...

-- 
Ciaran McCreesh

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [gentoo-dev] College Course in Gentoo Development
  2012-12-17 16:02 ` Rick "Zero_Chaos" Farina
  2012-12-17 18:09   ` Roy Bamford
@ 2012-12-17 19:56   ` Hinnerk van Bruinehsen
  2012-12-17 21:36   ` Michael Hampicke
  2 siblings, 0 replies; 20+ messages in thread
From: Hinnerk van Bruinehsen @ 2012-12-17 19:56 UTC (permalink / raw
  To: gentoo-dev

On Mon, Dec 17, 2012 at 11:02:24AM -0500, Rick "Zero_Chaos" Farina wrote:
<SNIP>
> Can I take this course online? Will the lectures be recorded?
> 
I would second the idea of an "online course" if that is possible: I
would even gladly do the "beta testing" of such an online course... ;)

WKR

Hinnerk


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [gentoo-dev] College Course in Gentoo Development
  2012-12-17 18:18   ` hasufell
@ 2012-12-17 20:39     ` Maxim Kammerer
  0 siblings, 0 replies; 20+ messages in thread
From: Maxim Kammerer @ 2012-12-17 20:39 UTC (permalink / raw
  To: gentoo-dev

On Mon, Dec 17, 2012 at 8:18 PM, hasufell <hasufell@gentoo.org> wrote:
> On 12/17/2012 07:11 PM, Maxim Kammerer wrote:
>> Then convert to autotools, update
>> dependencies. Do it all on GitHub, with a separate branch for
>> converting to autotools.
>
> That's not really a common thing to do for ebuild development (neither
> converting nor writing from scratch).

These are proposed course assignments (supposed to cover understanding
of certain subjects), not a training for writing ebuilds. :)

-- 
Maxim Kammerer
Liberté Linux: http://dee.su/liberte


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [gentoo-dev] College Course in Gentoo Development
  2012-12-17 15:32 [gentoo-dev] College Course in Gentoo Development Anthony G. Basile
                   ` (5 preceding siblings ...)
  2012-12-17 18:24 ` Ciaran McCreesh
@ 2012-12-17 21:34 ` Michael Orlitzky
  2012-12-18  9:36 ` Richard Yao
  7 siblings, 0 replies; 20+ messages in thread
From: Michael Orlitzky @ 2012-12-17 21:34 UTC (permalink / raw
  To: gentoo-dev

On 12/17/2012 10:32 AM, Anthony G. Basile wrote:
> Hi everyone,
> 
> Give the talk on the list about attracting devs, I've should probably 
> mention that I'm teaching a College Course on Gentoo Development next 
> semester.  I know two students will most likely go through the 
> recruitment process, others may at least contribute.  So its like GSoC 
> but the focus is not one project but an overview of general gentoo 
> development, and I will have to touch on lots of stuff outside of gentoo 
> per se, like how autotools and other build systems work.
> 

This is a great idea, and is essentially the "pay someone to recruit"
approach taken to an extreme. I would be willing to pay for a class like
this (online or otherwise) if it meant that there were a clear set of
goals, which if met, meant that I'd become a developer.

Why can't something like this *be* the recruiting process? Put up a
syllabus. The "wait to be noticed" process is so vague as to be useless.



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [gentoo-dev] College Course in Gentoo Development
  2012-12-17 16:02 ` Rick "Zero_Chaos" Farina
  2012-12-17 18:09   ` Roy Bamford
  2012-12-17 19:56   ` Hinnerk van Bruinehsen
@ 2012-12-17 21:36   ` Michael Hampicke
  2 siblings, 0 replies; 20+ messages in thread
From: Michael Hampicke @ 2012-12-17 21:36 UTC (permalink / raw
  To: gentoo-dev

Am 17.12.2012 17:02, schrieb Rick "Zero_Chaos" Farina:
> On 12/17/2012 10:32 AM, Anthony G. Basile wrote:
>> Hi everyone,
> 
>> Give the talk on the list about attracting devs, I've should probably
>> mention that I'm teaching a College Course on Gentoo Development next
>> semester.  I know two students will most likely go through the
>> recruitment process, others may at least contribute.  So its like GSoC
>> but the focus is not one project but an overview of general gentoo
>> development, and I will have to touch on lots of stuff outside of gentoo
>> per se, like how autotools and other build systems work.
> 
>> So what should I teach?  Here's what I've got off the top of my head:
> 
>> 1. Open source communities and Gentoo's internal political structure.
> 
>> 2. Building a gentoo system, ie the handbook.  Gentoo as metadistribution.
> 
>> 3. Delivering the goods: code -> build system -> portage -> compiled
>> goodies -> working system
> 
>> 4. How to work with gnu autotools.  Writing a build system.
> 
>> 5.  How to write ebuilds, ie the dev manual.  How to work with cvs and git.
> 
>> 6. Arches, arch testing.  Profiles.
> 
>> 7. Building stages.  Catalyst.
> 
>> Somewhere in there I'll squeeze in Gentoo's "alt" factor: alternative c
>> libs, alternative compilers and hardening, alternative kernels, prefixes.
> 
>> Please comment.  If it gets systematized enough, it can be a guide to
>> future devs too.  Everything will be creative commons.
> 
> Can I take this course online? Will the lectures be recorded?
> 
> -ZC
> 

I would be interested in this course as well :)


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [gentoo-dev] College Course in Gentoo Development
  2012-12-17 18:11 ` Maxim Kammerer
  2012-12-17 18:18   ` hasufell
@ 2012-12-18  0:46   ` Anthony G. Basile
  2012-12-18  9:38     ` Richard Yao
  1 sibling, 1 reply; 20+ messages in thread
From: Anthony G. Basile @ 2012-12-18  0:46 UTC (permalink / raw
  To: gentoo-dev

On 12/17/2012 01:11 PM, Maxim Kammerer wrote:
> On Mon, Dec 17, 2012 at 5:32 PM, Anthony G. Basile<blueness@gentoo.org>  wrote:
>> Please comment.  If it gets systematized enough, it can be a guide to future
>> devs too.
> Hi, what is the level of the students, what are the prerequisites
> (i.e., have they already seen some systems programming using C?), and
> how many weekly hours? Have you already designed some assignments? I
> can think of the following:
>
> 1. Create a small makefile-based project with a separate shared
> library, an executable, and a man page. Determine run-time and
> build-time dependencies. Then convert to autotools, update
> dependencies. Do it all on GitHub, with a separate branch for
> converting to autotools.

Its a second year course so they've had some programming in Java but no 
serious C.  It meets 3 hours a week but I expect about 6 hours more per 
week in assignments.

There is some overlap with other stuff I've taught: Makefiles, 
autotools, git and shared objects.  I did my lecture materials in git 
and then ran a git rebase -i in class and redid the commits showing them 
what happened on each point.  You can see some of that stuff here ->

practice with git -> 
http://tweedledum.dyc.edu/gitweb/?p=model-git.git;a=summary

how autotools works -> 
http://tweedledum.dyc.edu/gitweb/?p=autotools.git;a=summary

how Makefiles work -> 
http://tweedledum.dyc.edu/gitweb/?p=makefile.git;a=summary

how shared objects work -> 
http://tweedledum.dyc.edu/gitweb/?p=shared-objects.git;a=summary

>
> 2. Write an ebuild for the project above, maintained in an overlay
> (also on GitHub), with sources fetched from GitHub. Add some small
> patch to configure.ac in the ebuild. Add USE flags. Add "make check"
> support to the build system, test with FEATURES=test. Many
> ebuild-related tasks can be easily added (e.g. installing init.d
> scripts).

This would be totally new to them but I agree that's a good idea.  I 
don't know about GitHub.  Can you delete projects from it when you're 
done because I don't want to polute GitHub with lots of unpolished stuff.

>
> 3. Take an old-version ebuild for a project with a known bug, fetch
> the relevant git tag, and bisect to find the bug. Prepare a patch,
> describe patch submission process.
Hmm ... I didn't think of this but I could do that with the kernel on 
virtual machines.

>
> Wrt. subjects covered, will you cover sandboxing, installing to image
> vs. merging to live system, etc.? I would expect students to like such
> stuff.
>
At some point I would have to cover that.  Like when I got over the 
phases of emerging, stepping through them with ebuild.

-- 
Anthony G. Basile, Ph.D.
Gentoo Linux Developer [Hardened]
E-Mail    : blueness@gentoo.org
GnuPG FP  : 8040 5A4D 8709 21B1 1A88  33CE 979C AF40 D045 5535
GnuPG ID  : D0455535



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [gentoo-dev] Re: College Course in Gentoo Development
  2012-12-17 16:48 ` "Paweł Hajdan, Jr."
@ 2012-12-18  7:51   ` Duncan
  2012-12-18 11:36     ` Kevin Chadwick
  0 siblings, 1 reply; 20+ messages in thread
From: Duncan @ 2012-12-18  7:51 UTC (permalink / raw
  To: gentoo-dev

Paweł Hajdan, Jr. posted on Mon, 17 Dec 2012 08:48:01 -0800 as excerpted:

> On 12/17/12 7:32 AM, Anthony G. Basile wrote:
>> So what should I teach?  Here's what I've got off the top of my head:
>> Please comment.  If it gets systematized enough, it can be a guide to
>> future devs too.  Everything will be creative commons.
> 
> I think it's worth to mention somewhere that although packages take
> longer to compile than downloading binaries, people don't have to
> _watch_ the compilation, and many things can be done e.g. overnight.

++

Two reasons.  From a user perspective, I often see people's complaints 
about how much of a waste of time gentoo is, watching the build output 
scroll by.  People simply don't seem to realize that you can go away and 
do something else while all that's happening, or on a modern multi-core 
system with a decent amount of memory, set PORTAGE_NICENESS and MAKEOPTS 
appropriately, and even just go on using the system as you normally would 
if you weren't compiling in the background (of course as long as that 
"normally" isn't something like multi-thread ray-tracing, or using the 
machine as part of a low-latency sound studio, etc), and that what REALLY 
takes the time is updating the config files and otherwise adjusting to 
new versions of whatever packages you just upgraded, which would take the 
SAME amount of time to go thru, for a similar version update, regardless 
of whether the distro is binary-based or from-source.

From a dev and student-dev perspective, more your focus here, it's an 
even MORE important lesson, as these guys will likely be doing a lot more 
package building over their schooling and career than the average user 
(tho maybe not so much more than the average gentoo user), even if they 
don't stick around on gentoo, and the earlier they get the message that 
they can let the computer do what the computer does best and that once 
it's setup properly they don't have to constantly watch it, only check on 
it once in awhile and check the final status and summary messages, the 
more efficient they're going to be as students, devs, and ultimately, 
employees.

> Also, remember that Google's ChromeOS takes a lot of things from Gentoo,
> including the package manager and many ebuilds. The idea here is that it
> has applications in the industry.

Good thought.  Anchor the theory in real-world practicality. =:^)


And since I replied here, I might as well throw in my own suggestion here 
as well.

I don't see any mention of overlays on that list of covered subjects.  
Perhaps mention them under point #2, covering gentoo as a metadistro, 
then cover them in more detail under point #3, delivering the goods.  

Keep in mind that many gentoo devs begin working with project overlays 
well before they're official devs, under the supervision of the devs 
responsible for that project.  Depending on an individual student's 
interest, they could be getting involved with projects and working in the 
respective project overlays before the end of the course, so introducing 
them fairly early on and giving them a chance to work with them, first as 
a user, then as they progress, as a dev, should work out quite well.

Overlays should work in quite well with your coverage of git, too, since 
many of the overlays are git-based.  You could either take Maxim K's 
github idea and do the overlay there, or do something similar using 
overlays.gentoo.org.

Either way you'd presumably work with the hosting provider, github, 
gentoo, or other.  I don't know if you can delete github projects, but if 
I were github, I'd *JUMP* at the chance to cooperate with someone 
offering a college level course integrating github, and would likely 
offer to work with you on integrating anything special you needed, like 
deletable projects, in ordered to do it.  This since once a student's 
using github, they're going to take that practice with them, and in a few 
years, many of them will likely be pushing paid github accounts at 
wherever they end up working.  If you pursue the github idea, I'd 
DEFINITELY recommend contacting github, as they may well be able to 
suggest or even create other features to fit your class as well, and they 
should have a pretty high motivation to do so.  They /might/ even offer 
to sponsor some of the course material cost, etc, especially since they 
can almost certainly write it off as either advertising/PR expense or 
educational donation. =:^)

OTOH if you chose overlays.gentoo.org for your hosting, you should get 
quite close cooperation as well, likely even closer due to scale and 
direct focus, and AFAIK gentoo already has some experience there from the 
Google Summer of Code projects.  But the experience isn't as easily or 
directly useful for students beyond the course and gentoo, as working 
with github would be.  OTOH, working too closely with github might be 
seen as a commercial endorsement you or your school may not wish to make 
(except perhaps if they /do/ actually offer sponsorship, most schools 
know how to make /that/ work), while gentoo as a non-profit that's 
already directly part of the course shouldn't have that issue, and could 
be seen as useful in its own right since it parallels the adaption to an 
existing work environment that an employee (and for that matter, 
volunteer joining a FLOSS project) generally must make, regardless of 
whatever github or etc experience they may have already.

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [gentoo-dev] College Course in Gentoo Development
  2012-12-17 15:32 [gentoo-dev] College Course in Gentoo Development Anthony G. Basile
                   ` (6 preceding siblings ...)
  2012-12-17 21:34 ` Michael Orlitzky
@ 2012-12-18  9:36 ` Richard Yao
  7 siblings, 0 replies; 20+ messages in thread
From: Richard Yao @ 2012-12-18  9:36 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1493 bytes --]

On 12/17/2012 10:32 AM, Anthony G. Basile wrote:
> Hi everyone,
> 
> Give the talk on the list about attracting devs, I've should probably
> mention that I'm teaching a College Course on Gentoo Development next
> semester.  I know two students will most likely go through the
> recruitment process, others may at least contribute.  So its like GSoC
> but the focus is not one project but an overview of general gentoo
> development, and I will have to touch on lots of stuff outside of gentoo
> per se, like how autotools and other build systems work.
> 
> So what should I teach?  Here's what I've got off the top of my head:
> 
> 1. Open source communities and Gentoo's internal political structure.
> 
> 2. Building a gentoo system, ie the handbook.  Gentoo as metadistribution.
> 
> 3. Delivering the goods: code -> build system -> portage -> compiled
> goodies -> working system
> 
> 4. How to work with gnu autotools.  Writing a build system.
> 
> 5.  How to write ebuilds, ie the dev manual.  How to work with cvs and git.
> 
> 6. Arches, arch testing.  Profiles.
> 
> 7. Building stages.  Catalyst.
> 
> Somewhere in there I'll squeeze in Gentoo's "alt" factor: alternative c
> libs, alternative compilers and hardening, alternative kernels, prefixes.
> 
> Please comment.  If it gets systematized enough, it can be a guide to
> future devs too.  Everything will be creative commons.
> 

You might want to have a lecture about software licensing.


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 900 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [gentoo-dev] College Course in Gentoo Development
  2012-12-18  0:46   ` Anthony G. Basile
@ 2012-12-18  9:38     ` Richard Yao
  0 siblings, 0 replies; 20+ messages in thread
From: Richard Yao @ 2012-12-18  9:38 UTC (permalink / raw
  To: gentoo-dev

[-- Attachment #1: Type: text/plain, Size: 1490 bytes --]

On 12/17/2012 07:46 PM, Anthony G. Basile wrote:
>>
>> 2. Write an ebuild for the project above, maintained in an overlay
>> (also on GitHub), with sources fetched from GitHub. Add some small
>> patch to configure.ac in the ebuild. Add USE flags. Add "make check"
>> support to the build system, test with FEATURES=test. Many
>> ebuild-related tasks can be easily added (e.g. installing init.d
>> scripts).
> 
> This would be totally new to them but I agree that's a good idea.  I
> don't know about GitHub.  Can you delete projects from it when you're
> done because I don't want to polute GitHub with lots of unpolished stuff.

You can.

>>
>> 3. Take an old-version ebuild for a project with a known bug, fetch
>> the relevant git tag, and bisect to find the bug. Prepare a patch,
>> describe patch submission process.
> Hmm ... I didn't think of this but I could do that with the kernel on
> virtual machines.

You might want a userland program to avoid having to do reboots. I
suppose git itself could be a good candidate for this.

>>
>> Wrt. subjects covered, will you cover sandboxing, installing to image
>> vs. merging to live system, etc.? I would expect students to like such
>> stuff.
>>
> At some point I would have to cover that.  Like when I got over the
> phases of emerging, stepping through them with ebuild.
> 

You make me wish that this class was available when I was doing my
undergraduate degree. I had to learn this on my own.


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 900 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [gentoo-dev] Re: College Course in Gentoo Development
  2012-12-18  7:51   ` [gentoo-dev] " Duncan
@ 2012-12-18 11:36     ` Kevin Chadwick
  0 siblings, 0 replies; 20+ messages in thread
From: Kevin Chadwick @ 2012-12-18 11:36 UTC (permalink / raw
  To: gentoo-dev

> People simply don't seem to realize that you can go away and 
> do something else while all that's happening

Like servers I prefer build machines to be more secure dedicated build
machines without a browser or X, so I expect it's a bit of a barrier
for me.

Having said that I haven't found the time to see how much time and
resources are involved compared to Sabayon and how often yet whilst
using libreoffice binaries.

-- 
_______________________________________________________________________

'Write programs that do one thing and do it well. Write programs to work
together. Write programs to handle text streams, because that is a
universal interface'

(Doug McIlroy)
_______________________________________________________________________


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2012-12-18 11:37 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-17 15:32 [gentoo-dev] College Course in Gentoo Development Anthony G. Basile
2012-12-17 16:02 ` Rick "Zero_Chaos" Farina
2012-12-17 18:09   ` Roy Bamford
2012-12-17 18:13     ` Michael Mol
2012-12-17 19:56   ` Hinnerk van Bruinehsen
2012-12-17 21:36   ` Michael Hampicke
2012-12-17 16:48 ` "Paweł Hajdan, Jr."
2012-12-18  7:51   ` [gentoo-dev] " Duncan
2012-12-18 11:36     ` Kevin Chadwick
2012-12-17 17:23 ` [gentoo-dev] " Ian Stakenvicius
2012-12-17 18:05   ` Anthony G. Basile
2012-12-17 18:11 ` Maxim Kammerer
2012-12-17 18:18   ` hasufell
2012-12-17 20:39     ` Maxim Kammerer
2012-12-18  0:46   ` Anthony G. Basile
2012-12-18  9:38     ` Richard Yao
2012-12-17 18:14 ` hasufell
2012-12-17 18:24 ` Ciaran McCreesh
2012-12-17 21:34 ` Michael Orlitzky
2012-12-18  9:36 ` Richard Yao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox