[Second Draft] Designing a document based collaboration interface

.. this post is the continuation of my first draft which you could find it here –http://dolftax.com/2015/04/Designing-a-document-based-collaboration-interface/. I would ask you to go through the first draft before proceeding here, because here I’ve explained only the wireframes which are modified/tweaked, based on the comments on the first draft. This post is structured as /me resolving the comments on my first draft, with the new wireframes and explaining the reasons for modification.

Rooms could be nested

#1 : We could not enforce a topic/subtopic structure because rooms can be deeply nested. Topics and subtopics are all rooms. The users are free to organize the rooms as they wish. They could be topics, they could be something else. At every level, there may be documents and more rooms.

=> Removed topic/subtopic structure. As the rooms are completely nested, a room could contain any number of sub-rooms. Rooms and documents are analogous to folders and files. But wait, there are containers which are multi-part documents. To get the clear idea of what we mean by containers- refer to the discussion we had IRC log –https://tr.im/UOZpT

Shared and Private workarea

#2: The basic elements in sTeam are users, groups, rooms and documents. Each group has a workarea connected to it, and each user has a private workroom. Each user is a member of at least one group. So when a user enters the server, there are at least two rooms: the users private workarea, and the workarea of the group, that the user is a member of.

=> Workarea implemented. Under shared workarea, the user will get list of all rooms and documents which he got access to. Under private workarea he would get list of his private documents and rooms, which when shared will move to the shared workarea.

Shared Workarea

Shared Workarea - admin

Private Workarea

Private Workarea -admin

If you notice, you could create a room or document only in your private workarea. When you change permissions for a room/document in your private workarea, it would be pushed to shared workarea automatically.

Permissions are inherited

If a room has rw permissions, then everything inside the room also has rw permissions.

Room view – Level two

Room View - Level two

Notice the settings icon? Except for the first level, (levels are tracked by the level/stage bar) a user could change room/document attributes with the help ofsettings icon which pops up a window with following options.

Settings pop

The settings option appears only in the levels inner to level 1, because obviously, if the user is in the first level, he is not into any room.

#3: The user can move from room to room. The server keeps track of where the user is, and actions taken (such as creating a document) are relative to the users location. Users can pick up documents (the document is moved from the room, to the user itself), move to another room and drop the documents there.

=> When a document is selected, the copy and paste buttons (look at the above wireframe. buttons next to sort options) are activated. Clicking copy would copy the selected document, and allows you to paste it in any room (where you got access to) until the end of the session. Navigation between rooms could be done by clicking << button. It would popup the navigation sidebar on the right.

Sidebar Right

Also, if you wish to join any room, use the search bar. It would fetch you the list of rooms. Some rooms will not allow you to access the documents. Click on the user request icon next to room name, which would notify the room admin. When he gives you access, the room/document would be displayed in your shared workarea.

Search Results view

Search Results

Permission table

#4: A user should be able to insert objects without read and write permissions. One example where this is needed is to send your homework to your teacher. You get permission to insert into the teachers room, but once it’s in there, you can’t read it or write it anymore. It allows far more fine grained permissions than a unix system.

=> A permission button has been added to the ‘onClick of a Room’ view which will be available for the room admin and you.

In room view - Admin

For an admin, the permission table pop-up would look like the below wireframe (which is self-explanatory)

Permission table popup

Minor tweaks

Room sidebar removed

The room attached sidebar options has been moved to the settings popup. A detailed view of a room in any level would look like,

Room Detailed

Document View

In document level view, the following options are added,

  • Workarea bar
  • Delete document option (If access permits)
  • Permissions button

Document View

Guest view

A guest (who is not logged in) could view the rooms/documents. The view for a guest would look like,

Guest room view

PS: No changes have been made to Create room and Create document pop-ups.

Let me know what you think!

[First Draft] Designing a document based collaboration interface

This post is about my way of approach to develop User Interface for a document based collaboration platform. The Ideation is based on Martin’s thoughts, which you can find it here – http://societyserver.org/Topics/sTeam/Interface-elements-for-Document-Management . I would ask you to read the post and be back here.

The structure lives and evolves. and so do the documents. – Martin

Alright, You’re back! The primary goal was not to develop a separate admin panel. Rather the interface adds up extra admin options based on the permissions given to the logged-in user (Maybe, admin).

When I say admin, it means the authorized user who has Read/Write permissions and guest stands for non-authorized user who has only Read permissions.

As quoted, everything here would be documents, of any type (images, plain text, source code, ..) They should be structured into hierarchies. The admin/authorized user should be able to add new room, able to sort by Title/Author/Date, able to Re-arrange the documents, implemented as drag and drop.

