-
Notifications
You must be signed in to change notification settings - Fork 672
Developer Guide
Here you’ll find a collection of resources to help you contribute to ThinkUp.
The ThinkUp project eagerly welcomes new contributors from all communities, even if you don’t think of yourself as a programmer. (Yet!)
By helping ThinkUp, you can help government run better. While anybody can use ThinkUp, the very first customer for the platform is the White House, which will use responses collected on the platform to make better policy decisions.
Get started improving the program by following a few simple steps:
- Create a (free) GitHub account or sign in with your existing account
- Create your own copy of ThinkUp by clicking “Source” and then the “Fork” button
- Then, in your copy of the code, browse to the file you want to modify, and click “Edit”
- Make some changes! Describe what you’ve done in the “Commit Message” box, and then click on the “Commit” button
- Go up to the top of the page and click the “Pull Request” button — this tells our project leader Gina that you’ve helped make ThinkUp better!
Congratulations! You’re part of the ThinkUp community, and your contribution will be immortalized in the history of improvements and changes to the application.
Whether you’re a beginner programmer or experienced veteran, here’s a collection of resources to get you started contributing to ThinkUp.
- Familiarize Yourself with ThinkUp’s Objects and Interfaces — Browse our PHPDocumentor-based, auto-generated source code docs.
- Developer Guide: ThinkUp's Model-View-Controller Implementation — See how ThinkUp implements the MVC design pattern.
- Installation: Dreamhost – How to install ThinkUp on Dreamhost. This applies to many common web hosting setups, even if you’re not specifically on Dreamhost.
- Installation: Windows – Notes on installing ThinkUp on Windows
- Installation: Mac OS X – How to install ThinkUp on a Mac
- Installation: Local Computer – Notes on how to run ThinkUp on a local computer behind a firewall that’s accessible on the public web.
- Working with ThinkUp and Git — There are lots of good tips here for getting started.
ThinkUp is under rapid development right now, so files change fast. If you used
git clone git://github.com/ginatrapani/ThinkUp.git
to get ThinkUp files initially, use
git pull origin master
to get updates.
If there’s been a database migration since the last time you built your database (check the db_migrations folder), run the SQL script in your database to update it.
- Developer Guide: Get the Source Code from GitHub and Keep It Updated — Here’s how to install the ThinkUp app for use and development.
- Developer Guide: Setting Up Eclipse PDT — Not sure what IDE to use? Here’s how to set up Eclipse to work with ThinkUp. It’s free and cross-platform.
- Developer Guide: Git Tips
- Developer Guide: File Naming Conventions — Know where to save and how to name your files.
- Developer Guide: How to Change the Database Structure — Modify the data structure.
- Developer Guide: Data Access Objects (DAO's) – Design your data access objects.
- Developer Guide: How to Write Great Unit Tests — Test-driven ThinkUp development best practices.
- Code Style Guide — Make your PHP, Smarty, CSS, JavaScript, and HTML look good.
- Plugins: Developer Guide — Get started with plugins.
- Design Patterns — Frontend design/UI patterns to follow.
- Developer Guide: Pull Request Checklist — All done? Run through this checklist before you issue a pull request.
There is much to do. Here’s a list of ThinkUp projects and tasks:
- ThinkUp To-do List — We’ve got a long to-do list, and they’re kept in GitHub’s Issue tracker. Found a bug? Post it to the mailing list, then, once verified/discussed, added to the project Issues tracker.
- ThinkUp Documentation — Right here in this wiki, we need your keeping pages up-to-date, gardened, and formatted well. Be bold but not reckless.
- ThinkUp Roadmap — This page describes planned new features, and needed upgrades.
- Google Summer of Code Ideas Page — We’re a Google Summer of Code project! That means we’ll be getting help from some of the best and brightest new coders on the scene to help with projects on the Google Summer of Code Ideas Page.