XWiki GSoC Blockly Editor

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

XWiki GSoC Blockly Editor

Vivek Iyer
Hello all!
My name is Vivek Iyer (github and Riot handle: Remorax) and I'm so grateful
for being selected as part of GSoC and I'm honestly looking forward to
contributing here!

My project for the summer is the Google Blockly Editor and to integrate it
with the current wiki and WYSIWYG editors. I plan to do this in four
stages:
- Firstly develop a small extension as test, so that I can build up on it.
- The second stage would be actually integrating a basic Blockly editor in
XWiki.
- The third stage would be adding custom blocks which generate the code for
functions which are most commonly used
- The fourth and the last stage would be making these blocks output
Velocity (or alternatively JS) code which would substitute the contents of
the div which would normally contain the manually written code.

Ideally, I plan on finishing stages 1 and 2 before the first evaluation,
stage 3 before the second evaluation and stage 4 before the final
evaluation.

As mentioned in my proposal, I'll be on vacation from 10th to 20th May and
won't have internet access so I'll be unable to contribute during that
period, but I'll surely make up for the lost time later on and get the work
done on schedule!

I've also kept buffer slots in between in case I run behind schedule.

I have also made a design on design.xwiki.org here:
http://design.xwiki.org/xwiki/bin/view/Google-Blockly-Editor/
Do check it out and let me know your opinions!

That's all from my side. I'm eager for your feedback and happy to receive
any suggestions as to where I could improve my current schedule.

Thanks and regards,
Vivek Iyer
Reply | Threaded
Open this post in threaded view
|

Re: XWiki GSoC Blockly Editor

vmassol
Administrator
Hi Vivek,

> On 4 May 2018, at 10:15, Vivek Iyer <[hidden email]> wrote:
>
> Hello all!
> My name is Vivek Iyer (github and Riot handle: Remorax) and I'm so grateful
> for being selected as part of GSoC and I'm honestly looking forward to
> contributing here!

Welcome aboard :)

>
> My project for the summer is the Google Blockly Editor and to integrate it
> with the current wiki and WYSIWYG editors. I plan to do this in four
> stages:
> - Firstly develop a small extension as test, so that I can build up on it.
> - The second stage would be actually integrating a basic Blockly editor in
> XWiki.
> - The third stage would be adding custom blocks which generate the code for
> functions which are most commonly used
> - The fourth and the last stage would be making these blocks output
> Velocity (or alternatively JS) code which would substitute the contents of
> the div which would normally contain the manually written code.
>
> Ideally, I plan on finishing stages 1 and 2 before the first evaluation,
> stage 3 before the second evaluation and stage 4 before the final
> evaluation.
>
> As mentioned in my proposal, I'll be on vacation from 10th to 20th May and
> won't have internet access so I'll be unable to contribute during that
> period, but I'll surely make up for the lost time later on and get the work
> done on schedule!
>
> I've also kept buffer slots in between in case I run behind schedule.
>
> I have also made a design on design.xwiki.org here:
> http://design.xwiki.org/xwiki/bin/view/Google-Blockly-Editor/
> Do check it out and let me know your opinions!

I’ve had a quick look and it would be nice if you could reformulate the use cases in term of features that the extensions needs to support.

For example instead of saying:

- The user enters his credentials.
- If authenticated, he is redirected to the dashboard.
- If the user is unable to authentinicate, the user is shown an error message saying invalid credentials

You should simply say:

* Allow users to enter Google credentials in the Admin UI.

Question: is this needed? Why do we need to enter credentials? AFAICS there’s no need to provide any credentials except if we wanted the optional cloud storage (which is not something we want IMO since the storage is going to be in wiki pages).

Also you say:

- The user navigates to the page he wishes to edit.
- He selects the edit option and if he's an advanced user, he sees the Blockly editor and selects it

You should simply say:

* Add a page editor to the list of available editors (Wiki, WYSIWYG, etc) so that users can edit a page using the Blockly editor

You’re also missing this:

* Ability to define the Blockly editor as the default editor in the Admin and in the use’s profile

