Difference between revisions of "Google Summer of Code 2023"

From XMPP WIKI
Jump to navigation Jump to search
(Add Monal)
Line 86: Line 86:


= Project Ideas (TO BE UPDATED FOR 2023) =
= Project Ideas (TO BE UPDATED FOR 2023) =
== Monal ==
''Website:'' https://monal-im.org/<br/>
''Source Code:'' https://github.com/monal-im/monal<br/>
''Description:'' Monal is a modern iOS and MacOS XMPP chat client<br/>
''Project Contact:'' [[User:TMolitor|tmolitor]]<br/>
''Relevant readings:'' XMPP + SwiftUI + Swift (+ ObjC)<br/>
''Teaser Tasks:'' [https://github.com/monal-im/Monal/labels/Minor Minor issues]<br/>
''Chat:'' [xmpp:monal@chat.yax.im?join monal@chat.yax.im] or [https://xmpp.org/chat#converse/room?jid=monal@chat.yax.im Webchat] or via 1:1 chat with [xmpp:thilo.molitor@juforum.de tmolitor]
=== Modern Onboarding ===
''Brief explanation:'' When new unexperienced (XMPP) users start Monal for the first time, they should be taken by the hand and introduced to XMPP (decentralized, login vs. registration) as well as the most important privacy settings / privacy policy. The resulting introduction should be implemented using SwiftUI and should replace / incorporate the existing login/register UI.
''Relevant readings:'' SwiftUI + Swift (+ ObjC)
''Project size:'' 20-40 days
''Difficulty:'' Easy
''Deliverables / Expected Results:''
* Short and understandable introduction to XMPP / Monal
* Configuration and explanation of the most important privacy settings
=== Image Preview ===
''Brief explanation:'' When tapping onto an image in the chat, a storyboard based image viewer appears, showing that image in full screen. Implement a new SwiftUI based media viewer supporting animated gifs, other image types and videos. Allow to swipe through all received/sent media. Show a gallery of all received media leading to this image viewer when tapping a button in the contact details.
''Relevant readings:'' SwiftUI + Swift (+ ObjC)
''Project size:'' 20-40 days
''Difficulty:'' Easy
''Deliverables / Expected Results:''
* Support for animated gifs
* Support for other common image formats (png, jpg etc.)
* Support for common video formats
* Media gallery
* Support swiping through media
=== Modern Chat View ===
''Brief explanation:'' The existing chat view (storyboard based) should be replaced by a new SwiftUI implementation. It should support text-, audio-, video-, geo- and OMEMO-messages.
''Relevant readings:'' SwiftUI + Swift (+ ObjC)
''Project size:'' 40-60 days
''Difficulty:'' Medium
''Deliverables / Expected Results:''
* Chat view with support for one to one chats as well as group chats
* Display the trust level of the device that sended an OMEMO encrypted message in the chat view
* Play / send audio & video messages
* Text messages with support for Quotes, HTTP/HTTPS links, styles
* Sending / showing images and geo locations
* Quote/Copy/Forwarding messages
* Show state of sent messages
* Sending files (upload progress etc.)
* Floating "scroll to bottom" button if not fully scrolled to bottom


== Dino ==
== Dino ==

Revision as of 20:45, 15 January 2023

Participation

The XSF has plans to be a mentoring organization for Google Summer of Code 2023. This is an early attempt to ensure good planning and enough time for the application process. Remind: The XSF has not yet applied nor being accepted.

XMPP oriented projects should still add project ideas to the below list.

Organization: Edward offered to help the organization. Please reach out to the GSoC chat if you want to support as well of plan to participate in any way: GSoC chat room gsoc@muc.xmpp.org

Dates

More information on the dates are listed on their GSoC Website

Otherwise, all other info is on GSoC page

Find their FAQ.

Overview

Date Meeting Participants
2023 Kick-off Meeting emus & supporters
2023 Organization Application preparation emus & supporters
2023-02-07 Org Application Deadline emus
2023-04-04 Projects Application Mentors

Overview

XMPP is an Internet protocol used in many fields, such as the Internet of Things, chat applications, voice and video calls, etc. It's what commercial client alike Google Talk, Whatsapp or Google Hangouts uses as an XMPP-derivate of the protocol uses or in some aspects of XMPP internally, and as well as end-users it's used extensively by enterprises and governments but of course also the open variant propagated and standardised by the XSF.

The XSF is (for GSoC) an umbrella organization for various XMPP-related projects. As such, there's two tiers involved - the XSF itself, which is responsible for gatherding mentors to submit ideas, choosing students etc., and the software projects themselves that then mentor students. Anyone interested in participating in GSoC as an XSF student can join the gsoc@muc.xmpp.org MUC room, where various mentors will be available to answer questions and generally help. Although each idea below lists a possible mentor, this group chat (MUC) is the best place to start.

As there are several disparate projects here, there's variety across several codebases in different languages and with significantly different aims, so take a look through all the ideas - there should be something for everyone here :)

How to get started?

  • Read the Google Summer of Code 2023 guidelines!
  • Review the projects below and inform yourself if that could be of interested for you Link
  • Reach out the projects contact, tell about yourself and why you are interested (see project section)
  • Join our GSoC group chat channel via XMPP (you can reach out via mail of course as well, but we really recommend to also use the technology) Link
  • Continue to discuss teaser tasks with the project contact Link
  • If everything is fine, start preparing a proposal and if reviewed submit the application Link

Join the group chat!

Use a regular XMPP client and join the GSoC chat room gsoc@muc.xmpp.org.

How to join:

Teaser Tasks

  • Submit small patches: To assess students applying to GSoC for XSF projects we want them to have submitted some small patches to one of the XMPP projects in advance, as this gives us an idea of their general ability to interact with the projects and submit patches. These should only be an afternoon or two's work, and should not be onerous!
  • Solve the XMPP quiz: To be announced.

A list of teaser tasks is given in the Project Ideas overview, but please join the chat rooms for the respective projects and discuss them there, where mentors will be able to help you and know what you're up to. There are different teasers for different codebases, and more teasers will be appearing here over the next few days.

Student Proposal

In addition to writing a proposal, engagement with the actual projects before the application is very important. Showing motivation by taking interest in the project and communicating with the mentors is very advantageous. Solving a typical small problem can show that a student is serious with their plans.

Of course, a good proposal is fine, too. We would be interested in the motivation behind the application. Additionally, the student's background, the possible experiences and preferred technologies, the outcome of a preliminary research on the protocol and codesbases the student might work on. Furthermore, their own perspective on how the collaboration and organization through the Google Summer of Code with the mentors should look like and a review of which possible problems may be faced are also helpful.

Furthermore we recommend a bit of research on online guides to write a proposal or motivational letter. The official guidelines of the Google Summer of Code 2023 are highly recommended to read first.

Project Ideas (TO BE UPDATED FOR 2023)

Monal

Website: https://monal-im.org/
Source Code: https://github.com/monal-im/monal
Description: Monal is a modern iOS and MacOS XMPP chat client
Project Contact: tmolitor
Relevant readings: XMPP + SwiftUI + Swift (+ ObjC)
Teaser Tasks: Minor issues
Chat: monal@chat.yax.im or Webchat or via 1:1 chat with tmolitor

Modern Onboarding

Brief explanation: When new unexperienced (XMPP) users start Monal for the first time, they should be taken by the hand and introduced to XMPP (decentralized, login vs. registration) as well as the most important privacy settings / privacy policy. The resulting introduction should be implemented using SwiftUI and should replace / incorporate the existing login/register UI.

Relevant readings: SwiftUI + Swift (+ ObjC)

Project size: 20-40 days

Difficulty: Easy

Deliverables / Expected Results:

  • Short and understandable introduction to XMPP / Monal
  • Configuration and explanation of the most important privacy settings

Image Preview

Brief explanation: When tapping onto an image in the chat, a storyboard based image viewer appears, showing that image in full screen. Implement a new SwiftUI based media viewer supporting animated gifs, other image types and videos. Allow to swipe through all received/sent media. Show a gallery of all received media leading to this image viewer when tapping a button in the contact details.

Relevant readings: SwiftUI + Swift (+ ObjC)

Project size: 20-40 days

Difficulty: Easy

Deliverables / Expected Results:

  • Support for animated gifs
  • Support for other common image formats (png, jpg etc.)
  • Support for common video formats
  • Media gallery
  • Support swiping through media

Modern Chat View

Brief explanation: The existing chat view (storyboard based) should be replaced by a new SwiftUI implementation. It should support text-, audio-, video-, geo- and OMEMO-messages.

Relevant readings: SwiftUI + Swift (+ ObjC)

Project size: 40-60 days

Difficulty: Medium

Deliverables / Expected Results:

  • Chat view with support for one to one chats as well as group chats
  • Display the trust level of the device that sended an OMEMO encrypted message in the chat view
  • Play / send audio & video messages
  • Text messages with support for Quotes, HTTP/HTTPS links, styles
  • Sending / showing images and geo locations
  • Quote/Copy/Forwarding messages
  • Show state of sent messages
  • Sending files (upload progress etc.)
  • Floating "scroll to bottom" button if not fully scrolled to bottom

Dino

Website: https://dino.im/
Source Code: https://github.com/dino/dino
Description: Dino is a modern open-source chat client for the desktop. It focuses on providing a clean and reliable Jabber/XMPP experience while having your privacy in mind.
Project Contact: larma, fiaxh
Relevant readings: Vala Tutorial
Teaser Tasks: Good first issues
Chat: chat@dino.im or Webchat

Note: Feel invited to combine small projects into a large project, if you want to do a large project. Combinations of the 2 projects related to file transfers are a particular fit for a large project.

Inline link preview

Brief explanation: Add support for attaching and displaying link metadata.
Involved Technologies: Vala, XMPP, HTML, OpenGraph
Relevant readings: OpenGraph protocol
Project size: Small (175h)
Difficulty: Easy
Deliverables / Expected Results:

  • User interface widget to display metadata, suitable for preview image, title, abstract and the original url/domain.
  • Automatic generation of metadata, working with major websites. This should be done in a generic fashion, not targeting a specific website
  • Design or reuse a specification for sending metadata with XMPP messages

On-demand p2p file sharing

Brief explanation: Allow for on-demand multi-party peer-to-peer file transfers.
Involved Technologies: Vala, XMPP, Jingle
Relevant readings: XEP-0447, XEP-0234
Project size: Small (175h)
Difficulty: Medium
Important Note: This project can only be achieved by first implementing the "Stateless file sharing" project.
Deliverables / Expected Results:

WebRTC file transfer

Brief explanation: Add support for WebRTC-based file transfers using WebRTC data channels for web compatibility and improved NAT traversal.
Involved Technologies: Vala, XMPP, Jingle, WebRTC
Relevant readings: XEP-0343, XEP-0234
Project size: Small (175h)
Difficulty: Hard
Deliverables / Expected Results:

Rich message support

Brief explanation: Add support for creating and displaying rich test messages.
Involved Technologies: Vala, XMPP, GTK+, Pango
Relevant readings: XEP-0393, XEP-0394, XEP-0372
Project size: Small (175h)
Difficulty: Easy
Deliverables / Expected Results:

  • Add rich text features to Dino's chat input box using buttons and well-known keyboard shortcuts for bold, italic, strikethrough, monospace, lists, blockquotes, code blocks, links and mentions.
  • Allow users to activate Markdown input, which is instantly converted to rich text during input.
  • Send rich text messages using Message Markup and References as well as a fallback using Message Styling
  • Apply markup to messages in conversation history via Pango Attributes

weblin.io

Website: https://weblin.io/Start
Source Code: https://github.com/lupuslabs/n3qExt
Description: weblin.io is a graphical XMPP client that maps web-URLs to XMPP chat rooms and shows participants as animated avatars, by default one chat room for each web site. Virtual items can be deployed to web pages (chat rooms) providing scriptable gateways to additional applications like video conferencing, gaming, NFTs. The goal of weblin.io is to make the Web a vibrant space where people meet and interact, and live. weblin.io is account-free and shows people as avatars of their choice protecting user privacy. And since it uses XMPP, it is decentralized.
Project Contact: Wolfspelz
Relevant readings: weblin.io Project description
People: Project members

Scripted Avatars for weblin.io

Brief explanation: Adding the infrastructure required to animate avatars with JavaScript. Typically, avatars in virtual worlds are based on 3D-models with fixed rules rendering these models. Creativity is limited to 3D modelling. This is also the case in weblin.io. But after all, an avatar is just some screen space filled with graphics. Doing the painting with JavaScriptallows for much greater creativity. Scripted avatars can employ all technologies available to the browser engine. 3D avatars might be rendered with Three.js. 2D avatars might use SVG. Anyone (capable of programming) can create an avatar rendering engine which allows for custom avatar designers. Avatars can react programmatically and intelligently to events happening on the web page.
Involved Technologies: JavaScript, TypeScript, Node.js, XMPP
Relevant readings: weblin.io Project description
Project size: 40 60 days
Difficulty: Medium
Deliverables / Expected Results:

  • Proof of concept implementation showing how to add scripted avatars
  • Implementation of the framework that allows for avatar scripting
  • Sample implementation showcasing a scripted avatar engine
  • Pull request with code to add to the webin.io code base

Avatar Designer for weblin.io

Brief explanation: Given that weblin.io allows for custom avatar rendering engines, this project will add a new avatar rendering engine and a way for users to create their own avatar.
Involved Technologies: JavaScript, some web-frontend framework & CSS, docker, XMPP
Relevant readings: weblin.io Project description
Project size: 20-40 days
Difficulty: Medium
Deliverables / Expected Results:

  • An avatar rendering engine for your new scripted avatar type
  • The avatar designer that lets users create their avatar based on your engine
  • Docker container hosting the system

Avatar Theater: A New Art Form

Brief explanation: With weblin.io people meet, chat, and interact on web pages. They appear as avatars on the web pages they visit. Some are just passing by, others spend time with their friends on web pages, like they do in other chat systems. Participants of an avatar theater take part in a stage play, where their avatars perform the act of playing. But instead of moving and talking themselves, participants lend their avatar to the stage engine. The avatar theater stage engine remote controls the participant's avatar. The stage engine also controls the stage set. Basically, the stage engine conducts the play, but it is the user's responsibility to provide an appropriate avatar. User's don't have to learn the text, but they can still be part of a stage play. This project implements the stage engine for the avatar theater as a weblin.io item.
Involved Technologies: Node.js or any other web server technology, docker, XMPP
Relevant readings: weblin.io Project description
Project size: 40-60 days
Difficulty: Medium
Deliverables / Expected Results:

  • Proof of concept implementation of remote-controlled avatars via XMPP
  • Avatar theater stage engine
  • Wrapping the engine into a weblin.io item that can play everywhere
  • Stage set control
  • A GUI for script editing and avatar onboarding
  • Docker container hosting the system

XMPP based MUD on Web Pages

Brief explanation: The entire web is weblin.io's playground. Weblins not only meet and communicate, but they can also play games, e.g. multi user dungeon style (MUD). The goal of this project is to turn the web into a MUD with quests, monsters, adventures, and role playing. The rules are entirely up to you. You can choose D&D-like rules, any other rule set, or roll your own. The genre is also up to you, be it Fantasy, SF, Urban, Historic. People will then experience adventures across the web and hunt monsters in XMPP chat rooms. Weblin.io already shows items and avatars on web pages, you add rules, quests, and monsters.
Involved Technologies: Node.js or any other web server technology, docker, XMPP
Relevant readings:

Project size: 60 days
Difficulty: Medium
Deliverables / Expected Results:

  • Proof of concept implementation of an interactive MUD engine as XMPP bot
  • Selection of a rule set, genre, and software design choices that make the XMPP/web a MUD
  • Implementation of a basic adventure system
  • Docker container hosting the system
  • Converting, acquiring, or creating graphics for items and monsters

Your own ideas

You feel confident to propose your own well-stated idea? Then please ahead. First reach out in our GSoC group chat please.

To make a good proposal yourself please be aware that you:

  • Need to be significantly more motivivated for this project
  • Apply active engagement with the XMPP Community now
  • Apply self-organisation and motivation to understand XMPP technology to a higher level than expected from contributors to existing ideas