Editing User:MeShubham99/GSoc15/proposal

From BRL-CAD

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 12: Line 12:
 
I was just recently introduced to the organization, which just grabbed my attention and willingness to get associated with it. I plan to look forward to get attached to the organization on a long term basis even after GSOC'15.
 
I was just recently introduced to the organization, which just grabbed my attention and willingness to get associated with it. I plan to look forward to get attached to the organization on a long term basis even after GSOC'15.
  
='''Project Information'''=
+
=Project Information=
  
=='''Project Vision'''==
+
===Project Vision===
  
 
Initial HTML pages started from having p tags, then came <img> and now is the era of not onty images but audios, videos and also as recent as .gifs. There have been a lot of tools and technologies developed in the past few years that work behind the scenes to render these objects. These technologies allow us to manipulate and access 2d and 3d graphics right in the browser. OGV is a potential platform to showcase 3D models and designs to a large audience not only for showcasing but also to provide inspiration to a target audience (just as sites like youtube has provided the world with videos, or behance for graphic design).
 
Initial HTML pages started from having p tags, then came <img> and now is the era of not onty images but audios, videos and also as recent as .gifs. There have been a lot of tools and technologies developed in the past few years that work behind the scenes to render these objects. These technologies allow us to manipulate and access 2d and 3d graphics right in the browser. OGV is a potential platform to showcase 3D models and designs to a large audience not only for showcasing but also to provide inspiration to a target audience (just as sites like youtube has provided the world with videos, or behance for graphic design).
  
=='''Brief Summary'''==
+
==Brief Summary==
  
 
Online Geometry Viewer started as a GSoC 2013 project by Harmanpreet Singh continued and enhanced by Inderpreet Singh as GSOC 2014 project . It's an online 3D geometry viewer that works on WebGL using three.js. It uses vanilla PHP on server side whereas jQuery and Bootstrap on the front-end. node.js forms a solid foundation for the Viewer. meteor as a framework is being used which is a great advantage for beginners.
 
Online Geometry Viewer started as a GSoC 2013 project by Harmanpreet Singh continued and enhanced by Inderpreet Singh as GSOC 2014 project . It's an online 3D geometry viewer that works on WebGL using three.js. It uses vanilla PHP on server side whereas jQuery and Bootstrap on the front-end. node.js forms a solid foundation for the Viewer. meteor as a framework is being used which is a great advantage for beginners.
  
I intend to complete the back-end features of OGV which are pending at this point making it production-ready and finally deploying the online viewer.
+
My ideology and vision towards developing the viewer is entirely based on projects like behance.net (where designers showcase their works). People comment, like, share, commend on others works, make connections seeing their work etc. Making connections is important since CAD stands out as a software for designing in numerous engineering projects.
  
=='''TODO'''==
+
==Things that I will Improve and add on: -==
  
* '''Camera position for better viewing'''
+
===Enhanced Dashboard===
 +
OBJ search - tagging models into categories
 +
omniAuth: Login through Google, Facebook, Twitter
 +
User Experience and User Interface
 +
meteor makes it so much easier to create web-apps for beginner-level developers to add packages and implementations. Easily available info about its usage is provided online.
  
Will include work on model-view, making it optimal and better for user to view models in any way possible.
+
Configure threeJS for better and easy viewing.
 
Enable movement through model and not just a zoom in zoom out movement.
 
Enable editing configurations.
 
  
* '''edit model'''
+
===Detailed Project Description===
  
rename, delete, change thumbnail options for models.
+
====Primary task====
  
* '''Basic Viewer functionality up to the mark'''
+
My primary task would be to ensure that the Online Geometry Viewer works fine. That is the primary motive of parsing the .g file and then viewing it using webGL more particularly three.js. Any bug fixes or cleaning the code will be my first and topmost priority. The web-app is a waste if it does not completes its primary taskof viewing the Geometry files.
 +
Things like easy uploading and viewing will be my primary concerns. (searching faster alternatives for uploading instead of CollectionFS (I bet there are better alternatives))
  
We will move on to enable the user to upload other 3D files as well. But first we need to ensure that there are no issues in the *.g files whatsoever.
+
====Improvements in OGV====
Some *.g files are not being uploaded. Need to check on that.
 
  
* '''Add feedback system'''
+
* '''Enhanced Dashboard'''
  
Just so that the user can send the developer feedback and report bugs directly while using the web-app.
+
The present dashboard lacks content and information/notifications, hence looks empty (not minimalist). The dashboard needs to be more open, and display everything the user needs to know about his products, uploads etc. in one shot. User experience plays a key role in designing dashboard or home page of the app and I intend to work around it primarily.
  
* '''Deploy the web-app'''
+
* '''Mailing facility - forgot password/authentication mails.'''
  
* '''oAuth module and bug-free login system'''
+
This is in reference to the file smtp.js which particularly needs a lot of work. We need a mechanism where email verification of user works properly and so does any changes related to the user profile is managed by the mailer facility. None of this is implemented in the web-app and is easily achievable through meteor and javascript. (See link) Or we can search for an alternative better framework.
  