Also you say:

- The Blockly editor contains various blocks for performing common XWiki scripting actions
- The user selects the appropriate blocks which show up as code on the side div
- Once the user is done with the scripting, he clicks on the save and continue button
- He is then redirected and is able to view his changes.

This is not needed as it’s pretty obvious ;) This is just describing the usage of the extension, not the requirements for the integration. You can put it in a usage section if you want though.

Also you say:

- If the user is not an advanced user, he won't see the Blockly editor option and would need to go to Settings and enable Advanced User in Preferences.

I’m not sure we want this since the goal is to try to make it as simple as possible for any type of users to write some simple scripts in xwiki. I wouldn’t put such restriction and would simply make it available to both simple and advanced users.

Then you’re missing lots of use cases…. I’ll write some but you should be the one finishing the list:

- Ability to generate any scripting language output when saving the page, and starting with Velocity.
- Ability to convert scripts writing in any scripting language into a visual Blockly view, starting with Velocity. This needs to be explored and if this is not possible then it means saving the Blockly data into a XObject of the pages and offering a custom Edit Sheet to use that when editing the page with the Blockly Editor.
- Provide several Blocks by default that allow to do things in XWiki. Review common actions that need to be done in scripting and offer blocks for them. For example: Ability to write XWQL queries to return a list of pages and ability to execute actions on them: replace content, copy, rename, delete. Send email. Etc. You can see the velocity scripting guide to get ideas of commons things that need to be supported: https://www.xwiki.org/xwiki/bin/view/Documentation/DevGuide/Scripting/APIGuide/
- Add ability for developers to create/edit new Blockly Blocks inside wiki pages. All the provided blocks by default should be using this strategy so they can be modified.

I’ll let you port these use cases into the design doc! :)

I’m happy that we’re getting started.

Thanks!
-Vincent








>
> That's all from my side. I'm eager for your feedback and happy to receive
> any suggestions as to where I could improve my current schedule.
>
> Thanks and regards,
> Vivek Iyer

Reply | Threaded
Open this post in threaded view
|

Re: XWiki GSoC Blockly Editor

vmassol
Administrator


