Student: David Julia
Mentors: Ocean90 (Dominik Schilling), Andrew Nacin, Daryl Koopersmith
Bio:
Hi everyone, I’m David Julia. I’m from Denver, Colorado (UTC/GMT -7 hours). I’m 21 years old and am currently studying Computer Science at Washington University in St. Louis. I’ve been coding for about 5 years now, longer than that if you count various random stuff that I picked up on my own- I started off being very interested in the hardware end of things and then my interests quickly did a 180 as soon as I realized that software is where the fun is!
In my free time I like to cook, and try different restaurants, work out and train Brazilian Jiujitsu/Mixed Martial Arts as much as possible- I’m a blue belt in Brazilian Jiujitsu and actively compete in Brazilian Jiujitsu and submission grappling tournaments. Also I eat a fairly strict paleo/primal diet and try to stick to the Primal laws for health. On a related note, I’m heavy into logic as the basis for my beliefs and dabble in philosophy in my spare time.
Project Description:
I will be working on implementing template versioning in WordPress by developing an interface for various VCSs in the form of a plugin as well as a custom post based “adapter plugin” that implements this interface. The interface is meant to be implemented in “adapter plugins” for any VCS desired including Git, Subversion, Mercurial, etc.
Components
- UI Integrated with Theme Editor
- Basic UI
- Automatically commits changes to a file every time a user updates the file.
- Basic revision viewer
- Advanced Mode UI
- Revision Viewer (see mockups)
- User decides when to commit, can commit changes to multiple files at once.
- Commit button, prompts for commit message etc.
- Displays revision information
- Commit-Status Display (have you committed since page was updated)
- Basic UI
- API for VCS Adapter Plugins
- VcsController Interface
- commit()
- Commit changes to all files
- commit($file_name)
- Commit the changes to the file with name $file_name
- revert()
- undo all local changes since last commit
- revertTo($revision)
- revert all files back to the state in the revision
- revertTo($revision,$file_name)
- revert the file with name $file_name back to the state it was in the given revision
- getRevisions($num_past_revisions)
- get the last X revisions, return all revisions if num_past_revisions is greater than the actual number of revisions
- getRevisions()
- return an array containing all the revisions
- commit()
- Revision Class
- Revision($commit_message, $file_name_array)
- getRevisionID()
- returns an identifier for the revision- either a revision number or a hash
- getCommitMessage()
- getRevisionContent()
- returns all of the files in the revision
- getFileFromRevision($file_name)
- returns the file with $file_name as it was in the revision
- VcsController Interface
- Default Adapter Plugin
- Database-Backed, uses custom posts
- implements VcsController interface
Project Schedule:
Week 1
- Setup dev environment
- Determine schedule of milestones/deliverables with mentor
- Explore code base
- Learn about/play with custom posts
- Research various VCSs and alter API design if needed
Week 2
- Code interfaces, Revision class
- Code a “dummy” adapter plugin to use in testing, get the UI to display the dummy values correctly
Week 3
- Begin coding Default Adapter (custom-post backed)
Week 4
- Finish coding default adapter
- First deliverable ready
weeks 5
- Add support for diffs to main plugin
week 6
- Code UI for diffs in main plugin
week 7
- Test/debug everything so far
- Midterm eval
weeks 8 & 10
- Test everything!
- Refine UI/UX
weeks 11 & 12
- Further testing and debugging
- Priority #1: Document everything extensively!
Reply