There should be not one problem in the login process. The user should login through facebook and google IDs (even github, twitter if asked for).
+
This thing can be further extended to other information mails such as (daily archived messages (digest) about views, shares of models etc.)
Forget-Password is not working.
 
  
* '''Enable model tagging'''
+
* '''Auth Module'''
  
Try to join uploaded and shared model with tags for searching purposes. The way youtube enables the user to add tags to their videos.
+
meteor provides omniAuth features to be added to a meteor-app. Other features like providing user roles (user roles), Accounts API for handling accounts, secure remote password control support, oAuth using facebook and google are easy to implement using meteor (link provided).
See these:
 
meteor-bootstrap-tagsinput
 
meteor-tags
 
  
* '''Search models and users'''
+
* '''Object/Design/Model Search'''
  
Enable model searching through name, tag-name, date-time, uploader.
+
When the web-app starts attracting an audience, and when people step forward to showcase their work, then every web-app needs a cutting edge search utility
  
* '''Users can follow other users'''
+
* '''Categorizing (tagging) models/objects'''
  
Users can follow other users and can get notified of their work/activity.
+
Categorizing models and designs into well-defined categories makes it easier for viewers to find what they are looking for.
  
* '''enhanced dashboard and profile pages for user: backend'''
+
* '''Adding prefix to obj files'''
  
Dashboard/landing page after login: Will be more like a notification center for the user. Activity of the user he/she follows, search options etc.
+
Due to potential conflicts that arise due to same named obj file uploads. Adding prefix is one solution to the problem. The prefix can be a timestamp of last chenge made to the file.
Profile page: I thought it must look like the one like behance profiles. Details of user on the left and his uploads/models on the right.
 
  
=='''Milestones'''==
+
* '''Loader indication (UI changes)'''
  
'''Community Bonding Period'''
+
While entity loads, some indication / status about "loading" should appear. If entity loaded successfully, a confirmation message should be given to user and if entity already loaded, a user friendly message should be displayed otherwise if error occurred appropriate message should be given with instruction to take further steps.
* Get user requirements (already started working on it)
+
Configuration form
* Understand code-base and fix errors and bugs.
+
 
* initial setup of a working environment (finalizing interfaces etc.)
+
* '''Configuration web form'''
* discussions about change in workflow
+
Editing individual files and uploading again can be tiring job especially when the changes are too small. I intend to provide a configuration web form that takes as input the changes that can be made in the file, as variables being set for that particular file. When the changes are filled in the form, the web-app changes the file according to the user input, and updates the obj file.
* Learn about Meteor and three.js
+
 
 +
* '''User Experience and User Interface (GUI)'''
 +
 
 +
There is always a lot of scope for good design and user-friendly interface. In order to keep pace with fast developing web-designing world, every web-app needs cutting edge graphic and creatives. Having a designing background, this will be the area of work where I would offer great user experience through minimal and pleasant to the eyes creatives, which are easy to use by the user at the same time.
 +
Since the website is about visualizing designs, a lot of potential work can be done to improve UI.
 +
The GUI lacks content and looks too empty. The empty spaces need to be filled with notifications etc. which would be implemented/added after making the app more social and open to audience.
 +
 
 +
==Milestones==
 +
 
 +
Community Bonding Period
 +
Get user requirements (already started working on it)
 +
Understand code-base and fix errors and bugs.
 +
initial setup of a working environment (finalizing interfaces etc.)
 +
discussions about change in workflow
 +
Since I would be working majorly on increasing user experience, milestones and objectives are vulnerable to changes (for the better).
  
 
* '''WEEK 1 (31 May)'''
 
* '''WEEK 1 (31 May)'''
Make Login System up-to-date. With working email verification system, forgot password mails and omniAuth.
+
Checking for proper uploading of obj files and proper viewing of the files. Finalize code and repair bugs.
  
 
* '''WEEK 2 (7 June)'''
 
* '''WEEK 2 (7 June)'''
Make changes to the model-viewer page and making it editable by user. Requires work related to three.js
+
omniAuth added in web-app. Signing in with facebook, google and twitter enabled.
  
 
* '''WEEK 3 (14 June)'''
 
* '''WEEK 3 (14 June)'''
Complete model viewer page and check for bugs and issues regarding error in uploading of *.g files.
+
Setting up mailer for email verification in case of logging in with native OGV login. Finalizing the registration and logging in process.
  
 
* '''WEEK 4 (21 June)'''
 
* '''WEEK 4 (21 June)'''
Edit model functionality like  rename, delete, change thumbnail options for models. Requires changes to model_meta files.
+
Categorizing object uploads, enabling tagging of objects for better search results and tracking of Geometry files.
  
 
* '''WEEK 5 (28 June)'''
 
* '''WEEK 5 (28 June)'''
Finalizing with the model uploading, editing and viewing. Add feedback system in OGV web-app.
+
Start with more socializing features of the web-app. Enable features like liking, sharing, viewing, track view history (done through tags of objects), suggesting appropriate objects to view by a user (again using tags).
  
 
* '''WEEK 6 (5 July)'''
 