> On 4 May 2018, at 10:52, Vincent Massol <[hidden email]> wrote:
>
> Hi Vivek,
>
>> On 4 May 2018, at 10:15, Vivek Iyer <[hidden email]> wrote:
>>
>> Hello all!
>> My name is Vivek Iyer (github and Riot handle: Remorax) and I'm so grateful
>> for being selected as part of GSoC and I'm honestly looking forward to
>> contributing here!
>
> Welcome aboard :)
>
>>
>> My project for the summer is the Google Blockly Editor and to integrate it
>> with the current wiki and WYSIWYG editors. I plan to do this in four
>> stages:
>> - Firstly develop a small extension as test, so that I can build up on it.
>> - The second stage would be actually integrating a basic Blockly editor in
>> XWiki.
>> - The third stage would be adding custom blocks which generate the code for
>> functions which are most commonly used
>> - The fourth and the last stage would be making these blocks output
>> Velocity (or alternatively JS) code which would substitute the contents of
>> the div which would normally contain the manually written code.
>>
>> Ideally, I plan on finishing stages 1 and 2 before the first evaluation,
>> stage 3 before the second evaluation and stage 4 before the final
>> evaluation.
>>
>> As mentioned in my proposal, I'll be on vacation from 10th to 20th May and
>> won't have internet access so I'll be unable to contribute during that
>> period, but I'll surely make up for the lost time later on and get the work
>> done on schedule!
>>
>> I've also kept buffer slots in between in case I run behind schedule.
>>
>> I have also made a design on design.xwiki.org here:
>> http://design.xwiki.org/xwiki/bin/view/Google-Blockly-Editor/
>> Do check it out and let me know your opinions!
>
> I’ve had a quick look and it would be nice if you could reformulate the use cases in term of features that the extensions needs to support.
>
> For example instead of saying:
>
> - The user enters his credentials.
> - If authenticated, he is redirected to the dashboard.
> - If the user is unable to authentinicate, the user is shown an error message saying invalid credentials
>
> You should simply say:
>
> * Allow users to enter Google credentials in the Admin UI.
>
> Question: is this needed? Why do we need to enter credentials? AFAICS there’s no need to provide any credentials except if we wanted the optional cloud storage (which is not something we want IMO since the storage is going to be in wiki pages).
>
> Also you say:
>
> - The user navigates to the page he wishes to edit.
> - He selects the edit option and if he's an advanced user, he sees the Blockly editor and selects it
>
> You should simply say:
>
> * Add a page editor to the list of available editors (Wiki, WYSIWYG, etc) so that users can edit a page using the Blockly editor
>
> You’re also missing this:
>
> * Ability to define the Blockly editor as the default editor in the Admin and in the use’s profile
>
> Also you say:
>
> - The Blockly editor contains various blocks for performing common XWiki scripting actions
> - The user selects the appropriate blocks which show up as code on the side div
> - Once the user is done with the scripting, he clicks on the save and continue button
> - He is then redirected and is able to view his changes.
>
> This is not needed as it’s pretty obvious ;) This is just describing the usage of the extension, not the requirements for the integration. You can put it in a usage section if you want though.
>
> Also you say:
>
> - If the user is not an advanced user, he won't see the Blockly editor option and would need to go to Settings and enable Advanced User in Preferences.
>
> I’m not sure we want this since the goal is to try to make it as simple as possible for any type of users to write some simple scripts in xwiki. I wouldn’t put such restriction and would simply make it available to both simple and advanced users.
>
> Then you’re missing lots of use cases…. I’ll write some but you should be the one finishing the list:
>
> - Ability to generate any scripting language output when saving the page, and starting with Velocity.
> - Ability to convert scripts writing in any scripting language into a visual Blockly view, starting with Velocity. This needs to be explored and if this is not possible then it means saving the Blockly data into a XObject of the pages and offering a custom Edit Sheet to use that when editing the page with the Blockly Editor.

s/scripts writing/script written

-Vincent

> - Provide several Blocks by default that allow to do things in XWiki. Review common actions that need to be done in scripting and offer blocks for them. For example: Ability to write XWQL queries to return a list of pages and ability to execute actions on them: replace content, copy, rename, delete. Send email. Etc. You can see the velocity scripting guide to get ideas of commons things that need to be supported: https://www.xwiki.org/xwiki/bin/view/Documentation/DevGuide/Scripting/APIGuide/
> - Add ability for developers to create/edit new Blockly Blocks inside wiki pages. All the provided blocks by default should be using this strategy so they can be modified.
>
> I’ll let you port these use cases into the design doc! :)
>
> I’m happy that we’re getting started.
>
> Thanks!
> -Vincent
>
>
>
>
>
>
>
>
>>
>> That's all from my side. I'm eager for your feedback and happy to receive
>> any suggestions as to where I could improve my current schedule.
>>
>> Thanks and regards,
>> Vivek Iyer

Reply | Threaded
Open this post in threaded view
|

Re: XWiki GSoC Blockly Editor

Vivek Iyer
Sir,
I've made the changes in the design page as requested!

I think you covered most of the use cases, I tried thinking of more but I
couldn't come up with any relevant ones. Like the basic use cases are the
conversion of blocks to code and vice versa, and CRUD operations on blocks
and those have been covered. I think I should focus on implementing these
use cases and getting the basics right, and then maybe if time permits, I
can add support for other programming languages too!

Regards,
Vivek Iyer

On Fri, May 4, 2018 at 2:23 PM, Vincent Massol <[hidden email]> wrote:

