Challenge Overview
Project Overview
TopCoder and the TopCoder community have worked hard to get the platform to its currently level of maturity, but we're far from done. It's time to take the platform to the next level. TopCoder is going to start taking some steps to open up the platform API to the outside and community developers so they could incorporate it in their websites, applications or build their own applications (web, mobile or desktop).
The ultimate goal is to open up and build an "API" that is targeting all different type of audiences - Software and Studio Competitors, SRM/MM competitors, Copilots, Admins and TopCoder partners - each audience will have different interests and usages of the API, so it will be a huge project and we need to make sure that we are in the right direction from the beginning.
Competition Task Overview
For each Challange, we use TopCoder Forums (Software and Studio) for communication between competitors and challange stakeholder. When building the APIs, we found it is hard to comunicate the forums by using Node.js.
Currently Jive forums 4.2.5 is used. and TopCoder Studio/Software/Direct websites are using Forums Ejb to access and manage jive forums api, we want to develop a wrapper solution similar as informix-wrapper. So we can communicate with the forums services with various setup.
The Forums application can be found here :
https://coder.topcoder.com/internal/web_module/trunk/src/main/com/topcoder/web/forums
You may also need to look at how Direct is using the Forums EJB :
https://coder.topcoder.com/tcs/clients/cronos/applications/direct/trunk/src/java/main/com/topcoder/direct/services/view/action/project/
You can use java module similar as informix-wrapper to call the EJBs through JNDI, or other better alternatives.
Scope
For this contest, we are expecting to get a general solution, and with the following functionality implemented to suppor the register challenge process, so we can easily follow and implement more functionality.
After registering successfully, we need to let the user be able to access the forum associated with the challenge in the past system. This is done by following java code:
// From com.topcoder.dde.user.UserManagerBean // add the user to the appropriate role to view the forum Context context = TCContext.getInitial(ApplicationServer.FORUMS_HOST_URL); Forums forums = null; ForumsHome forumsHome = (ForumsHome) context.lookup(ForumsHome.EJB_REF_NAME); forums = forumsHome.create(); forums.assignRole(userId, "Software_Users_" + activeForumCategory.getId());
Method assignRole gives the user accessibility, which adds the user into a Jive Group object. Is it also persisted into database? What should we do in current API case?
// From com.topcoder.web.ejb.forums.ForumsBean public void assignRole(long userID, String groupName) { try { User user = forumFactory.getUserManager().getUser(userID); com.jivesoftware.base.Group group = forumFactory.getGroupManager().getGroup(groupName); if (group.getName().equals("Software Admins") || group.getName().toLowerCase().indexOf("admin") == -1) { group.addMember(user); } } catch (Exception e) { log.info("*** error in assigning role: " + e); } }
Virutal Machines (VMs)
VM specific information is found here: http://www.topcoder.com/wiki/display/docs/VM+Image+2.5
The VM will be created with forums setup, and the EJB services will be avaiable by JNDI - jnp://localhost:1199. this is for software forums, we did't have forums for studio, but functionality should be similar.
Upon registration as a submitter or reviewer you will need to request a VM based on the TopCoder systems image. The VM will be active through aggregation review, after which it will be terminated except for the winner's and the reviewers'. To request your image, please post in contest forum.
Before requesting your VM, you need to ensure that you have an SSH key created and in your member profile. Instructions to do so are here: http://www.topcoder.com/wiki/display/projects/Generate+SSH+Key, and instructions to connect afterwards are here: http://www.topcoder.com/wiki/display/projects/Connect+Using+SSH+Key.
Please realize that VMs are currently issued manually. We make every attempt to issue the VM as soon as it is requested, however, there may be delays of up to 12 hours depending on time of day when you request. We encourage everyone to request a VM as soon as possible to minimize any such delays.
Final Submission Guidelines
Submission Deliverables
Below is an overview of the deliverables:
- Well-formated code structure for node modules
- Deployment guide to configure and verify the application.
Final Submission
For each member, the final submission should be uploaded to the Online Review Tool.