| |||||||||||||||||||||||||||||||||||
|
[edit] Project OverviewThe Magellan project is an initiative to create a next-generation collaborative enterprise application development tool suite for the Linux platform. The purpose of this initiative is not to simply create another application development environment for Linux, nor is it simply about collecting, grouping, and extending existing tools. Rather, the purpose of this initiative is to understand better how enterprise application developers want to create applications, to greatly simplify the process of creating applications for the enterprise, and to better support new software development models and practices in a new type of tool that is designed with these models and practices in mind. Over the industry's history, software development has evolved through several phases. The mechanics and the business of software development are much different today than they were even five years ago, and they require new thinking and new tools to better support the creation of applications.
The Magellan project aims to address these needs by simplifying the creation of applications
[edit] About the Application Development ProcessIf we study the creation and use of applications by an enterprise organization, we can see that the application development process is comprised of more than what we typically think of as the application development process.
[edit] The Standard ProcessThe standard process is one that might be followed by a lone software engineer creating an application for personal use. The process is basically the following:
[edit] Applying the Standard Process to EnterprisesConsider the application development process as applied to enterprise applications. Below are outlined some questions that are not addressed by the standard process:
[edit] Applying the Standard Process to Open SourceApplying the application development process to open source also brings up some new questions:
[edit] Mixing Open Source and the EnterpriseMixing open source and the enterprise brings new challenges to application development:
[edit] GoalThe goals of the Magellan project are to deliver an application development suite for Linux that:
[edit] Guiding Principles and Qualifications
[edit] Single ApplicationAll of the tools in the suite should be fully usable and integrated into a single development tool application. This provides developers with one single place to do all of their development work. Developers don't have to learn how to use multiple tools in multiple applications.
[edit] Target PlatformThe target platform is Linux plus one of:
[edit] No Price BarrierUsers should be able to utilize at least a basic version of the complete tool suite for no cost. The reason is to not make price be a barrier to someone trying application development to Linux.
[edit] Multiple Language SupportThe tool suite needs to provide support for more than one or two programming languages. Required language support includes Java, C, C++, PHP, and Perl. Other strongly recommended languages include C#, Python, and Ruby.
[edit] Information ProvisionDevelopers need to be able to search for and obtain information on SDK and API documentation, sample code, system interfaces, programming practices, and other similar information. They need to be able to do this within the tool, not just by using a web browser.
[edit] Alternative Information SourcesUsers need to be able to configure the tool to search certain alternative information sources besides just novell.com sites.
[edit] Assistance with Proper Development PracticeFeatures within the tool should help developers comply with proper development practice and make it easy to do so, while allowing them the flexibility to deviate at their choice. This principle applies to things like open standards compliance as well as common best practices (how to properly create a listen socket, how to create a daemon application, how to create a CIM provider or a YaST module) and might be implemented via wizards or other similar tools.
[edit] Simplify Use of Open Source ComponentsBasic tools used in the application development process like GNU Autotools, make, RPM, valgrind, gdb, Apache, MySQL, Tomcat, and others exist but are not integrated. Many of them (like autotools) also require extensive knowledge of the tool in order to use it. The tool suite should incorporate these tools and simplify the use of these tools so developers can focus on creating solutions.
[edit] Leverages But Doesn't Require the InternetThe tool suite's information and collaboration features will be network-centric and should be. However, these components need to be designed and implemented in such a way that a live internet connection is not required to use the tool. For example, developers should be able to search online documentation when connected, but should still be able to search documentation even when not connected.
[edit] Full Development Environment ManagementThe tool needs to provide full control over a developer's environment - knowledge of libraries installed and where to get new ones, assistance in leveraging libraries by tying in to available information, etc.
[edit] Targeted Build CapabilitiesDevelopers should be able to build their application targeted to specific platforms. They should be able to set this up from within their tool and obtain notification of build results.
[edit] Build DistributionDevelopers should be able to set up channels for automatic distribution of builds if desired, through services such as YaST Online Update or ZENWorks Linux Management (Red Carpet).
[edit] Virtualized EnvironmentsThe tool should include capabilities to easily set up virtualized environments for testing applications on different virtual platforms. Virtualization should make it easy for developers to test applications against other operating systems that are different than the one they are using; in addition, it should help them test applications against specific environments (like LAMP).
[edit] Collaboration ToolsThe tool should facilitate collaborative development by tying into select issue tracking tools (i.e. Bugzilla), source code repositories (i.e. Subversion), and notification mechanisms (i.e. mailing lists). The tool should also provide a mechanism to implement code reviews and pair programming when the participants are not local to each other. Perhaps the tool should also enlist translation services to help users collaborate who do not speak the same language.
[edit] Provided Collaboration ServicesUsers of the tool shall be provided with the option of using collaboration services that are provided by Novell; in other words, users don't have to set up their own CVS server to make use of CVS, since they can use a CVS server that Novell provides.
[edit] Required ToolsThe set of required tools includes:
[edit] NotificationsDevelopers should be able to inform the tool of events that they care about and be notified of such events. For example, a user may want to be notified in the tool when a build completes successfully, or when a change has been committed to the source code repository.
[edit] Selective Use of ServicesDevelopers should have flexibility in using provided services. For example, with respect to issue tracking, a developer should have the following choices:
In any case, the effects of this decision should be minimized. As much as possible, other features should not depend upon a specific choice.
[edit] Shared Tool PropertiesDevelopers should be able to share not only the source of a project but the project properties itself to allow other participants to obtain the same setup and environment. Developers should also be able to share their tool properties and preferences in a non-local store, and the tool should automatically reconfigure itself appropriately when it is connected to the shared properties and preferences.
|
| ||||||||||||||||||||||||||||||||||
© 2009 Novell, Inc. All Rights Reserved.