![Home Admin && User ](https://raw.githubusercontent.com/dolftax/dolftax.github.io/master/sTeam/wireframes/1.png)

Each room should have

  • Topic
  • Description
  • Keywords

and good to have various other attributes which might explain the room well. The admin has a sidebar which options to perform CRUD (Create/Read/Update/Delete) operations on a room. The sidebar is hidden for guest user. The wireframe below is detailed/zoomed view of a room in the above image.

![Room – Detailed View Admin](https://raw.githubusercontent.com/dolftax/dolftax.github.io/master/sTeam/wireframes/2.png)

Creating a room asks for Room specific information. If you look at the wireframe below, they are self-explanatory. Permission would be set at this level whether it could be Shared/Private.

Create room

On click of a Room/Topic opens up the sub-topics under the room. The listing could be sorted and searched. Communication, being one of the major element for collaboration would be of comments. The admin gets to moderate (Approve/Delete) the comments. At this level, the comments are room-specific.

![onClick of Room Admin](https://raw.githubusercontent.com/dolftax/dolftax.github.io/master/sTeam/wireframes/4.png)

You should have noted the >> on the right. It opens up a sidebar with Room/Topic listing which then nests into Sub-topic listing. These are the doors which helps the user for hassle-free navigation between rooms.

Sidebar navigation - Right

The sub-topic ( as same as Topic) has description, keywords and various other attributes. The sidebar of options and Add Sub-topic for admins to perform CRUD operations on them. The Sub-topic sidebar would be hidden for guest user.

Sub-topic Detailed View

Considering the hierarchy as a tree, the leaf node be the document. A document could be of any type,

  • markup-text (markdown, html, others)
  • xml, json, csv
  • source-code
  • image
  • audio
  • video
  • binary
  • object (instance of a script)

Displaying the content of a document in the browser would be based on the type of the document. Anything text based, images and videos are displayed. For other binary files or objects, only metadata is displayed (owner, date of creation etc). And binaries would have a download link. Comments at this level is document specific.

At any level, one should be able to navigate to any room/topic (or) sub-topic with the help of the right sidebar drawer.

The admin has the following options for each document,

  • Link
  • Copy
  • Edit
  • Curate (based on document type)

.. whereas guest would have everything else other than Edit.

Link icon pops up a list of Rooms (where the present logged in user has access to) which on click results in adding a link of the document to the respective room. Edit icon opens up the editor only if the document type is of something which could be edited in a browser. A complete document could also be deleted. The interesting part is to distinguish the documents based on the document-type, visually. TheCurate icon pops up the list of documents in the specific room which are of the same document type as the currently viewed one.

Document View - Admin

A document would be displayed like the below wireframe for a guest user.

![Document View User](https://raw.githubusercontent.com/dolftax/dolftax.github.io/master/sTeam/wireframes/10.png)

Creating a document asks for document specific information and feature for uploading the document. I assumed MIME-Type would be automatically detected. Else, an option could be added. Permission could also be set at document level.

Create Document

With that said, if you have any suggestions (or) if I’m missing something here, please start the discussion below. Note that these are bare minimum wireframes and therefore would be slightly modified during implementation.

UPDATE: Uh oh! I missed containers. Expect a bit of restructure in my next draft.

Cheers!

Google Reunion in Silicon Valley with FOSSASIA

Being at the get together of more than 500 mentors and students of over 200 projects from 50 countries at the 10th anniversary of Google Summer of Code and join the celebrations at the Reunion 2014 is an amazing experience. It was the first time that Google brought together such a large number of contributors in Silicon Valley for a fantastic Unconference, a great day out at the “Great America” and a Gala at the San Jose Tech Museum with Linus Torvalds and a catering with an outstanding American Fusion cuisine.

Google Mentor Summit Tshirts

Yes, 10 years! Google Summer of Code is the only program of a company supporting hundreds of Open Source projects for many years and bringing them together with students from around the world. The magnitude of this support shows the real commitment of Google to Free and Open Source Software and I would like to thank everyone involved including Carol Smith, Cat Allman and Stephanie Taylor, and all the other fantastic people at the Open Source office supporting us.

The idea of free sharing and collaboration across borders has always inspired me. And I could not be happier to enter the conference room in San Jose – full of creators, developers, contributors of many amazing Open Source projects such as Mozilla, KDE, Python, Haiku, Blender, GNU, Debian, Inkscape and many more.

Google Reunion 2014 in San Jose with FOSSASIA

In previous years, the program brought together mentors of each active organization, but for this years celebration Google also flew in mentors of former years and even some students of the program. As an organizer of our annual FOSSASIA event I know what a challenge it can be to bring in a few dozen speakers from different parts of the world, but flying in 500 Open Source contributors from around the world is a logistic masterpiece. Organizing this event takes a huge amount effort and resources. Two thumbs up for the organizing team, they did an amazing job. I am grateful to be among the participants.

Great Day Out at the Great America

Every year the Mentor Summit spreads out in two days filled with interesting unconference sessions, lighting talks, and plenty of spaces for group discussing and code sprints. This time Carol and the team went an extra mile to surprise participants with an additional day-out at the Great America Theme Park (exclusively for us!). Believe it or not the majority of my lovely geek friends apparently have never been to an amusement park in their lives. We had such a great morning and afternoon there. I am sure some of us will never forget that very first roller coaster ride. It is great that Google makes this experience possible for mentors and appreciates their contributions.

Google Reunion 2014 in San Jose / Mentor Summit USA

Gala at the Tech Museum San Jose with Linus Torvalds

Another of the highlights of this year was the Gala at the Tech Museum in San Jose. Everyone dressed up in beautiful garments. It was fun to see all the developers who kind of always wear black shirts suddenly dressed up. And, on top of organizing everything the team also arranged a meetup with a star of the Free and Open Source community: Linus Torvalds joined us as a special guest. Of course Linus was everyones hero. And I was thrilled to meet him and Dirk Hohndel just before their talk. Sincerely thanks to Cat Allman for introducing him. I took the chance to invite them to our next FOSSASIA in Singapore, which will take place from March 13-15, 2015.

Linus Torvalds FOSSASIA Meetup at Google Reunion with Hong Phuc Dang, Dirk Hohndel, Mario Behling

After the interesting talks about the history of Linux, Open Source at Google and future projects, we experienced the interactive exhibits at the Tech Museum and enjoyed more of the yummy food. Coming from Asia, experiencing the food in the US is always very special for me. Especially in Silicon Valley and San Francisco I love the Fusion food, the blend of Western food and Asian cuisine. On the night of the party, the Google team really did arrange a fantastic catering with very friendly caterers, who knew a lot about all the different ingredients. I learned from Stephanie that this was one of the best catering companies and that they came all the way from San Francisco. It was truly special indeed.

Participants at the Reunion

Personally I was so excited to meet with the developer team of Processing at the Google Reunion. Processing is one of my favorite software applications. One team member – Andres Colubri from Argentina – told me he finally met his friend and co-developer whom he worked together with during the last 7 years but never got a chance to meet.

Some voices of participants of this years summit: Doris Lee, a first year GSoC from Taiwan said: ”The program is a great way to practice and apply what I have learned in programming. I took computer science at UC Berkeley but I never had the feeling I get the right assignments to work on. I enjoyed so much to work with GSoC program which gives me a chance to improve my coding skill, to learn how to use Git, Python and much more.”

Google Mentor Summit FOSSASIA, Hong Phuc Dang, Doris Lee

Adnan Zahid – 2nd year GSoC student also commented: “It is good that Google created the program for public benefits and I wish this program can be extended not only during summer but throughout the entire year. My suggestion is to create cooperation between Open Source projects and universities so that the schools constantly receive assignments and then distribute them to students”

Hamish Bowman from OSGeo said: “We are participating at GSoC for many years and I am happy to see new and old faces at the Reunion. For me the mentor summit is a chance to meet developers from projects, that we are using and working together with. Many of them, we would not be able to meet some anywhere else. After a long time, I had the chance to talk again with Mario Behling who is working with lots of projects and founded Lubuntu. It was great to see Mario’s excitement when I showed him our OSGeo Live distro which we build on top of Lubuntu.”

Google Reunion Hamish Bowman and Mario Behling Lubuntu Founder

I also spoke with one of the most senior mentors – Kevin Krammer from KDE, it was Kevin’s 10th time mentoring. He said: “This is a fantastic thing. I appreciate the opportunity to be mentor. I think we had very good students who have helped KDE a lot during the past few years. GSoC gives us the possibility to experiment new things for which we normally do not have enough resources and this is a great training opportunity as well.”

 

The closure Q&A session marked another year of GSoC was over. We are all looking forward to another 10, 20, 30 …years to come. Once again congratulations to GSoC 10th Anniversary!

Links:

FOSSASIA http://fossasia.org

Google Melange http://google-melange.com

GSoC Ideas 2014

FOSSASIA aims to participate in the Google Summer of Code 2014. We are working together with a number of Open Source developers in the region and function as an umbrella for different projects. If FOSSASIA gets accepted, you will find more information about the application procedure for students on this page.

The ideas list below gets updated continuously as students also submit ideas in the process. So, please check back again later. If you have your own idea or small project, please apply for FOSSASIA on the Google Summer of Code website!

If you have questions or feedback, please write to us on the mailing list: http://groups.google.com/group/fossasia

We have four areas for our GSoC projects 2014:

 


Open Design Projects, Garments, Knitting


 

Develop 2D Body Measurement App

The goal of this project is to provide users with an Android app that assists them in measuring their body data for generating customized patterns. The measurements are taken according to standardized measure points which are usually used by tailors. The student needs to propose a design and step by step guide to collect the measurements of the user. The data will be saved to the app or as a file, with additional options to export data as a Google spreadsheet and submit data to a web service.

A draft of a file format has been developed. A sample part below:

<document-info>
<personal>
   <family-name></family-name>
   <given-name></given-name>
   <birth-date></birth-date>
   <sex>female</sex>
</personal>
<body-measurements>
   <unit>cm</unit>
   <head_and_neck>
     <head_girth></head_girth>
     <mid_neck_girth></mid_neck_girth>
     <neck_base_girth></neck_base_girth>
     <head_and_neck_length></head_and_neck_length>
   </head_and_neck>
   <torso>
     <center_front_waist_length></center_front_waist_length>
     <center_back_waist_length></center_back_waist_length>
     <shoulder_length></shoulder_length>
     <side_waist_length></side_waist_length>
     <trunk_girth></trunk_girth>
     <shoulder_girth></shoulder_girth>
     <upper_chest_girth></upper_chest_girth>
     <bust__girth></bust__girth>
     <under_bust_girth></under_bust_girth>
     <waist_girth></waist_girth>
     <high_hip_girth></high_hip_girth>
     <hip_girth></hip_girth>
     <upper_front_chest_width></upper_front_chest_width>
     <front_chest_width></front_chest_width>
     <across_front_shoulder_width></across_front_shoulder_width>
     <across_back_shoulder_width></across_back_shoulder_width>
     <upper_back_width></upper_back_width>
     <back_width></back_width>
     <bustpoint_to_bustpoint></bustpoint_to_bustpoint>
     <halter_bustpoint_to_bustpoint></halter_bustpoint_to_bustpoint>
     <neck_to_bustpoint></neck_to_bustpoint>
     <crotch_length></crotch_length>
     <rise_height></rise_height>
     <shoulder_drop></shoulder_drop>
     <shoulder_slope_degrees></shoulder_slope_degree>
     <front_shoulder_slope_length>
     <back_shoulder_slope_length>
     <front_shoulder_to_waist_length>
     <back_shoulder_to_waist_length>
    </torso>
    <arm>
     <armscye_girth></armscye_girth>
     <elbow_girth></elbow_girth>
     <upper_arm_girth></upper_arm_girth>
     <wrist_girth></wrist_girth>
     <scye_depth></scye_depth>
     <shoulder_and_arm_length></shoulder_and_arm_length>
     <underarm_length></underarm_length>
     <cervical_to_wrist_length></cervical_to_wrist_length>
     <shoulder_to_elbow_length></shoulder_to_elbow_length>
     <arm_length></arm_length>
   </arm>
   <hand>
     <hand_width></hand_width>
     <hand_length></hand_length>
     <hand_girth></hand_girth>
   </hand>
    <leg>
     <thigh_girth></thigh_girth>
     <mid_thigh_girth></mid_thigh_girth>
     <knee_girth></knee_girth>
     <calf_girth></calf_girth>
     <ankle_girth></ankle_girth>
     <knee_height></knee_height>
     <ankle_height></ankle_height>
    </leg>
    <foot>
     <foot_width></foot_width>
     <foot_length></foot_length>
      <foot_girth>
    </foot>
    <heights>
     <height></height>
     <cervical_height></cervical_height>
     <cervical_to_knee_height></cervical_to_knee_height>
     <waist_height></waist_height>
     <high_hip_height></high_hip_height>
     <hip_height></hip_height>
     <waist_to_hip_height></waist_to_hip_height>
     <waist_to_knee_height></waist_to_knee_height>
     <crotch_height></crotch_height>
   </heights>
</body-measurements>
</body-measurements>
</hdf>

Project: Valentina Patternmaking Project

Website: http://www.valentina-project.org

Skill Level: Medium

Usefull skills: Android development, UI design, Java, formats, CSS, Phonegap or other framework

Mentors: Mario Behling [http://mariobehling.de], Hong Phuc Dang

 


 

Develop a GUI for the Adafruit Knitting Machine Project

The goal of this student project is to facilitate the production process with the Brother KH-930e Knitting Machine, that can be controlled by Open Source software as below. Parts of the process require commandline experience and Python knowledge. In order to enable more knitting enthusiasts to use Open Source knitting machines, we hope to find a student that takes on the challenge and comes up with ideas to make this process easier. Below a video of the current work process and step by step descriptions.

 

Disk Drive/Computer Connection Notes

The external floppy drive for this machine was the same as a Tandy PDD1 (Portable Disk Drive 1). This drive is connected using a serial port. There is documentation on the internet about how to connect these drives to computers, but the connector pinout on the knitting machine is different than the drive, and I didn’t find that documentation to be helpful. I was able to figure out the connector pinout by examining the knitting machine PCB.

Knitting Machine/Computer Connection Notes

The knitting machine drive connection uses CMOS voltage levels, not RS-232. Here is the pinout of the drive connector on the knitting machine:

      _____
      |   |
______|___|______
|   |   |   |   |
| 7 | 5 | 3 | 1 |
|___|___|___|___|
|   |   |   |   |
| 8 | 6 | 4 | 2 |
|___|___|___|___|

The pin numbering is shown as they are labeled on the knitting machine PCB, and does not agree with other documents I found on the web.

Connector Pinout
Pin Signal I/O Notes
1 Ground    
2   Out Tied to 5, Pulled up through 1K resistor
3 CTS? In (Tie to pin 2)
4 No Connection    
5   Out Tied to 2, Pulled up through 1K resistor
6 RXD In  
7 TXD Out  
8 RTS? Out Follows state of Pin 3 (buffered)

Methods of connecting the knitting machine to a computer

Using a FTDI serial adapter cable (RECOMMENDED)

Using an FTDI adapter is the best way to assure that you are interfacing with the machine using the same signal voltages as the original external floppy drives. This is documented on this wiki page, which will someday be merged with this one.MProg only runs under windows.

Using a USB serial adapter WITH flow control

This is a method I have used extensively with one model of knitting machine, but I no longer recommend it. Although it does not require any additional hardware like a FTDI adapter, this method does not present the exact same voltage levels to the knitting machine as the external drives which were designed to work with the machine. Although I have not had any reports of problems, it is possible that this method could stress the knitting machine input circuitry, and therefore I think it is safest not to use it.

Cable connections with flow control
Knitter 9 pin connector
1 5
6 3
7 2
8 4

Using a USB serial adapter WITHOUT flow control

I have pulled pin 3 high, and am not using flow control in my software. I have not had problems with data loss while sending to the knitting machine, and the machine I am using is fast enough to always keep up with data received from the knitting machine. The data rate is 9600 bps, and the largest amount of data sent at once is 1024 bytes. Here is the cable I am using to connect the knitter with a USB 9 pin serial port:

Cable connections without flow control
Knitter 9 pin connector
1 5
2 tie to 3  
6 3
7 2

Software Interface Information

There are a number of documents on the web about the Tandy PDD1 and the serial API for it, Most of them are incomplete. The knitter places the drive into a mode called “FDC emulation Mode”, which allows access to raw sectors. This document is the most complete documentation I was able to find: Media:Tandy-Disk-Reference.pdf

External Disk Drive Emulator

I have written software that emulates the external disk. It runs under Linux and keeps the data as files on the linux file system. This allows knitting designs to be saved and restored using the emulation computer. I am using these files to reverse-engineer the knitting machine file format. The emulator is written in Python, and released under the GPL. It has been tested most extensively under Ubuntu Linux. I have reports that it does not work on windows due to problems with the serial library. It has been successfully run under OSX. If you have any information to add about platforms that it does or doesn’t work on, let me know and I will update this informationI am happy to work with people who are trying to use the emulator with different models of knitting machine, and hoep to improve compatibility with other machines. The source code is available in the git repository listed above. Software for manipulating Brother data file: I have begun a python class which will provide an API to the brother data files. Source code is in the git repo. Knitting Machine File Format: A lot of the file format is now understood. Documentation is in the git repo.Work on this continues.This work was greatly helped by prior work performed by John R. Hogerhuis and posted on the kminternals yahoo group.

Links

Media:Portable_Disk_Drive_Operation_Manual.pdf

BL5 Brotherlink 5 serial or USB cable Brotherlink information

Yahoo group dedicated to hacking brother machines

Brother Liberation Front is working on open source interfaces

Info and protocols for the FB-100 interface

KE-100 motor drive (not sure that this is the right model drive for the KH-930E)

 

Project: https://github.com/adafruit/knitting_machine

More info: http://mariobehling.de/brother-kh-930-knitting-machine-hacking-and-knitting-tutorial

Skill Level: Medium to High

Useful skills: Python, Knitting Patterns, Image design

Mentor: Mentors to be announced

 

 


Create search functions and import pattern functions for Valentina

Valentina is a development project to edit pattern files for garments and textiles. The goal of the student project is to implement a method to choose additional design items, e.g. different collar styles, and to add them into a pattern during development.  In addition, the user should have the capability to organize their created patterns into categories, and conduct searches of patterns based on this organization. 

The student would develop user functions to add search tags to patterns, search for patterns, and select patterns from search results to load into the currently open pattern.

Background: One of the main ideas of Valentina is to enable users to create custom sized patterns based on applying an individual’s measurement data to pattern formulas, independent of industry sizing standards. Similar industry software packages include Assyst (www.assyst-intl.com), Lektra (www.lectra.com), Grafis (http://www.grafis.com), plus others. Grafis in particular enables users to generate patterns based on formulas derived from pattern descriptions from standard books (e.g. books published by Mueller und Sohn.) Currently available industry software, however, does not aim at the DIY/maker or SME markets.

Project: Valentina Patternmaking Project

Website: http://www.valentina-project.org

Skill Level: Medium

Usefull skills: Vector graphics, C++, Qt5, basic knowledge of garment patterns, basic knowledge of generating patterns from formulas

Mentors: Hong Phuc Dang to be announced

 


 

Port Valentina to different platforms, build packages and refactor code

Currently the installation process of Valentina is only semi-automatic on Linux and Windows. For MacOSX there is no port yet available. The goal of this project is to automate the build process for the major operating systems. Create a standard workflow for Windows .exe builds, create a MacOSX port and provide packages for the major Linux distributions. The challenge of this project is to work with a number of projects and partners. For example, it is possible to create .deb packages for Debian. In order to get the package accepted in the Debian repository, it is necessary to get approval of established Debian developers who verify that the package build was done according to best practices. Similar procedures are required for other distributions. The second part of this project is to refactor code and replace deprecated code including if constructions with switch. Please see below.

Many if constructions replace with switch.

Methods:

VDomDocument::ParsePointElement
VDomDocument::ParseSplineElement
VDomDocument::ParseArcElement
VDomDocument::ParseToolsElement

For example:

QStringList arcs;
arcs
<< VToolArc::ToolType << VNodeArc::ToolType;

switch(arcs.indexOf(type)){
case 0:
// parse arc tag
break;

case 1;
// parse node arc tag
break;

default:
// print warning
break;
}

Project: https://bitbucket.org/dismine/valentina/overview

Mailing List: https://groups.google.com/forum/#!forum/valentina-project-list

Skill Level: Medium

Usefull skills: C++, Qt , Windows exe build, MacOSX, Linux packaging

Mentors: to be announced

 


 

Add Design items and Measurement Tables for Patternshare

Patternshare is a development project of a web application to edit pattern files for garments and textiles. The goal of the student project is to implement the choice of additional design items, e.g. different collar styles, and to add them to the patterns. Patternshare users should be able to generate non-custom sizes on the fly and add their own measurements table in the app. Another required feature is to add specific design items or changes, e.g. starting from size 36 up to 42. In order to establish a suitable way to allow the sharing of patterns in an industry quality, patternshare needs to support these features and be able to import and export CAD files.

Background: One of the main ideas of patternshare is to offer a web service that enables people to edit patterns independently from standard sizes. Similar industry software packages including Assyst (www.assyst-intl.com), Lektra (www.lectra.com), Grafis (http://www.grafis.com) and other exist. Grafis in particular seems to generate patterns in the same way, that we do it in patternshare – based on formulars which are defined from pattern descriptions from standard books. Many standards defined in books from Mueller und Sohn for example. The current players do not aim at the maker and SME market.

Project: https://github.com/sconklin/tmtp-patternshare

Website: http://www.taumeta.org

Skill Level: Medium

Usefull skills: Implementation of Mathematical Algorithms, Javascript, Fabric,js, Rafael.js, HTML, vector graphics

Mentors: Hong Phuc Dang to be announced


Web and Mobile Development


Implement Post to Github in NGO photo app and develop a Jekyll/Markdown Website

The goal of this GsoC project is to develop functions, that allow users of the phimpme photo app to upload images to their gallery that uses Jekyll, Javascript and Markdown. The most well-known one sites using these technologies are github pages. The phimpme photo app connects to “any social service” and Open Source CMS. It was developed for development projects in South East Asia and Open Sourced recently. Phimpme is a beautiful photo app that already works with any web systems based on Drupal, Joomla and WordPress. Android and iOS versions exist.

Project: https://github.com/phimpme

Skill Level: Medium

Useful skills: Web Api, Android Development, HTML, Jekyll, Markdown, Knowledge of CMS

Mentor: Hon Nguyen [Vanhonit], Mentor 2 to be announced

 


 

Anonymous mode and autosharing for phimpme Android app

Implement an anonymous photo sharing mode with auto-connect options to nearby phone , computers and wifi nodes with public sharing capability. Bluetooth connectivity was already implemented in the app to support this future feature. The implementation of Wi-Fi direct would require to change the minimum required version for Android to version 4.1 (Jellybean). Some functions and libraries that are required for this project are already implemented partly for other services. The goal of this project is also to use existing libraries and extend or change them where necessary to keep the code base clean and small. To make full use of an anonymous sharing mode as many systems as possible should be supported, e.g. shared folders on PCs, public ftp and other phones. The requirements include that sharing works without an Internet connection (local networks without Internet and other devices are available to connect). At the beginning of the project we require the student to define a list of features he/she plans to develop during GSoC and a timeline.

Project: https://github.com/phimpme

Skill Level: Medium to High

Useful skills: Nearfield Communication, Wifi, Wi-Fi Direct, Bluetooth, ftp, avahi, Android Development, Java

Mentor: Mario Behling [http://mariobehling.de], Andre Rebentisch [http://wikical.com]

 


Network and Mesh Technologies

 

Develop Web Interface Administration tool for large numbers of Nodes (routers) for OpenWrt based on kalua

Kalua is a hardware-independent OpenWRT-extension (using busybox-ash as main-language) for setting up, monitore and manage many, large wifi-mesh-networks for different locations including billing, captive portal / splash screen / weblogin, accounting, data retention and layer7/8-QoS. OpenWrt is a widely used Linux distribution for embedded devices and specifically routers. Large networks consist of hundreds and even thousand of nodes. Administration of routers, e.g. ESSID setting is a long process.

The goal of the project is to develop a new web interface to show the status of routers and enable mass administration of devices.

configure the builtin-packages

# the fast and easy automatic way:
kalua/openwrt-build/mybuild.sh set_build standard
make defconfig

# the way to understand what you are doing here:
make kernel_menuconfig      # will safe in 'build_dir/linux-${platform}/linux-${kernelversion}/.config'

    General setup ---> [*] Support for paging of anonymous memory (swap)
    Device Drivers ---> Staging drivers ---> [*] Compressed RAM block device support

make menuconfig         # will safe in '.config'

    Global build settings ---> [*] Compile the kernel with symbol table information

    Base system ---> busybox ---> Linux System Utilities ---> [*] mkswap
                                  [*] swaponoff
    Base system ---> [ ] firewall

    Network ---> Firewall ---> [*] iptables ---> [*] iptables-mod-ipopt
                             [*] iptables-mod-nat-extra

    Network ---> Routing and Redirection ---> [*] ip
    Network ---> Routing and Redirection ---> [*] olsrd ---> [*] olsrd-mod-arprefresh
                                 [*] olsrd-mod-jsoninfo
                                 [*] olsrd-mod-nameservice
                                 [*] olsrd-mod-txtinfo
                                 [*] olsrd-mod-watchdog
    Network ---> Web Servers/Proxies ---> [*] uhttpd
                          [*] uhttpd-mod-tls
                          [*] Build with debug messages

    Network ---> [*] ethtool    # if needed, e.g. 'Dell Truemobile 2300'
    Network ---> [*] mii-tool   # if needed, e.g. 'Ubiquiti Bullet M5'
    Network ---> [*] netperf
    Network ---> [*] ulogd ---> [*] ulogd-mod-extra     # if data retention needed

    Utilities ---> [*] px5g
               [*] rbcfg    # if needed, e.g. 'Linksys WRT54G/GS/GL'
  • usage
    • login via ssh
    • prepare the router by calling firmwarewget_prepare_for_lowmem_devices
    • fetch/copy firmware image to /tmp/fw
    • call firmwareburn

Useful Skills: Linux development, OpenWrt, Embedded devices, Web UI design, Gimp, Inkscape, Lua, Scripting

Skill Level: High

Project: https://github.com/bittorf/kalua

Mentor: Bastian Bittorf [http://bittorf-wireless.de], Mentor 2 – to be announced

 


Peer to Peer Technologies and Cryptography

 

OpenCoin Digital Cash App

OpenCoin is a true digital cash system, similar to the former DigiCash/eCash based on tokens and providing real anonymity. A prototype wallet app is already available and has been written in JavaScript. Project scope is to implement a mature wallet with additional features (e.g. p2p transactions, encrypted wallet, QR codes), better look and feel and plattform independent (e.g. C, JavaScript+PhoneGap) Make yourself familiar with the OpenCoin protocol Agree the feature set Develop and test the wallet

Project: http://opencoin.org , https://github.com/OpenCoin

Skill Level: Medium

Usefull skills: Scala programming language, Twitter’s Finagle server, SBT build tool, Optional: Eclipse IDE is recommended, Optional: Coins are stored in a SQL database via squeryl library

Getting Started:

* Make yourself familiar with the OpenCoin protocol

* Agree the feature set

* Develop and test the wallet

Mentors: Jan Suhr [http://suhr.info], Joerg Baach [https://github.com/jhb]

FOSSASIA is Mentor Organization for Google Summer of Code 2014

FOSSASIA participates again as a mentor organization in Google Summer of Code 2014. Students can apply for scholarships of FOSSASIA on the Google Melange website. Accepted projects will be published on the site here.

Google Summer of Code is a program that offers student developers stipends to write code for various open source projects.  Historically, the program has brought together over 7,500 students with over 440 open source projects, to create over 50 millions of lines of code. The program, which kicked off in 2005, is now in its tenth year. If you are feeling nostalgic or are interested in learning more about the projects we have worked with in the past, check out the 2006, 2007, 2008, 2009, 2010, 2011, 2012, and 2013 program pages (https://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2014/help_page)

FOSSASIA Google Summer of Code 2014

Timeline

10 March: 19:00 UTC Student application period opens.
21 March: 19:00 UTC Student application deadline.
Interim Period: Mentoring organizations review and rank student proposals; where necessary, mentoring organizations may request further proposal detail from the student applicant.
18 April: All mentors must be signed up and all student proposals matched with a mentor – 07:00 UTC Student acceptance choice deadline.
21 April: 19:00 UTC Accepted student proposals announced on the Google Summer of Code 2014 site.
Community Bonding Period: Students get to know mentors, read documentation, get up to speed to begin working on their projects.
19 May: Students begin coding for their Google Summer of Code projects; Google begins issuing initial student payments provided tax forms are on file and students are in good standing with their communities.
Work Period: Mentors give students a helping hand and guidance on their projects.
23 June: 19:00 UTC Mentors and students can begin submitting mid-term evaluations.
27 June: 19:00 UTC Mid-term evaluations deadline; Google begins issuing mid-term student payments provided passing student survey is on file.
Work Period: Mentors give students a helping hand and guidance on their projects.
11 August: Suggested ‘pencils down’ date. Take a week to scrub code, write tests, improve documentation, etc.
18 August: 19:00 UTC Firm ‘pencils down’ date. Mentors, students and organization administrators can begin submitting final evaluations to Google.
22 August: 19:00 UTC Final evaluation deadline. Google begins issuing student and mentoring organization payments provided forms and evaluations are on file.
22 August: 20:00 UTC Students can begin submitting required code samples to Google
25 August: Final results of Google Summer of Code 2014 announced

Links

* Google Summer of Code 2014 https://www.google-melange.com/gsoc/homepage/google/gsoc2014

Crypto Stick accepted as Google Summer of Code Mentor Organization

Crypto Stick has been accepted as a mentor organization for Google Summer of Code (GSOC) 2013. If you are a student interested in working on cool crypto stuff, developing a high security system, latest web security or embedded programming – this is for you. You can apply for a project and if accepted the mentors will work with you over the summer and Google will sponsor you 5000 USD during that time.

Please check out the ideas page at https://www.assembla.com/spaces/cryptostick/wiki/Ideas or suggest your own idea.

And, join the mailinglist to discuss it: https://lists.crypto-stick.org/mailman/listinfo/dev

Your applications should be submitted through Google Melange (https://google-melange.com) between March 26 and April 6. Generally, it is better to submit your application early as mentors like to discuss proposals.

Important dates are:

* March 17-25: Would-be student participants discuss application ideas with mentoring organizations.

* March 26, 19:00 UTC: Student application period opens.

* April 6, 19:00 UTC: Student application deadline.

You can continue to submit additional information and comments into the system after your initial application submission. In order to participate in the program, you must be a student in an accredited institution or university.

Links:

* Crypto Stick project: http://crypto-stick.org

* Ideas Page: https://www.assembla.com/spaces/cryptostick/wiki/Ideas

* GSOC Progam F&Q: https://google-melange.appspot.com/gsoc/document/show/gsoc_program/google/gsoc2013/help_page

* Crypto Stick Mailing List: https://lists.crypto-stick.org/mailman/listinfo/dev

* Google Melange: http://google-melange.com

Google Summer of Code Ideas 2013

FOSSASIA aims to participate in the Google Summer of Code 2013. We are working together with a number of Open Source developers in the region and function as an umbrella for different projects. If FOSSASIA gets accepted, you will find more information about the application procedure for students on this page.

The ideas list below gets updated continuously. So, please check back again later. And: The best ideas are often ideas of students themselves. So, if you have your own idea or small project, please apply for FOSSASIA on the Google Summer of Code website!

If you have questions or feedback, please write to us on the mailing list: http://groups.google.com/group/fossasia

Important dates for students:

April 9 – 21: Would-be student participants discuss application ideas with mentoring organizations.

April 22: 19:00 UTC: Student application period opens.

May 3: 19:00 UTC: Student application deadline.

GSOC Ideas for FOSSASIA

1. Phimpme Android App

This photo app to connect to “any social service” and Open Source CMS is a project of developers from Vietnam. The goal is to make a beautiful app that also works with web systems based on Drupal, Joomla and WordPress. In Google Summer of Code Students can propose a number of projects around the app. The source code of the app is on github here: https://github.com/phimpme

Ideas for student projects:

Project 1: Implement full Google Maps and OpenStreetMap Support

This project also aims to show photos on a web map on a CMS of own choice.

Usefull skills: Android, Maps API, Understanding of Exif data and implementation, Web development, CMS

Project 2: Add support to more social networks and CMS

Phimpme already supports many social networks including many in Asia. Nevertheless there are still other networks popular in some countries. There are also CMS like TYPO3 which are not yet supported. Students can propose support for other services in this project.

Useful skills: Web Api, Android Development, PHP, Python, Ruby on Rails, Knowledge of CMS

 

2. Meilix Linux Distribution

Meilix is a new Linux project aimed to offer users a fast and easy to use Linux desktop, that can be “frozen” and therefore secured. 

Student projects should implement new features. The goal is to offer a simple user interface to freeze the OS up to different levels, e.g. only freeze the system, but not the home directory.

The Meilix System User Lock can be found on Github here: https://github.com/meilix/systemlock 

Usefull skills: Linux development, Python, Shell, Scripting, GUI design, Inkscape, Gimp

 

3. Networking Tools

OpenWrt is a widely used Linux distribution for embedded devices and specifically routers. Large networks consist of hundreds and even thousand of nodes. Administration of routers, e.g. ESSID setting is a long process.

Student Project: Develop Web Interface Administration tool for large numbers of Nodes (routers) for OpenWrt based on kalua

The goal of a student project would be to develop a new web interface to show the status of routers and enable mass administration of devices. The foundations of this have already been developed in the Kalua application: https://github.com/bittorf/kalua#readme

Useful Skills: Linux development, OpenWrt, Embedded devices, Web UI design, Gimp, Inkscape, Lua, Scripting

Links: http://openwrt.org

 

4. Opencoin.org

Open Coins introduce the idea of versatile digital cash which can be used similar to ordinary cash but allows a higher flexibility. The cash is issued by a central service and you can think of it as digital coins which hold a certain denomination. Each coin is basically a long string like 6A09E317F4BCD… which can be stored locally and transferred between customers in a peer-to-peer manner. Actually the central issuer does not perform the transaction itself but is only involved to ensure the validity of the coins and to prevent fraud by double-spending a coin. This approach is based on David Chaum’s blind signature algorithm in which cryptography protects the coins and ensures the anonymity of the customers. This algorithm was invented 1983 and since then has been analyzed exhaustively by cryptographers and proven to be secure. Since our central issuer service is not directly involved in the transfers, coins can be exchanged peer-to-peer via social networks, e-mail, chat, web portals, and even via portable USB drives.

Links:

* https://github.com/FellowTraveler/Open-Transactions/wiki

https://blindbitcoin.com

* http://opencoin.org

Student Project 1:

The goal is to develop a foundation for the issuer service. The issuer service expose a REST API. For the scope of this project it consists of two simple interfaces for demonstration purposes only:

– A GET interface to allow clients to retrieve coins in JSON format

– A POST interface to allow clients to redeem/send coins in JSON format

Optional: Coins are stored in a SQL database (via squeryl library)

Further Requirements:

– Coins have the following structure: case class Coin(type: String, value: Int)

– The deliverable should contain a documentation which describes how the system is deployed to allow future updates of individual software components. For instance in the future a newer Finagle server version may be used and the documentation should describe step by step how to integrate it with the other libraries and the actual source code.

– Source code should be documented as well.

– Test cases should be performed and documented. Optional: ScalaTest may be used for testing.

Usefull skills and technologies: Scala programming language, Twitter’s Finagle server, SBT build tool,  Optional: Eclipse IDE is recommended, Optional: Coins are stored in a SQL database via squeryl library

The following links might be useful to understand Finagle’s REST capabilities:

https://github.com/robi42/heroku-finagle-rogue/blob/master/src/main/scala/server.scala

https://github.com/twitter/finagle/blob/master/finagle-http/src/main/scala/com/twitter/finagle/http/path/Path.scala

 

Other Student Project Ideas

* Implement opencoin client as a smart phone app (e.g. Android, iPhone, Boot to Gecko)

*Implement core opencoin protocol library in JavaScript. It can be migrated from Python.

* Implement an opencoin client using JavaScript and HTML(5)

* Utilize WebGL to do high performance crypto using JavaScript

* Use the available sensors on mobile phones to generate random numbers that are usable for cryptography (e.g: shake your coins)

* Implement the server side of opencoin using your language of choice (e.g. JavaScript + node.js, Python, Java, Scala, C etc.)

* Implement web wallet in your preferred language which allows users to login an manage their coins and payments.

 

5. Linux Games Distro

The developments in this project are useful for a number of Linux Games distribution. The goal is to create a modern and simple design inspired by new user interfaces in smartphones. The implementation of the UI will be for Linux desktops. The advantage of working with traditional desktop technologies rather than Android is that distributions can make use of numerous games that exist in repositories and combine it with a modern interface.

Project Idea: Develop and implement new UI features with LXlauncher

Apart from designing, developing and implementing new features the student should also package the application for major Linux distributions.

LXLauncher 1: http://sourceforge.net/projects/lxde/files/LXLauncher%20%28for%20Asus%20EeePC%29/

LXLauncher 2: https://launchpad.net/lxlauncher

Useful Skills: C++, Linux Development, gtk+, APIs, GUI design, drivers, Packaging

FOSSASIA Google Summer of Code 2011

FOSSASIA was prominently featured on the Google Open Source Blog. I wrote a short sum up of the student summer projects.

FOSSASIA is participating in Google Summer of Code for the first time this summer. The goal of the FOSSASIA network is to bring young Open Source developers together with experienced international developers to join or start new Free and Open Source projects.

FOSSASIA’s Google Summer of Code projects focus on open source for social change and communication. All the students are putting in a lot of effort, however their progress is varying as students have different skill levels.

The project of “foo-script” (Adam Rakowski) is moving forward most quickly. He expands the uses for the next Crypto-Stick (an USB hardware device with an integrated openGPG smart card firmware) edition and develops plugins for popular applications like Firefox. With the Stick you can easily encrypt your emails and achieve convenient online authentication.

Secondly Chanrithy Thim, the MoonOS developer from Cambodia has been improving Appshell, a framework for applications that lets developers easily create application bundles. A single file contains all the data and files needed to run an application, so all a user has to do is to launch it.

Google Summer of Code projects will be presented at this year’s FOSSASIA Summit taking place in Ho Chi Minh City (Saigon) on November 11-13, 2011.

Links:

http://google-opensource.blogspot.com/2011/08/whos-new-in-google-summer-of-code-part.html

 

FOSSASIA accepted as Google Summer of Code 2011 Mentoring Organization

FOSSASIA has been accepted as a mentor organization for Google Summer of Code 2011.

About GSOC: Google Summer of Code (GSoC) is a global program that offers student developers stipends to write code for various open source software projects. We have worked with several open source, free software, and technology-related groups to identify and fund several projects over a three month period. Since its inception in 2005, the program has brought together over 4,500 students and more than more than 4,000 mentors & co-mentors from over 85 countries worldwide, all for the love of code. Through Google Summer of Code, accepted student applicants are paired with a mentor or mentors from the participating projects, thus gaining exposure to real-world software development scenarios and the opportunity for employment in areas related to their academic pursuits. In turn, the participating projects are able to more easily identify and bring in new developers. Best of all, more source code is created and released for the use and benefit of all. (http://socghop.appspot.com/) More info also on the Google Open Source blog: http://google-opensource.blogspot.com

We are now looking for students interested to join GSOC and for mentors who would like to take on student projects.

The FOSSASIA 2011 projects focuses on Internationalization projects, GUI development to make tools available for a wider public in Asia and around the world, and on software supporting social change, e.g. for environmental protection. Please post you ideas in the wiki and on the mailing list. Starting from March 28 to April 8 students can apply on the GSOC website to become scholars for 2011.

Here are some links:

* FOSSASIA Ideas Page: http://wiki.fossasia.org/index.php/GSoC_Ideas

Please browse through ideas that people have already put up and post your own ideas.

* FOSSASIA mailing list

Join the mailing list and discuss project ideas: http://groups.google.com/group/fossasia

* FOSSASIA on Google Melange

http://www.google-melange.com/gsoc/org/show/google/gsoc2011/fossasia

* Timeline

March 28: 19:00 UTC Student application period opens.
April 8: 19:00 UTC Student application deadline.

* Events

There are events informing students about GSOC 2011 all over the world. Check out http://goo.gl/aKBQ4

One event in Asia where you can get more info about the FOSSASIA GSOC project is the Open Design Camp Saigon. 

http://opendesign.asia

Sunday, 3 April, 2010, 9.00-17.00
University of Fine Arts, Đại học Mỹ thuật Thành phố Hồ Chí Minh
5 Phan Dang Luu, Dist. Binh Thanh, Ho Chi Minh City, Vietnam
http://www.facebook.com/event.php?eid=118997938175310
Registration: http://goo.gl/zljbL

All the best and good luck to all applicants!