Community Development Best Practices
A place for documentation, recommendations, ideas, tips & tricks, etc. for individuals who wish to contribute towards LDS Community Projects. Includes references to detailed descriptions of each section.
|Community Development Best Practices edit|
Community development projects may involve different application frameworks, technologies, and even different versions of technologies. This page and the group of pages found in the box above and to the right cover the necessary information for contributing to a community project. However, each project may have additional project setup and development instructions as well.
- Development Resources - One of the best places to start to learn about all of the different resources available.
- To start contributing the first thing that needs to be done is to follow the instructions and the steps laid out in the Requirements for Participation.
- Check to see if there are any Current Needs on any existing project or you can submit a new idea using the Development Project Guidelines.
The types of applications that can be done by the community is virtually limitless. Great ideas always seem to pop up from internal employees and community members alike. Though there are many different types of frameworks that can be used to create an application we feel that they will all share one thing in common. Each will be used to connect people to others, stored data, media files and will require some network communication. Below are the different application frameworks that we see people could contribute to. There seems to be so many useful application types that we can all contribute to.
- Web applications
- The term Web application or web-app can loosely be described as any development project intended to run on a web server and viewed by a user with a web browser. There are several projects in the works that would be deemed a web-app, from Local Unit Directories, Calendars, Web Sites, Home Teaching / Visiting Teaching, and more.
- Desktop applications
- The term desktop application can loosely be described as any application that must be installed on a local computer (laptop or desktop). Desktop application generally have unrestrained access to the local resources like the file system and local devices (printer, scanner, video camera, etc.). A good example of a desktop application is the Member and Leader Services application that is used by unit leaders at the Ward and Stake level (MLS is not currently a community project, sorry).
- Mobile device applications
- Mobile phone usage has exploded in the last few years. Mobile devices are becoming more capable and viable as a means of data access and manipulation. Many people are familiar with iPhone, BlackBerry, Android, Mobile Windows, and other devices. These devices can run applications, view the web, download calendar events, and more. Mormon Channel is an example of a community project that was specifically written for the iPhone device, and is now being ported to several other mobile platforms.
Tips & tricks
- Use an IDE (Interactive Development Environment) that will make your development process easier. Eclipse is a standard tool used at the Church for Java Development, but use what you are familiar with.
- Study the documentation carefully. The documentation is provided to try and make your life easier, and to limit the time internal employees spend answering questions.
- Edit the documentation. Did you notice this is a Wiki? You can add content, fix typos and formatting errors, or just add your comments.
- Submit your project ideas. We would love to hear them.
- Keep breath mints at your desk. You may need some yourself or you may just want to share.
There are many ways to contribute to Community Projects and it is not required that an individual know all of the technologies listed below. Nor do we require that projects be written in a specific language. We try to be as open to new technologies as possible. This section is provided as a list of all the technologies that are currently in use for Community Projects.
- CSS - is a style sheet language used to describe the presentation (that is, the look and formatting) of a document written in a markup language. Its most common application is to style web pages written in HTML and XHTML
- XHTML -The Extensible Hypertext Markup Language, or XHTML, is a markup language that has the same depth of expression as HTML, but also conforms to XML syntax.
- Java - An object oriented programming language expressly designed for use in the distributed environment of the Internet. Used on the server to service browser request for generated HTML pages, data manipulation through services and/or a database. The technologies listed below are Java API's that are used within the Web Application.
- Apache CXF - An open source services framework that assists in developing frontend interfaces. We specifically use CXF for its abilities in SOAP web services and RESTful web Services.
- Hibernate / JPA - An open source Java persistence service that simplifies getting and setting information into a database.
- Spring Framework - An open source Java Framework that is effectively used to organize our server side objects and communication. Here is a really good introduction to Spring.
There are many different architecture possibilities in the technology world today. This section is provided as a list of architectures that are currently in use for Community Projects. Similar to the technologies list above we do not require that a project use this architecture.
The Local Unit Calendar application is an an example of a project that uses the Java Stack Architecture which is provided and maintained by an internal group of developers. We use the majority of the standard Stack architecture on the Calendar project with the addition of JAX-RS or RESTful web services in the Service Layer.
- Local Data, meaning data that is owned by the project, is stored in a project specific database schema and accessed using the services layer and Hibernate queries.
- Member, Leader and Organization information is accessed through Community Services.
- The Spring Framework is used to wire all of the server objects together.