* '''WEEK 6 (5 July)'''
Start work on deployment.
+
Finalize logging in process, authentication of user, other back-end developments till now. Develop enough socializing features for a mid-sem evaluation. Some Front-end enhancements will be seen (but few).
  
 
* '''MID TERM EVALUATION (tentative)'''
 
* '''MID TERM EVALUATION (tentative)'''
  
 
* '''WEEK 7 (12 July)'''
 
* '''WEEK 7 (12 July)'''
Finish deployment work.
+
Finalize the socializing features. Provide the mentors a list of features that have been added. Ask for review from mentors about suggestions for any other add-ons.
  
 
* '''WEEK 8 (19th July)'''
 
* '''WEEK 8 (19th July)'''
Enable model tagging while uploading models.
+
Implement adding of prefixes to obj models. Write tests
  
 
* '''WEEK 9 (26th July)'''
 
* '''WEEK 9 (26th July)'''
Enable searching of models, and categorizing models into tags.
+
Working on configuration form.
  
 
* '''WEEK 10 (2nd August)'''
 
* '''WEEK 10 (2nd August)'''
Work on dashboard and other pages where user information needs to be integrated with front-end elements.
+
Work on Loader indication and other visual notifications wherever needed and asked for. Work on a mailer digest for notifications and other information, that will appear on user dashboard.
  
 
* '''WEEK 11 (9th August)'''
 
* '''WEEK 11 (9th August)'''
Start writing documentation, and look for ways in which social features can be added i.e. followers/following feature.
+
Work on GUI and user friendly interface. (based on high level critique)
  
 
* '''WEEK 12 (16th August)'''
 
* '''WEEK 12 (16th August)'''
Work on making social app. Add issues/enhancements to github repository (whatever noticed). Try resolving issues.
+
Write appropriate Tests for future debugging. If time allows I would like to implement Zoom-in and Zoom-out options while viewing obj file.
  
 
* '''WEEK 13 (23th August)'''
 
* '''WEEK 13 (23th August)'''
Code testing, adding comments, and cleaning code.
+
Review code and ask for review. Finalize GUI.
  
 
* '''BEFORE FINAL EVALUATION'''
 
* '''BEFORE FINAL EVALUATION'''
Production ready OGV, ready for release. Github repository up-to-date with persisting issues and enhancements for further development.
+
Back-end Enhancements and improved creatives (GUI). Bug free, clean code and ideas for future development will be delivered.
 +
 
 +
 +
 
 +
=My Preparation=
 +
 
 +
I have been looking into the code (pretty straightforward), looking into its working, and thinking about enhancements to be made.
 +
I also try to communicate as much as possible in the community on mailing lists and IRC, in the time I had. Contacted inderpreet singh (GSOC'14) few times who worked on the same project.
 +
I will be striving hard to submit 1 or 2 patches after the proposal, to show my coding style and abilities.
 +
Motivated enough to work all summer along.
 +
Look for submitted patches within one week of the proposal submission.
 +
This web development project does not require any vast knowledge about previous code-base which is advantage.
  
='''My Preparation'''=
 
  
* I have been looking into the code (pretty straightforward), looking into its working, and thinking about enhancements to be made.
+
=Why BRL-CAD?=
* I also try to communicate as much as possible in the community on mailing lists and IRC, in the time I had. Contacted inderpreet singh (GSOC'14) few times who worked on the same project.
 
* I will be striving hard to submit 1 or 2 patches after the proposal, to show my coding style and abilities.
 
* Motivated enough to work all summer along.
 
* Look for submitted patches within one week of the proposal submission.
 
* This web development project does not require any vast knowledge about previous code-base which is advantage.
 
  
='''Why BRL-CAD?'''=
+
Particularly because of my love for visualization, graphics and design, I have always had a soft-spot for organization and people working in such domains. 
  
Particularly because of my love for visualization, graphics and design, I have always had a soft-spot for organization and people working in such domains.
+
  
='''Why Me?'''=
+
=Why Me?=
  
* I am eager to learn from brlcad as much as I can.
+
I am eager to learn from brlcad as much as I can.
* I am flexible and easy to work with.
+
I am flexible and easy to work with.
* I try my best to get work done, in the most efficient way as possible.
+
I try my best to get work done, in the most efficient way as possible.
* I look forward to work with brlcad, even after GSOC, and want to use this as an opportunity to make first contact with the core development team of the organization.
+
I look forward to work with brlcad, even after GSOC, and want to use this as an opportunity to make first contact with the core development team of the organization.
* I have tried communicating as much as I can in mailing lists and IRC, in as much time I had.
+
I have tried communicating as much as I can in mailing lists and IRC, in as much time I had.
* I have no other deadlines and am not occupied with other work so I can devote 100% of my time and my laptop to my GSOC project.
+
I have no other deadlines and am not occupied with other work so I can devote 100% of my time and my laptop to my GSOC project.
 
Thanks
 
Thanks

Please note that all contributions to BRL-CAD may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see BRL-CAD:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)