Re: [Sugar-devel] Regarding Social Help project
Hi, Here's my comment - There is currently no way to get instant help from real people from inside Sugar, except the IRC activity, which sadly is too complicated and distributed(hard to find stuff which one needs, no logs, there are security problems). We really need a way to get children help quickly, and this is what this project will give us. It will, with time, also become a full help repository, and also a way for children to talk and discuss things in a more social manner than it is now. Thus the Social Help project is invaluable to Sugar and it's vision, that learning is a social process. On Mon, Mar 17, 2014 at 9:29 PM, Walter Bender walter.ben...@gmail.comwrote: On Sat, Mar 15, 2014 at 1:07 PM, Prasoon Shukla prasoon92.i...@gmail.comwrote: Hello again. I've made a proposal : http://wiki.sugarlabs.org/go/Summer_of_Code/2014/Prasoon2211/Social_Help *I need a few comments on how the sugar help project will help the sugar community.* This I need to add in the proposal. I tried reaching out on the IRC but there was no response there. Please comment below. People are social and learning is social. Having a forum for sharing ideas and help is invaluable -- especially in light of the decentralized nature of the Sugar community. While the developer community is comfortable with IRC, we have not been successful in getting our user community to use it: they are seeming more comfortable with web tools (e.g. there is a large community of teachers using Facebook to discuss Sugar.) It would of course be better to have a FOSS solution. But also one that didn't require a lot of maintenance and support by the Sugar developer community. Hence, a connection to an existing FOSS platform would be attractive. regards. -walter Anyway, this is the first draft. Please comment on the discussions page if anything is required in the proposal. Thanks! ᐧ ___ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel -- Walter Bender Sugar Labs http://www.sugarlabs.org ___ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel ___ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel
Re: [Sugar-devel] Regarding Social Help project
On Sat, Mar 15, 2014 at 1:07 PM, Prasoon Shukla prasoon92.i...@gmail.comwrote: Hello again. I've made a proposal : http://wiki.sugarlabs.org/go/Summer_of_Code/2014/Prasoon2211/Social_Help *I need a few comments on how the sugar help project will help the sugar community.* This I need to add in the proposal. I tried reaching out on the IRC but there was no response there. Please comment below. People are social and learning is social. Having a forum for sharing ideas and help is invaluable -- especially in light of the decentralized nature of the Sugar community. While the developer community is comfortable with IRC, we have not been successful in getting our user community to use it: they are seeming more comfortable with web tools (e.g. there is a large community of teachers using Facebook to discuss Sugar.) It would of course be better to have a FOSS solution. But also one that didn't require a lot of maintenance and support by the Sugar developer community. Hence, a connection to an existing FOSS platform would be attractive. regards. -walter Anyway, this is the first draft. Please comment on the discussions page if anything is required in the proposal. Thanks! ᐧ ___ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel -- Walter Bender Sugar Labs http://www.sugarlabs.org ___ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel
Re: [Sugar-devel] Regarding Social Help project
Hello again. I've made a proposal : http://wiki.sugarlabs.org/go/Summer_of_Code/2014/Prasoon2211/Social_Help *I need a few comments on how the sugar help project will help the sugar community.* This I need to add in the proposal. I tried reaching out on the IRC but there was no response there. Please comment below. Anyway, this is the first draft. Please comment on the discussions page if anything is required in the proposal. Thanks! ᐧ ___ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel
Re: [Sugar-devel] Regarding Social Help project
I took a look at two of the webservices - Facebook and PutLocker. Now, Facebook provides an access token that can be used to log the user in via third-party clients. As far as I can see, Discourse does not provide such access tokens. The Facebook access token being used is here: https://github.com/walterbender/facebook/blob/master/extensions/webservice/facebook/account.py#L53 However, in the PutLocker implementation, sugar is *actually storing plain-text passwords! *Look here: https://github.com/ignaciouy/sugar-putlocker/blob/master/extensions/webservice/sugarupload/account.py#L43 This, IMHO, is a big mistake. Many users tend to keep the same password on different websites - and having the plain-text password stored in a file is nothing short of giving away your account to anyone who uses your laptop. I do not know why this is being used but I refuse to use this method. This leaves us again with *any one* of these three options: 1. Modify the browse activity as I mentioned in the last post. 2. Store the hashes of the password and use one of the authentication hooks to log the user in as mentioned in the last post. 3. Or, and I personally do not like this option, get the users to log in to discourse via Facebook. My primary reason for not liking this is that we'll be tying up authentication to a non-free (as in freedom) service. But, we can go through with this, if this appeals to the community. Personally, I like #1 and #2. But, the final decision on this is not mine to make since I'm a very new member of the sugar community. So, let us discuss this issue here and reach a decision soon so that I can finish writing my proposal. Thanks On Thu, Mar 13, 2014 at 12:13 AM, Gonzalo Odiard godi...@sugarlabs.orgwrote: Has you read about webservices support in Sugar? http://wiki.sugarlabs.org/go/WebServices http://wiki.sugarlabs.org/go/Features/Web_services Gonzalo On Wed, Mar 12, 2014 at 3:26 PM, Prasoon Shukla prasoon92.i...@gmail.comwrote: Hi Frederick, Sam. Well, the way I imagine this project is that a user can launch into a Discourse discussion in a Browse activity. This activity can then be shared as any other activity - this part will not require any other specific changes to be made (if I understand your request correctly). We can, however, add links to the discussions on Discourse on the sugar-network website in the relevant places. Anyway, I tried to think of a few ways in which we can preserve a user session across discussions. Finally, I've decided on the following flow: 1. Get the user to register the first time - this process is very easy and we can pick email directly from sugar. Then, the part before the '@' can be the default username for Discourse (this the user can of course change). The user will need to enter the password though. 2. Discourse will create a session for the user and send the browser the session information(cookies). Now, and this is a crucial point, I'll need to modify the browse activity to add a method that can will return session information (the session cookie) to the calling process. I'll call this method via DBus to retrieve the this information. We'll then store this in a configuration file. 3. The user can then close the browser. When the user opens the browser again: - we'll check if the session cookie exists. - if it does, then we do not need to write this cookie to the browser. - otherwise, we'll retrieve the session cookie from the config file and write it to the browser - this will need another method to be added to the browse activity. This will log the user back in seamlessly without the need to fill in authentication information. Now, if we go through with this implementation strategy, then our only concern at this stage will be whether the getCookie and setCookie can be implemented in the browse activity. Of course, getting and setting cookies can be done via JS in any webkit browser. So, I think it shouldn't be difficult to do this. Now the decision remains whether to proceed with this course or not (in which case we'll probably need to talk to discourse devs about how to log users in directly with a PBKDF2 hashhttps://meta.discourse.org/t/why-does-discourse-use-pbkdf2/2934. Btw, they're using OmniAuth https://github.com/intridea/omniauth for authentication and they also provide quite a few authentication hooks to tweak authentication according to our needs, so it shouldn't be too hard ...). @Sam, @Frederick: Please let me know of a decision on this. Also, @Frederick, let me know if we need anything specific to sugar-network other than what I mentioned earlier. Thanks Prasoon ___ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel -- Gonzalo Odiard SugarLabs - Learning Software for children ___
Re: [Sugar-devel] Regarding Social Help project
Hi Frederick, Sam. Well, the way I imagine this project is that a user can launch into a Discourse discussion in a Browse activity. This activity can then be shared as any other activity - this part will not require any other specific changes to be made (if I understand your request correctly). We can, however, add links to the discussions on Discourse on the sugar-network website in the relevant places. Anyway, I tried to think of a few ways in which we can preserve a user session across discussions. Finally, I've decided on the following flow: 1. Get the user to register the first time - this process is very easy and we can pick email directly from sugar. Then, the part before the '@' can be the default username for Discourse (this the user can of course change). The user will need to enter the password though. 2. Discourse will create a session for the user and send the browser the session information(cookies). Now, and this is a crucial point, I'll need to modify the browse activity to add a method that can will return session information (the session cookie) to the calling process. I'll call this method via DBus to retrieve the this information. We'll then store this in a configuration file. 3. The user can then close the browser. When the user opens the browser again: - we'll check if the session cookie exists. - if it does, then we do not need to write this cookie to the browser. - otherwise, we'll retrieve the session cookie from the config file and write it to the browser - this will need another method to be added to the browse activity. This will log the user back in seamlessly without the need to fill in authentication information. Now, if we go through with this implementation strategy, then our only concern at this stage will be whether the getCookie and setCookie can be implemented in the browse activity. Of course, getting and setting cookies can be done via JS in any webkit browser. So, I think it shouldn't be difficult to do this. Now the decision remains whether to proceed with this course or not (in which case we'll probably need to talk to discourse devs about how to log users in directly with a PBKDF2 hashhttps://meta.discourse.org/t/why-does-discourse-use-pbkdf2/2934. Btw, they're using OmniAuth https://github.com/intridea/omniauth for authentication and they also provide quite a few authentication hooks to tweak authentication according to our needs, so it shouldn't be too hard ...). @Sam, @Frederick: Please let me know of a decision on this. Also, @Frederick, let me know if we need anything specific to sugar-network other than what I mentioned earlier. Thanks Prasoon ___ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel
Re: [Sugar-devel] Regarding Social Help project
Has you read about webservices support in Sugar? http://wiki.sugarlabs.org/go/WebServices http://wiki.sugarlabs.org/go/Features/Web_services Gonzalo On Wed, Mar 12, 2014 at 3:26 PM, Prasoon Shukla prasoon92.i...@gmail.comwrote: Hi Frederick, Sam. Well, the way I imagine this project is that a user can launch into a Discourse discussion in a Browse activity. This activity can then be shared as any other activity - this part will not require any other specific changes to be made (if I understand your request correctly). We can, however, add links to the discussions on Discourse on the sugar-network website in the relevant places. Anyway, I tried to think of a few ways in which we can preserve a user session across discussions. Finally, I've decided on the following flow: 1. Get the user to register the first time - this process is very easy and we can pick email directly from sugar. Then, the part before the '@' can be the default username for Discourse (this the user can of course change). The user will need to enter the password though. 2. Discourse will create a session for the user and send the browser the session information(cookies). Now, and this is a crucial point, I'll need to modify the browse activity to add a method that can will return session information (the session cookie) to the calling process. I'll call this method via DBus to retrieve the this information. We'll then store this in a configuration file. 3. The user can then close the browser. When the user opens the browser again: - we'll check if the session cookie exists. - if it does, then we do not need to write this cookie to the browser. - otherwise, we'll retrieve the session cookie from the config file and write it to the browser - this will need another method to be added to the browse activity. This will log the user back in seamlessly without the need to fill in authentication information. Now, if we go through with this implementation strategy, then our only concern at this stage will be whether the getCookie and setCookie can be implemented in the browse activity. Of course, getting and setting cookies can be done via JS in any webkit browser. So, I think it shouldn't be difficult to do this. Now the decision remains whether to proceed with this course or not (in which case we'll probably need to talk to discourse devs about how to log users in directly with a PBKDF2 hashhttps://meta.discourse.org/t/why-does-discourse-use-pbkdf2/2934. Btw, they're using OmniAuth https://github.com/intridea/omniauth for authentication and they also provide quite a few authentication hooks to tweak authentication according to our needs, so it shouldn't be too hard ...). @Sam, @Frederick: Please let me know of a decision on this. Also, @Frederick, let me know if we need anything specific to sugar-network other than what I mentioned earlier. Thanks Prasoon ___ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel -- Gonzalo Odiard SugarLabs - Learning Software for children ___ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel
Re: [Sugar-devel] Regarding Social Help project
On Wed, Mar 12, 2014 at 2:26 PM, Prasoon Shukla prasoon92.i...@gmail.comwrote: {...} @Sam, @Frederick: Please let me know of a decision on this. Also, @Frederick, let me know if we need anything specific to sugar-network other than what I mentioned earlier. That question should be addressed to https://groups.google.com/forum/#!forum/sugar-network/join I am not intimate with sugar-network, I only suggest that it may inspire some ideas on integrated social help. Its centrality to the OLPC Peru project gives it a foundation to consider. I only hope for due consideration by you, your partners, and advisers. --Fred Thanks Prasoon ___ Sugar-devel mailing list Sugar-devel@lists.sugarlabs.org http://lists.sugarlabs.org/listinfo/sugar-devel
Re: [Sugar-devel] Regarding Social Help project
Hi, I agree, Discourse looks amazing! Just a few ideas to chuck around: - I think it would be nice to try to make the forums automatically login when using sugar. This could be done by storing a uuid and a key on the computer. When you go to the forum it could automatically log you in with your sugar username and uuid (but let you use a different account if you wish). I think this would be useful since: - Users probably want help quickly and this would mean less hoops - Keeping a uuid or key of some sort would still allow communication with the user. This could be just a little script that used the upcoming notification system - Also is Discourse real time / do you instantly get the updates without having to refresh? That would be cool I am really interested in this and would love to help. Sam On Tue, Mar 11, 2014 at 3:30 AM, Prasoon Shukla prasoon92.i...@gmail.comwrote: *Note : I sent this message once before but it was moderated because it was too large. So, I'm replacing the inline images with links to the images/links to pages. I hope that this will be enough of a reduction in size.* Hi. I talked to Walter on the IRC a few days ago regarding the social help project. We decided that I should explore FOSS forum software that is actively maintained for the social help project. So, I tried looking at some popular alternatives. The ones I found worth exploring are *phpBB*, *Discourse* and *bbPress. *I selected these specific forums because of their ease of use, functionality and the ease of getting a forum up and running. To summarize things, Discourse *appears* to be clearly ahead of the other two in all things except in terms of the ease-of-installation. However, it has became much easier to install discourse now than it was a few months ago. In fact, they now provide a docker image that can be used to install discourse with relative ease. That said, bbPress wins in terms of ease of installation with a WordPress like setup process. phpBB is easy just as easy. Nevertheless, I think that this is a minor disadvantage in the bigger scheme of things. Now, once installed, phpBB and bbPress are quite similar in functionality - so I'll just compare Discourse with phpBB instead of comparing with both. - phpBB is *very badly cluttered. *This, I think, is especially bad when we're talking of getting children to use this software. A single line posted by a user is presented together with a whole bunch of useless information : See http://picpaste.com/pics/forums1.1394467977.png That's one single line of information with quite a lot of clutter. The topics page is even more cluttered. See this popular phpBB forum: http://forums.gentoo.org/ Now I know that with years of use, most of have gotten used to tuning out the uninformative parts but that won't be the case with children. Discourse does much better at this. See a sample discussion here: http://discuss.atom.io/t/custom-atom-icon-with-packages/2341 That in itself is good enough reason to use Discourse. But, I'll point out few more. - The one time registration is much *much* simpler in Discourse. Just take a look at this: - *phpBB* : http://forums.gentoo.org/profile.php?mode=registeragreed=true - *Discourse*: http://picpaste.com/pics/forums4.1394468652.png Of course, we'll need to modify core Discourse according to our needs as well. But in any case, the registration will be much easier with Discourse. - Making an actual post is much more difficult in phpBB. Again, this is because of too much unnecessary information - dealing with tags, bunch of miscellaneous options at the end and posting permissions. This causes much grief when your long written post just refuses to go through. Discourse is simpler. See this: http://picpaste.com/pics/forums5.1394468781.png Aside from these three very fundamental things, there are few other good parts: 1. No arbitrary page breaks, which I think is quite nice. Often I'll be immersed in reading a thread and the page just abruptly ends, which I quite dislike. 2. A great reply system - where you don't have to strain yourself to read that 6 level deep nested comment. More reading by Jeff Atwood here: http://www.codinghorror.com/blog/2012/12/web-discussions-flat-by-design.html 3. Active development ongoing so we're likely to see some great upgrades in the coming out in the near future. So, I'll vote for discourse. Anyway, if we're willing to discuss proprietary options, then Moot ( https://moot.it/) seems *really *nice. But then again, it's not open. However, Moot does provide both free and non-free options with a very easy setup. So ... You can explore Moot here: https://moot.it/prasoon2211/ (it's my personal forum). Anyway, that's my take on the social help feature. Comments are welcome. Prasoon Shukla PS:
Re: [Sugar-devel] Regarding Social Help project
Hi Sam, On Tue, Mar 11, 2014 at 3:24 PM, Sam Parkinson sam.parkins...@gmail.comwrote: Hi, I agree, Discourse looks amazing! Just a few ideas to chuck around: - I think it would be nice to try to make the forums automatically login when using sugar. This could be done by storing a uuid and a key on the computer. When you go to the forum it could automatically log you in with your sugar username and uuid (but let you use a different account if you wish). I think this would be useful since: - Users probably want help quickly and this would mean less hoops - Keeping a uuid or key of some sort would still allow communication with the user. This could be just a little script that used the upcoming notification system Yes, exactly. I was thinking of developing a python-ruby authentication bridge for discourse. We will need to get an account created though. This could be done the first time the user accesses social help. From then on however, we can save the session (much like a browser) instead of writing a script to log them in - so that we don't actually need to log them in - they'll already be logged in when they open the the help. I'll ask around the discourse community for the viability of this idea. - - Also is Discourse real time / do you instantly get the updates without having to refresh? That would be cool Yes. See this thread from a year ago (when discourse was still beta) : https://meta.discourse.org/t/real-time-updates/5151 - I am really interested in this and would love to help. Why, thank you! I'll let you know if anything comes up :) Sam On Tue, Mar 11, 2014 at 3:30 AM, Prasoon Shukla prasoon92.i...@gmail.comwrote: *Note : I sent this message once before but it was moderated because it was too large. So, I'm replacing the inline images with links to the images/links to pages. I hope that this will be enough of a reduction in size.* Hi. I talked to Walter on the IRC a few days ago regarding the social help project. We decided that I should explore FOSS forum software that is actively maintained for the social help project. So, I tried looking at some popular alternatives. The ones I found worth exploring are *phpBB*, *Discourse* and *bbPress. *I selected these specific forums because of their ease of use, functionality and the ease of getting a forum up and running. To summarize things, Discourse *appears* to be clearly ahead of the other two in all things except in terms of the ease-of-installation. However, it has became much easier to install discourse now than it was a few months ago. In fact, they now provide a docker image that can be used to install discourse with relative ease. That said, bbPress wins in terms of ease of installation with a WordPress like setup process. phpBB is easy just as easy. Nevertheless, I think that this is a minor disadvantage in the bigger scheme of things. Now, once installed, phpBB and bbPress are quite similar in functionality - so I'll just compare Discourse with phpBB instead of comparing with both. - phpBB is *very badly cluttered. *This, I think, is especially bad when we're talking of getting children to use this software. A single line posted by a user is presented together with a whole bunch of useless information : See http://picpaste.com/pics/forums1.1394467977.png That's one single line of information with quite a lot of clutter. The topics page is even more cluttered. See this popular phpBB forum: http://forums.gentoo.org/ Now I know that with years of use, most of have gotten used to tuning out the uninformative parts but that won't be the case with children. Discourse does much better at this. See a sample discussion here: http://discuss.atom.io/t/custom-atom-icon-with-packages/2341 That in itself is good enough reason to use Discourse. But, I'll point out few more. - The one time registration is much *much* simpler in Discourse. Just take a look at this: - *phpBB* : http://forums.gentoo.org/profile.php?mode=registeragreed=true - *Discourse*: http://picpaste.com/pics/forums4.1394468652.png Of course, we'll need to modify core Discourse according to our needs as well. But in any case, the registration will be much easier with Discourse. - Making an actual post is much more difficult in phpBB. Again, this is because of too much unnecessary information - dealing with tags, bunch of miscellaneous options at the end and posting permissions. This causes much grief when your long written post just refuses to go through. Discourse is simpler. See this: http://picpaste.com/pics/forums5.1394468781.png Aside from these three very fundamental things, there are few other good parts: 1. No arbitrary page breaks, which I think is quite nice. Often I'll be immersed in reading a thread and the page just abruptly ends, which I
Re: [Sugar-devel] Regarding Social Help project
On Tue, Mar 11, 2014 at 8:12 AM, Prasoon Shukla prasoon92.i...@gmail.comwrote: Hi Sam, On Tue, Mar 11, 2014 at 3:24 PM, Sam Parkinson sam.parkins...@gmail.comwrote: Hi, I agree, Discourse looks amazing! Just a few ideas to chuck around: - I think it would be nice to try to make the forums automatically login when using sugar. This could be done by storing a uuid and a key on the computer. When you go to the forum it could automatically log you in with your sugar username and uuid (but let you use a different account if you wish). I think this would be useful since: - Users probably want help quickly and this would mean less hoops - Keeping a uuid or key of some sort would still allow communication with the user. This could be just a little script that used the upcoming notification system Yes, exactly. I was thinking of developing a python-ruby authentication bridge for discourse. We will need to get an account created though. This could be done the first time the user accesses social help. From then on however, we can save the session (much like a browser) instead of writing a script to log them in - so that we don't actually need to log them in - they'll already be logged in when they open the the help. I'll ask around the discourse community for the viability of this idea. - - Also is Discourse real time / do you instantly get the updates without having to refresh? That would be cool Yes. See this thread from a year ago (when discourse was still beta) : https://meta.discourse.org/t/real-time-updates/5151 - I am really interested in this and would love to help. Why, thank you! I'll let you know if anything comes up :) Sam On Tue, Mar 11, 2014 at 3:30 AM, Prasoon Shukla prasoon92.i...@gmail.com wrote: *Note : I sent this message once before but it was moderated because it was too large. So, I'm replacing the inline images with links to the images/links to pages. I hope that this will be enough of a reduction in size.* Hi. I talked to Walter on the IRC a few days ago regarding the social help project. We decided that I should explore FOSS forum software that is actively maintained for the social help project. So, I tried looking at some popular alternatives. The ones I found worth exploring are *phpBB* , *Discourse* and *bbPress. *I selected these specific forums because of their ease of use, functionality and the ease of getting a forum up and running. To summarize things, Discourse *appears* to be clearly ahead of the other two in all things except in terms of the ease-of-installation. However, it has became much easier to install discourse now than it was a few months ago. In fact, they now provide a docker image that can be used to install discourse with relative ease. That said, bbPress wins in terms of ease of installation with a WordPress like setup process. phpBB is easy just as easy. Nevertheless, I think that this is a minor disadvantage in the bigger scheme of things. Now, once installed, phpBB and bbPress are quite similar in functionality - so I'll just compare Discourse with phpBB instead of comparing with both. - phpBB is *very badly cluttered. *This, I think, is especially bad when we're talking of getting children to use this software. A single line posted by a user is presented together with a whole bunch of useless information : See http://picpaste.com/pics/forums1.1394467977.png That's one single line of information with quite a lot of clutter. The topics page is even more cluttered. See this popular phpBB forum: http://forums.gentoo.org/ Now I know that with years of use, most of have gotten used to tuning out the uninformative parts but that won't be the case with children. Discourse does much better at this. See a sample discussion here: http://discuss.atom.io/t/custom-atom-icon-with-packages/2341 That in itself is good enough reason to use Discourse. But, I'll point out few more. - The one time registration is much *much* simpler in Discourse. Just take a look at this: - *phpBB* : http://forums.gentoo.org/profile.php?mode=registeragreed=true - *Discourse*: http://picpaste.com/pics/forums4.1394468652.png Of course, we'll need to modify core Discourse according to our needs as well. But in any case, the registration will be much easier with Discourse. - Making an actual post is much more difficult in phpBB. Again, this is because of too much unnecessary information - dealing with tags, bunch of miscellaneous options at the end and posting permissions. This causes much grief when your long written post just refuses to go through. Discourse is simpler. See this: http://picpaste.com/pics/forums5.1394468781.png Aside from these three very fundamental things, there are few other good parts: 1. No arbitrary page breaks, which I think is quite