>
>
> > On 4 May 2018, at 10:52, Vincent Massol <[hidden email]> wrote:
> >
> > Hi Vivek,
> >
> >> On 4 May 2018, at 10:15, Vivek Iyer <[hidden email]>
> wrote:
> >>
> >> Hello all!
> >> My name is Vivek Iyer (github and Riot handle: Remorax) and I'm so
> grateful
> >> for being selected as part of GSoC and I'm honestly looking forward to
> >> contributing here!
> >
> > Welcome aboard :)
> >
> >>
> >> My project for the summer is the Google Blockly Editor and to integrate
> it
> >> with the current wiki and WYSIWYG editors. I plan to do this in four
> >> stages:
> >> - Firstly develop a small extension as test, so that I can build up on
> it.
> >> - The second stage would be actually integrating a basic Blockly editor
> in
> >> XWiki.
> >> - The third stage would be adding custom blocks which generate the code
> for
> >> functions which are most commonly used
> >> - The fourth and the last stage would be making these blocks output
> >> Velocity (or alternatively JS) code which would substitute the contents
> of
> >> the div which would normally contain the manually written code.
> >>
> >> Ideally, I plan on finishing stages 1 and 2 before the first evaluation,
> >> stage 3 before the second evaluation and stage 4 before the final
> >> evaluation.
> >>
> >> As mentioned in my proposal, I'll be on vacation from 10th to 20th May
> and
> >> won't have internet access so I'll be unable to contribute during that
> >> period, but I'll surely make up for the lost time later on and get the
> work
> >> done on schedule!
> >>
> >> I've also kept buffer slots in between in case I run behind schedule.
> >>
> >> I have also made a design on design.xwiki.org here:
> >> http://design.xwiki.org/xwiki/bin/view/Google-Blockly-Editor/
> >> Do check it out and let me know your opinions!
> >
> > I’ve had a quick look and it would be nice if you could reformulate the
> use cases in term of features that the extensions needs to support.
> >
> > For example instead of saying:
> >
> > - The user enters his credentials.
> > - If authenticated, he is redirected to the dashboard.
> > - If the user is unable to authentinicate, the user is shown an error
> message saying invalid credentials
> >
> > You should simply say:
> >
> > * Allow users to enter Google credentials in the Admin UI.
> >
> > Question: is this needed? Why do we need to enter credentials? AFAICS
> there’s no need to provide any credentials except if we wanted the optional
> cloud storage (which is not something we want IMO since the storage is
> going to be in wiki pages).
> >
> > Also you say:
> >
> > - The user navigates to the page he wishes to edit.
> > - He selects the edit option and if he's an advanced user, he sees the
> Blockly editor and selects it
> >
> > You should simply say:
> >
> > * Add a page editor to the list of available editors (Wiki, WYSIWYG,
> etc) so that users can edit a page using the Blockly editor
> >
> > You’re also missing this:
> >
> > * Ability to define the Blockly editor as the default editor in the
> Admin and in the use’s profile
> >
> > Also you say:
> >
> > - The Blockly editor contains various blocks for performing common XWiki
> scripting actions
> > - The user selects the appropriate blocks which show up as code on the
> side div
> > - Once the user is done with the scripting, he clicks on the save and
> continue button
> > - He is then redirected and is able to view his changes.
> >
> > This is not needed as it’s pretty obvious ;) This is just describing the
> usage of the extension, not the requirements for the integration. You can
> put it in a usage section if you want though.
> >
> > Also you say:
> >
> > - If the user is not an advanced user, he won't see the Blockly editor
> option and would need to go to Settings and enable Advanced User in
> Preferences.
> >
> > I’m not sure we want this since the goal is to try to make it as simple
> as possible for any type of users to write some simple scripts in xwiki. I
> wouldn’t put such restriction and would simply make it available to both
> simple and advanced users.
> >
> > Then you’re missing lots of use cases…. I’ll write some but you should
> be the one finishing the list:
> >
> > - Ability to generate any scripting language output when saving the
> page, and starting with Velocity.
> > - Ability to convert scripts writing in any scripting language into a
> visual Blockly view, starting with Velocity. This needs to be explored and
> if this is not possible then it means saving the Blockly data into a
> XObject of the pages and offering a custom Edit Sheet to use that when
> editing the page with the Blockly Editor.
>
> s/scripts writing/script written
>
> -Vincent
>
> > - Provide several Blocks by default that allow to do things in XWiki.
> Review common actions that need to be done in scripting and offer blocks
> for them. For example: Ability to write XWQL queries to return a list of
> pages and ability to execute actions on them: replace content, copy,
> rename, delete. Send email. Etc. You can see the velocity scripting guide
> to get ideas of commons things that need to be supported:
> https://www.xwiki.org/xwiki/bin/view/Documentation/
> DevGuide/Scripting/APIGuide/
> > - Add ability for developers to create/edit new Blockly Blocks inside
> wiki pages. All the provided blocks by default should be using this
> strategy so they can be modified.
> >
> > I’ll let you port these use cases into the design doc! :)
> >
> > I’m happy that we’re getting started.
> >
> > Thanks!
> > -Vincent
> >
> >
> >
> >
> >
> >
> >
> >
> >>
> >> That's all from my side. I'm eager for your feedback and happy to
> receive
> >> any suggestions as to where I could improve my current schedule.
> >>
> >> Thanks and regards,
> >> Vivek Iyer
>
>
Reply | Threaded
Open this post in threaded view
|

Re: XWiki GSoC Blockly Editor

Paul Libbrecht-2
Hello Vivek,

this is probably too far but it’s always good to have further plans. Here are two possible extension avenues which would be useful for the blockly world, I believe:

- create a workflow that allows custom-blocks to be included in the toolbox using a similar experience as the xwiki extension manager (there was a GSoC on bringing more repositories for this manager last year)
- employ the real-time editing extension or parts of it (e.g. chainpad-listmap) so that a blockly page can be edited in synchronicity between teachers and students (where used can be _edited_ or even _run_). CodePen seems to allow such features.

thanks

paul


On 4 May 2018, at 22:28, Vivek Iyer wrote:

> Sir,
> I've made the changes in the design page as requested!
>
> I think you covered most of the use cases, I tried thinking of more but I
> couldn't come up with any relevant ones. Like the basic use cases are the
> conversion of blocks to code and vice versa, and CRUD operations on blocks
> and those have been covered. I think I should focus on implementing these
> use cases and getting the basics right, and then maybe if time permits, I
> can add support for other programming languages too!
>
> Regards,
> Vivek Iyer
>
> On Fri, May 4, 2018 at 2:23 PM, Vincent Massol <[hidden email]> wrote:
>
>>
>>
>>> On 4 May 2018, at 10:52, Vincent Massol <[hidden email]> wrote:
>>>
>>> Hi Vivek,
>>>
>>>> On 4 May 2018, at 10:15, Vivek Iyer <[hidden email]>
>> wrote:
>>>>
>>>> Hello all!
>>>> My name is Vivek Iyer (github and Riot handle: Remorax) and I'm so
>> grateful
>>>> for being selected as part of GSoC and I'm honestly looking forward to
>>>> contributing here!
>>>
>>> Welcome aboard :)
>>>
>>>>
>>>> My project for the summer is the Google Blockly Editor and to integrate
>> it
>>>> with the current wiki and WYSIWYG editors. I plan to do this in four
>>>> stages:
>>>> - Firstly develop a small extension as test, so that I can build up on
>> it.
>>>> - The second stage would be actually integrating a basic Blockly editor
>> in
>>>> XWiki.
>>>> - The third stage would be adding custom blocks which generate the code
>> for
>>>> functions which are most commonly used
>>>> - The fourth and the last stage would be making these blocks output
>>>> Velocity (or alternatively JS) code which would substitute the contents
>> of
>>>> the div which would normally contain the manually written code.
>>>>
>>>> Ideally, I plan on finishing stages 1 and 2 before the first evaluation,
>>>> stage 3 before the second evaluation and stage 4 before the final
>>>> evaluation.
>>>>
>>>> As mentioned in my proposal, I'll be on vacation from 10th to 20th May
>> and
>>>> won't have internet access so I'll be unable to contribute during that
>>>> period, but I'll surely make up for the lost time later on and get the
>> work
>>>> done on schedule!
>>>>
>>>> I've also kept buffer slots in between in case I run behind schedule.
>>>>
>>>> I have also made a design on design.xwiki.org here:
>>>> http://design.xwiki.org/xwiki/bin/view/Google-Blockly-Editor/
>>>> Do check it out and let me know your opinions!
>>>
>>> I’ve had a quick look and it would be nice if you could reformulate the
>> use cases in term of features that the extensions needs to support.
>>>
>>> For example instead of saying:
>>>
>>> - The user enters his credentials.
>>> - If authenticated, he is redirected to the dashboard.
>>> - If the user is unable to authentinicate, the user is shown an error
>> message saying invalid credentials
>>>
>>> You should simply say:
>>>
>>> * Allow users to enter Google credentials in the Admin UI.
>>>
>>> Question: is this needed? Why do we need to enter credentials? AFAICS
>> there’s no need to provide any credentials except if we wanted the optional
>> cloud storage (which is not something we want IMO since the storage is
>> going to be in wiki pages).
>>>
>>> Also you say:
>>>
>>> - The user navigates to the page he wishes to edit.
>>> - He selects the edit option and if he's an advanced user, he sees the
>> Blockly editor and selects it
>>>
>>> You should simply say:
>>>
>>> * Add a page editor to the list of available editors (Wiki, WYSIWYG,
>> etc) so that users can edit a page using the Blockly editor
>>>
>>> You’re also missing this:
>>>
>>> * Ability to define the Blockly editor as the default editor in the
>> Admin and in the use’s profile
>>>
>>> Also you say:
>>>
>>> - The Blockly editor contains various blocks for performing common XWiki
>> scripting actions
>>> - The user selects the appropriate blocks which show up as code on the
>> side div
>>> - Once the user is done with the scripting, he clicks on the save and
>> continue button
>>> - He is then redirected and is able to view his changes.
>>>
>>> This is not needed as it’s pretty obvious ;) This is just describing the
>> usage of the extension, not the requirements for the integration. You can
>> put it in a usage section if you want though.
>>>
>>> Also you say:
>>>
>>> - If the user is not an advanced user, he won't see the Blockly editor
>> option and would need to go to Settings and enable Advanced User in
>> Preferences.
>>>
>>> I’m not sure we want this since the goal is to try to make it as simple
>> as possible for any type of users to write some simple scripts in xwiki. I
>> wouldn’t put such restriction and would simply make it available to both
>> simple and advanced users.
>>>
>>> Then you’re missing lots of use cases…. I’ll write some but you should
>> be the one finishing the list:
>>>
>>> - Ability to generate any scripting language output when saving the
>> page, and starting with Velocity.
>>> - Ability to convert scripts writing in any scripting language into a
>> visual Blockly view, starting with Velocity. This needs to be explored and
>> if this is not possible then it means saving the Blockly data into a
>> XObject of the pages and offering a custom Edit Sheet to use that when
>> editing the page with the Blockly Editor.
>>
>> s/scripts writing/script written
>>
>> -Vincent
>>
>>> - Provide several Blocks by default that allow to do things in XWiki.
>> Review common actions that need to be done in scripting and offer blocks
>> for them. For example: Ability to write XWQL queries to return a list of
>> pages and ability to execute actions on them: replace content, copy,
>> rename, delete. Send email. Etc. You can see the velocity scripting guide
>> to get ideas of commons things that need to be supported:
>> https://www.xwiki.org/xwiki/bin/view/Documentation/
>> DevGuide/Scripting/APIGuide/
>>> - Add ability for developers to create/edit new Blockly Blocks inside
>> wiki pages. All the provided blocks by default should be using this
>> strategy so they can be modified.
>>>
>>> I’ll let you port these use cases into the design doc! :)
>>>
>>> I’m happy that we’re getting started.
>>>
>>> Thanks!
>>> -Vincent
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>>
>>>> That's all from my side. I'm eager for your feedback and happy to
>> receive
>>>> any suggestions as to where I could improve my current schedule.
>>>>
>>>> Thanks and regards,
>>>> Vivek Iyer
>>
>>

signature.asc (523 bytes) Download Attachment